Version Notes
Initial Stable Version
Download this release
Release Info
| Developer | Magento Core Team |
| Extension | etracker_connect |
| Version | 1.0.0 |
| Comparing to | |
| See all releases | |
Version 1.0.0
- app/code/community/Etracker/Etracker/Block/Catalog/Product/View/Media.php +26 -0
- app/code/community/Etracker/Etracker/Block/Checkout/Cart.php +26 -0
- app/code/community/Etracker/Etracker/Block/Checkout/Onepage.php +26 -0
- app/code/community/Etracker/Etracker/Block/Track.php +695 -0
- app/code/community/Etracker/Etracker/Helper/Data.php +209 -0
- app/code/community/Etracker/Etracker/Model/Admin/System/Config/Source/InclTax.php +25 -0
- app/code/community/Etracker/Etracker/Model/Observer.php +182 -0
- app/code/community/Etracker/Etracker/etc/adminhtml.xml +44 -0
- app/code/community/Etracker/Etracker/etc/config.xml +169 -0
- app/code/community/Etracker/Etracker/etc/system.xml +153 -0
- app/design/frontend/base/default/layout/etracker.xml +56 -0
- app/design/frontend/base/default/template/etracker/checkout/cart.phtml +27 -0
- app/design/frontend/base/default/template/etracker/checkout/et_onepage.phtml +98 -0
- app/design/frontend/base/default/template/etracker/ppr.phtml +78 -0
- app/design/frontend/base/default/template/etracker/product_media.phtml +34 -0
- app/design/frontend/base/default/template/etracker/track.phtml +169 -0
- app/etc/modules/Etracker_Etracker.xml +9 -0
- app/locale/de_DE/Etracker_Etracker.csv +29 -0
- app/locale/en_US/Etracker_Etracker.csv +2 -0
- package.xml +38 -0
app/code/community/Etracker/Etracker/Block/Catalog/Product/View/Media.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
class Etracker_Etracker_Block_Catalog_Product_View_Media extends Mage_Catalog_Block_Product_View_Media {
|
| 16 |
+
|
| 17 |
+
/**
|
| 18 |
+
* To support version < 1.4.2 we add child block html on this way as we do not need to overwrite any template file.
|
| 19 |
+
* (This is a better solution and causes less problems together with other modules).
|
| 20 |
+
* @return string
|
| 21 |
+
*/
|
| 22 |
+
protected function _toHtml() {
|
| 23 |
+
$html = parent::_toHtml();
|
| 24 |
+
return Etracker_Etracker_Helper_Data::getDynamicChildBlockHtml($this, $html, 'etracker_img');
|
| 25 |
+
}
|
| 26 |
+
}
|
app/code/community/Etracker/Etracker/Block/Checkout/Cart.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
class Etracker_Etracker_Block_Checkout_Cart extends Mage_Checkout_Block_Cart {
|
| 16 |
+
|
| 17 |
+
/**
|
| 18 |
+
* To support version < 1.4.2 we add child block html on this way as we do not need to overwrite any template file.
|
| 19 |
+
* (This is a better solution and causes less problems together with other modules).
|
| 20 |
+
* @return string
|
| 21 |
+
*/
|
| 22 |
+
protected function _toHtml() {
|
| 23 |
+
$html = parent::_toHtml();
|
| 24 |
+
return Etracker_Etracker_Helper_Data::getDynamicChildBlockHtml($this, $html, 'etracker_cart');
|
| 25 |
+
}
|
| 26 |
+
}
|
app/code/community/Etracker/Etracker/Block/Checkout/Onepage.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
class Etracker_Etracker_Block_Checkout_Onepage extends Mage_Checkout_Block_Onepage {
|
| 16 |
+
|
| 17 |
+
/**
|
| 18 |
+
* To support version < 1.4.2 we add child block html on this way as we do not need to overwrite any template file.
|
| 19 |
+
* (This is a better solution and causes less problems together with other modules).
|
| 20 |
+
* @return string
|
| 21 |
+
*/
|
| 22 |
+
protected function _toHtml() {
|
| 23 |
+
$html = parent::_toHtml();
|
| 24 |
+
return Etracker_Etracker_Helper_Data::getDynamicChildBlockHtml($this, $html, 'etracker_onepage');
|
| 25 |
+
}
|
| 26 |
+
}
|
app/code/community/Etracker/Etracker/Block/Track.php
ADDED
|
@@ -0,0 +1,695 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
class Etracker_Etracker_Block_Track extends Mage_Core_Block_Template
|
| 16 |
+
{
|
| 17 |
+
/* Local cache */
|
| 18 |
+
private $_cacheOrders = null;
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
/**
|
| 22 |
+
* Get a specific page name (may be customized via layout)
|
| 23 |
+
*
|
| 24 |
+
* @return string|null
|
| 25 |
+
*/
|
| 26 |
+
public function getPageName() {
|
| 27 |
+
$value = '';
|
| 28 |
+
$route = $this->getRequest()->getRouteName();
|
| 29 |
+
/* Try CMS */
|
| 30 |
+
if ($route == 'cms') {
|
| 31 |
+
$value = Mage::getSingleton('cms/page')->getTitle();
|
| 32 |
+
if (empty($value)) {
|
| 33 |
+
$value = Mage::getSingleton('cms/page')->getIdentifier();
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
/* Try get from product */
|
| 37 |
+
/** @var $product Mage_Catalog_Model_Product */
|
| 38 |
+
if ($product = Mage::registry('current_product')) {
|
| 39 |
+
$value = $product->getName().'-'.$product->getSku();
|
| 40 |
+
}
|
| 41 |
+
/* Try get from category */
|
| 42 |
+
/** @var $cat Mage_Catalog_Model_Category */
|
| 43 |
+
if (Mage::registry('current_category') && !$product) {
|
| 44 |
+
$value = Mage::registry('current_category')->getName();
|
| 45 |
+
}
|
| 46 |
+
/* Try get from head title */
|
| 47 |
+
if (empty($value)) {
|
| 48 |
+
$headBlock = $this->getLayout()->getBlock('head');
|
| 49 |
+
if ($headBlock) $value = $headBlock->getTitle();
|
| 50 |
+
}
|
| 51 |
+
if (empty($value)) {
|
| 52 |
+
Etracker_Etracker_Helper_Data::log("Unable getting page name for req {$this->getRequest()->getRequestUri()}", Zend_Log::WARN);
|
| 53 |
+
}
|
| 54 |
+
/* Trim 'Searchresult' page title to the first word only */
|
| 55 |
+
if (strpos($route, 'search') !== false) {
|
| 56 |
+
$parts = explode(' ', $value);
|
| 57 |
+
if (count($parts)) $value = $parts[0];
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
if ($prefix = Mage::getStoreConfig('design/head/title_prefix')) {
|
| 61 |
+
if (strncmp($prefix, $value, strlen($prefix))===0) $value = substr($value, strlen($prefix)+1);
|
| 62 |
+
}
|
| 63 |
+
if ($suffix = Mage::getStoreConfig('design/head/title_suffix')) {
|
| 64 |
+
if (preg_match('/.*'.$suffix.'/', $value)) $value = substr($value, 0, strlen($value) - (strlen($suffix)+1));
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
if ($this->isHomePage()) $value = '__INDEX__'.$value;
|
| 68 |
+
return $value;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
/**
|
| 72 |
+
* @param $eventName string The name of the event
|
| 73 |
+
* @param $putToRegistryAfter In case the flag should still be available even after it has been removed from session,
|
| 74 |
+
* pass true.
|
| 75 |
+
* @return bool|mixed The registered value, false if nothing found
|
| 76 |
+
*/
|
| 77 |
+
public function isEventRegistered($eventName, $putToRegistryAfter=false) {
|
| 78 |
+
if ($value = Mage::registry($eventName)) {
|
| 79 |
+
return $value;
|
| 80 |
+
}
|
| 81 |
+
$session = Mage::getSingleton('customer/session');
|
| 82 |
+
if ($value = $session->getData($eventName)) {
|
| 83 |
+
$session->unsetData($eventName);
|
| 84 |
+
if ($putToRegistryAfter) Mage::register($eventName, $value);
|
| 85 |
+
return $value;
|
| 86 |
+
}
|
| 87 |
+
return false;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
/**
|
| 91 |
+
* @return string
|
| 92 |
+
*/
|
| 93 |
+
public function getAreas() {
|
| 94 |
+
$hlp = Mage::helper('etracker');
|
| 95 |
+
$value = Mage::getStoreConfig('etracker/standard/storeviewcode') ? ucfirst($hlp->__(Mage::app()->getStore()->getCode())) : '';
|
| 96 |
+
$value .= strlen($value) ? '/' : '';
|
| 97 |
+
/* In case of product navigation... */
|
| 98 |
+
$product = Mage::registry('current_product');
|
| 99 |
+
if ($product) {
|
| 100 |
+
$value .= $hlp->__('Products').'/';
|
| 101 |
+
}
|
| 102 |
+
/** @var $cat Mage_Catalog_Model_Category */
|
| 103 |
+
/** @var $category Mage_Catalog_Model_Category */
|
| 104 |
+
if ($cat = Mage::registry('current_category')) {
|
| 105 |
+
if (!$product) {
|
| 106 |
+
$value .= $hlp->__('Categories').'/';
|
| 107 |
+
}
|
| 108 |
+
$catPath = $this->getCategoryPath($cat);
|
| 109 |
+
$value .= $catPath;
|
| 110 |
+
Etracker_Etracker_Helper_Data::setToSession(
|
| 111 |
+
Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CAT_VIEW, 'path', $catPath);
|
| 112 |
+
if ($product) {
|
| 113 |
+
Etracker_Etracker_Helper_Data::setToSession(
|
| 114 |
+
Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CAT_PROD_VIEW, $product->getId(), $catPath);
|
| 115 |
+
} else
|
| 116 |
+
Etracker_Etracker_Helper_Data::removeFromSession(Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CAT_PROD_VIEW);
|
| 117 |
+
return $value;
|
| 118 |
+
}
|
| 119 |
+
/* In all other cases... */
|
| 120 |
+
$module = $this->getRequest()->getModuleName();
|
| 121 |
+
if ($module != 'catalog') {
|
| 122 |
+
$value .= $hlp->__(ucfirst($module));
|
| 123 |
+
$controllerName = $this->getRequest()->getControllerName();
|
| 124 |
+
if ($controllerName && $controllerName != 'index' && $controllerName != 'page') {
|
| 125 |
+
$value .= '/'.ucfirst($hlp->__($controllerName));
|
| 126 |
+
}
|
| 127 |
+
}
|
| 128 |
+
return $value;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
/**
|
| 132 |
+
* Returns the path to the given category (incl.).
|
| 133 |
+
* @param $category Mage_Catalog_Model_Category
|
| 134 |
+
* @return string
|
| 135 |
+
*/
|
| 136 |
+
private function getCategoryPath($category) {
|
| 137 |
+
$cats = $category->getParentCategories();
|
| 138 |
+
$catPath = '';
|
| 139 |
+
$i=1; foreach($cats as $category) {
|
| 140 |
+
$catPath .= $category->getName();
|
| 141 |
+
$catPath .= ($i<count($cats)) ? '/' :'';
|
| 142 |
+
$i++;
|
| 143 |
+
}
|
| 144 |
+
return $catPath;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
/**
|
| 148 |
+
* Checks whether current request returns home page. <br/>
|
| 149 |
+
* <b>Note:</b> As this cannot be identified safely, we simply check for 'home' CMS-Page additionally.
|
| 150 |
+
* @return bool
|
| 151 |
+
*/
|
| 152 |
+
public function isHomePage() {
|
| 153 |
+
$isHome = $this->getUrl('') == $this->getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true));
|
| 154 |
+
if (!$isHome) {
|
| 155 |
+
$routeName = Mage::app()->getRequest()->getRouteName();
|
| 156 |
+
$identifier = Mage::getSingleton('cms/page')->getIdentifier();
|
| 157 |
+
$isHome = ($routeName == 'cms' && $identifier == 'home');
|
| 158 |
+
}
|
| 159 |
+
return $isHome;
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
/**
|
| 163 |
+
* @return string the configured Security-Code
|
| 164 |
+
*/
|
| 165 |
+
public function getSecurityCode() {
|
| 166 |
+
$code = Mage::helper('etracker')->getSecurityCode();
|
| 167 |
+
if (empty($code)) {
|
| 168 |
+
Etracker_Etracker_Helper_Data::log('No security code configured!', Zend_Log::ERR);
|
| 169 |
+
}
|
| 170 |
+
return $code;
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
/**
|
| 174 |
+
* @return string The configured CC-Key (may be null/empty)
|
| 175 |
+
*/
|
| 176 |
+
public function getCcKey() {
|
| 177 |
+
$code = Mage::helper('etracker')->getCcKey();
|
| 178 |
+
return $code;
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
/**
|
| 182 |
+
* @return bool true if tracking code is to be included, false otherwise
|
| 183 |
+
*/
|
| 184 |
+
public function isTrackingCodeToBeIncluded() {
|
| 185 |
+
$isStandardActive = (bool) Mage::getStoreConfig('etracker/standard/active');
|
| 186 |
+
return $isStandardActive && $this->isEnabled();
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
/**
|
| 190 |
+
* Returns true in case the tracking code can be delivered, false otherwise.
|
| 191 |
+
* @return bool
|
| 192 |
+
*/
|
| 193 |
+
public function isEnabled() {
|
| 194 |
+
$code = $this->getSecurityCode();
|
| 195 |
+
return !empty($code);
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
/**
|
| 199 |
+
* @return bool true if async (and standard) is activated, false otherwise
|
| 200 |
+
*/
|
| 201 |
+
public function isAsyncActive() {
|
| 202 |
+
$isAsyncActive = (bool) Mage::getStoreConfig('etracker/standard/async');
|
| 203 |
+
return $isAsyncActive && $this->isEnabled();
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
/**
|
| 207 |
+
* @return bool True if ecommerce (PPR) part is active
|
| 208 |
+
*/
|
| 209 |
+
public function isPprActive() {
|
| 210 |
+
$isPprActive = (bool) Mage::getStoreConfig('etracker/ecommerce/active');
|
| 211 |
+
return $isPprActive && $this->isEnabled();
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
/**
|
| 215 |
+
* @return bool True if debug is active
|
| 216 |
+
*/
|
| 217 |
+
public function isPprDebugActive() {
|
| 218 |
+
$isPprActive = (bool) Mage::getStoreConfig('etracker/ecommerce/debug');
|
| 219 |
+
return $isPprActive && $this->isPprActive();
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
/**
|
| 223 |
+
* @return string Contains a ';'-separated string of the
|
| 224 |
+
*/
|
| 225 |
+
protected function _getOrdersBasketTrackingCode()
|
| 226 |
+
{
|
| 227 |
+
$isTaxInclRequired = Mage::getStoreConfig('etracker/general/tax');
|
| 228 |
+
$orders = $this->getOrders();
|
| 229 |
+
if (is_null($orders)) $orders = array();
|
| 230 |
+
$result = "";
|
| 231 |
+
foreach ($orders as $order) {
|
| 232 |
+
/* @var $item Mage_Sales_Model_Order_Item */
|
| 233 |
+
foreach ($order->getAllVisibleItems() as $item) {
|
| 234 |
+
if (strlen($result)>0) $result .= ";";
|
| 235 |
+
$cat = "";
|
| 236 |
+
$product = Mage::getModel('catalog/product')->load($item->getProductId());
|
| 237 |
+
if ($product && $product->getId()) {
|
| 238 |
+
if ($catIds = $product->getCategoryIds()) {
|
| 239 |
+
$category = Mage::getModel("catalog/category")->load(end($catIds));
|
| 240 |
+
if ($category && $category->getId()) {
|
| 241 |
+
$cat = str_replace(array(',', ';'), ' ', $category->getName());
|
| 242 |
+
}
|
| 243 |
+
}
|
| 244 |
+
$name = str_replace(array(',', ';'), ' ', $item->getName());
|
| 245 |
+
$price = $isTaxInclRequired ? $item->getPriceInclTax() : $item->getPrice();
|
| 246 |
+
$result .= sprintf("%s,%s,%s,%s,%s",
|
| 247 |
+
$this->jsQuoteEscape($item->getSku()),
|
| 248 |
+
$this->jsQuoteEscape($name),
|
| 249 |
+
$this->jsQuoteEscape($cat),
|
| 250 |
+
number_format($item->getQtyOrdered(), 4, '.', ''),
|
| 251 |
+
Etracker_Etracker_Helper_Data::priceFormat($price)
|
| 252 |
+
);
|
| 253 |
+
}
|
| 254 |
+
}
|
| 255 |
+
/* Shipment */
|
| 256 |
+
$shipmentData = $this->getShipmentData($order);
|
| 257 |
+
if (!empty($shipmentData)) {
|
| 258 |
+
$result .= ';';
|
| 259 |
+
$result .= sprintf("%s,%s,%s,%s,%s",
|
| 260 |
+
$this->jsQuoteEscape($shipmentData['id']),
|
| 261 |
+
$this->jsQuoteEscape($shipmentData['name']),
|
| 262 |
+
$this->jsQuoteEscape(reset($shipmentData['category'])),
|
| 263 |
+
number_format(1, 4, '.', ''),
|
| 264 |
+
Etracker_Etracker_Helper_Data::priceFormat($shipmentData['price'])
|
| 265 |
+
);
|
| 266 |
+
}
|
| 267 |
+
/* Discounts */
|
| 268 |
+
$discountData = $this->getDiscountData($order);
|
| 269 |
+
if (!empty($discountData)) {
|
| 270 |
+
$result .= ';';
|
| 271 |
+
$result .= sprintf("%s,%s,%s,%s,%s",
|
| 272 |
+
$this->jsQuoteEscape($discountData['id']),
|
| 273 |
+
$this->jsQuoteEscape($discountData['name']),
|
| 274 |
+
$this->jsQuoteEscape(reset($discountData['category'])),
|
| 275 |
+
number_format(1, 4, '.', ''),
|
| 276 |
+
Etracker_Etracker_Helper_Data::priceFormat($discountData['price'])
|
| 277 |
+
);
|
| 278 |
+
}
|
| 279 |
+
}
|
| 280 |
+
return $result;
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
/**
|
| 284 |
+
* 0=>Lead, 1=>Sale, 2=Vollstorno
|
| 285 |
+
* @return string the etracker sale type
|
| 286 |
+
*/
|
| 287 |
+
protected function _getOrderTsale() {
|
| 288 |
+
if ($order = $this->getOrder()) {
|
| 289 |
+
return '1';
|
| 290 |
+
}
|
| 291 |
+
return '0';
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
/**
|
| 295 |
+
* @return bool|Mage_Sales_Model_Order
|
| 296 |
+
*/
|
| 297 |
+
private function getOrder() {
|
| 298 |
+
$orders = $this->getOrders();
|
| 299 |
+
if (!empty($orders)) {
|
| 300 |
+
return reset($orders);
|
| 301 |
+
}
|
| 302 |
+
return false;
|
| 303 |
+
}
|
| 304 |
+
|
| 305 |
+
/**
|
| 306 |
+
* @return null|array(Mage_Sales_Model_Order)
|
| 307 |
+
*/
|
| 308 |
+
private function getOrders() {
|
| 309 |
+
if (!is_null($this->_cacheOrders)) {
|
| 310 |
+
return $this->_cacheOrders;
|
| 311 |
+
}
|
| 312 |
+
$orderIds = Mage::registry('current_order_ids');
|
| 313 |
+
if ($orderIds) {
|
| 314 |
+
$collection = Mage::getResourceModel('sales/order_collection')
|
| 315 |
+
->addFieldToFilter('entity_id', array('in' => $orderIds));
|
| 316 |
+
if (!$collection->count()) {
|
| 317 |
+
Etracker_Etracker_Helper_Data::log('No valid order found in registry!', Zend_Log::ERR);
|
| 318 |
+
}
|
| 319 |
+
foreach($collection as $order) {
|
| 320 |
+
$this->_cacheOrders[] = $order;
|
| 321 |
+
}
|
| 322 |
+
}
|
| 323 |
+
return $this->_cacheOrders;
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
/**
|
| 327 |
+
* @return bool|Mage_Sales_Model_Order Returns the increment ID of the first found order. Returns false if no order available.
|
| 328 |
+
*/
|
| 329 |
+
protected function _getOrdersIdTrackingCode()
|
| 330 |
+
{
|
| 331 |
+
$orders = $this->getOrders();
|
| 332 |
+
if (!empty($orders)) {
|
| 333 |
+
$order = reset($orders);
|
| 334 |
+
return ($order) ? $order->getIncrementId() : false;
|
| 335 |
+
}
|
| 336 |
+
return false;
|
| 337 |
+
}
|
| 338 |
+
|
| 339 |
+
/**
|
| 340 |
+
* @return string
|
| 341 |
+
*/
|
| 342 |
+
protected function _getOrdersValueTrackingCode()
|
| 343 |
+
{
|
| 344 |
+
$isTaxInclRequired = Mage::getStoreConfig('etracker/general/tax');
|
| 345 |
+
$orders = $this->getOrders();
|
| 346 |
+
if (is_null($orders)) $orders = array();
|
| 347 |
+
$result = 0;
|
| 348 |
+
foreach ($orders as $order) {
|
| 349 |
+
/* @var $order Mage_Sales_Model_Order */
|
| 350 |
+
$result += $isTaxInclRequired ? $order->getBaseGrandTotal() : $order->getBaseGrandTotal() - $order->getBaseTaxAmount();
|
| 351 |
+
}
|
| 352 |
+
return $result;
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
/**
|
| 356 |
+
* Returns true in case we're in checkout's basket view. Additionally, the view is stored into session for later
|
| 357 |
+
* usage in checkout process.
|
| 358 |
+
* @return bool
|
| 359 |
+
*/
|
| 360 |
+
public function isCheckoutCartView() {
|
| 361 |
+
$isCheckout = $this->isCheckout('cart');
|
| 362 |
+
if ($isCheckout) {
|
| 363 |
+
$session = Mage::getSingleton('core/session');
|
| 364 |
+
$session->setData(Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CART_VIEW, 1);
|
| 365 |
+
}
|
| 366 |
+
return $isCheckout;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
/**
|
| 370 |
+
* @param string The checkout type: 'onepage' or 'multishipping'
|
| 371 |
+
* @return bool True in case the checkout (module) is used
|
| 372 |
+
*/
|
| 373 |
+
public function isCheckout($type = null) {
|
| 374 |
+
$moduleName = $this->getRequest()->getModuleName();
|
| 375 |
+
$controllerName = $this->getRequest()->getControllerName();
|
| 376 |
+
if (!is_null($type)) {
|
| 377 |
+
return $moduleName == 'checkout' && $controllerName == $type;
|
| 378 |
+
} else {
|
| 379 |
+
return $moduleName == 'checkout';
|
| 380 |
+
}
|
| 381 |
+
}
|
| 382 |
+
|
| 383 |
+
/**
|
| 384 |
+
* @return bool In case the checkout succeeded and is finished.
|
| 385 |
+
*/
|
| 386 |
+
public function isCheckoutSuccess() {
|
| 387 |
+
$orderId = $this->_getOrdersIdTrackingCode();
|
| 388 |
+
return (bool) $orderId;
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
/**
|
| 392 |
+
* @return string
|
| 393 |
+
*/
|
| 394 |
+
protected function _getOrdersEtTarget() {
|
| 395 |
+
$hlp = Mage::helper('etracker');
|
| 396 |
+
$pre = $hlp->__('Cart');
|
| 397 |
+
$pathPost = '';
|
| 398 |
+
if ($this->isCheckout('multishipping')) {
|
| 399 |
+
$pathPost .= $pre.'/'.$hlp->__('Multishipping');
|
| 400 |
+
$steps = Mage::getSingleton('checkout/type_multishipping_state')->getSteps();
|
| 401 |
+
$activeStep = $this->getCheckoutMultiShippingActiveStepKey($steps);
|
| 402 |
+
foreach($steps as $step => $data) {
|
| 403 |
+
$pathPost .= '/'. $data['label'];
|
| 404 |
+
if ($step == $activeStep) break;
|
| 405 |
+
}
|
| 406 |
+
} else if ($this->isCheckout('onepage')) {
|
| 407 |
+
$pathPost .= $pre.'/'.$hlp->__('Onepage');
|
| 408 |
+
$steps = Mage::getBlockSingleton('checkout/onepage')->getSteps();
|
| 409 |
+
foreach($steps as $step => $data) {
|
| 410 |
+
$pathPost .= '/'. $data['label'];
|
| 411 |
+
}
|
| 412 |
+
if ($this->isCheckoutSuccess()) {
|
| 413 |
+
$pathPost .= '/'.$hlp->__('Order Success');
|
| 414 |
+
}
|
| 415 |
+
} else if ($this->isCheckout(null)) {
|
| 416 |
+
$pathPost = $pre;
|
| 417 |
+
}
|
| 418 |
+
$path = empty($pathPost) ? '' : $pathPost;
|
| 419 |
+
return $path;
|
| 420 |
+
}
|
| 421 |
+
|
| 422 |
+
/**
|
| 423 |
+
* Returns the key name of the current active step for the multishipping checkout
|
| 424 |
+
* @param $steps
|
| 425 |
+
* @return bool|string
|
| 426 |
+
*/
|
| 427 |
+
private function getCheckoutMultiShippingActiveStepKey($steps) {
|
| 428 |
+
foreach($steps as $stepKey => $stepData) {
|
| 429 |
+
if (isset($stepData['is_active']) && $stepData['is_active'] == true) {
|
| 430 |
+
return $stepKey;
|
| 431 |
+
}
|
| 432 |
+
}
|
| 433 |
+
return false;
|
| 434 |
+
}
|
| 435 |
+
|
| 436 |
+
/**
|
| 437 |
+
* @return bool True in case the first step of multishipping checkout is active, false otherwise
|
| 438 |
+
*/
|
| 439 |
+
public function isCheckoutMultiShippingFirstStep() {
|
| 440 |
+
$steps = Mage::getSingleton('checkout/type_multishipping_state')->getSteps();
|
| 441 |
+
$stepIdx = 0;
|
| 442 |
+
foreach($steps as $stepKey => $stepData) {
|
| 443 |
+
if ($stepIdx == 0 && isset($stepData['is_active']) && $stepData['is_active'] == true) {
|
| 444 |
+
return true;
|
| 445 |
+
}
|
| 446 |
+
break;
|
| 447 |
+
}
|
| 448 |
+
return false;
|
| 449 |
+
}
|
| 450 |
+
|
| 451 |
+
/**
|
| 452 |
+
* @return string The current quote item ID from the session, maybe empty string
|
| 453 |
+
*/
|
| 454 |
+
public function getQuoteId($withLabel=true) {
|
| 455 |
+
$session = Mage::getSingleton('checkout/session');
|
| 456 |
+
/* @var $cart Mage_Sales_Model_Quote */
|
| 457 |
+
$cart = $session->getQuote();
|
| 458 |
+
if ($cart && $cart->getId()) {
|
| 459 |
+
return $withLabel ? Mage::helper('etracker')->__('Cart').'#'.$cart->getId() : $cart->getId();
|
| 460 |
+
}
|
| 461 |
+
if ($order = $this->getOrder()) {
|
| 462 |
+
return $withLabel ? Mage::helper('etracker')->__('Cart').'#'.$order->getQuoteId() : $order->getQuoteId();
|
| 463 |
+
}
|
| 464 |
+
return '-';
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
/**
|
| 468 |
+
* @return array|bool The relevant data as an array:
|
| 469 |
+
* 'data' => array()<product data>
|
| 470 |
+
* 'qty' => product quantity
|
| 471 |
+
* Returns false if no product has been put to basket
|
| 472 |
+
*/
|
| 473 |
+
public function getPprInsertToBasketProductData() {
|
| 474 |
+
$session = Mage::getSingleton('customer/session');
|
| 475 |
+
$products = $session->getData('event_sales_quote_add_item_product');
|
| 476 |
+
$items = array();
|
| 477 |
+
if (!empty($products)) {
|
| 478 |
+
$session->unsetData('event_sales_quote_add_item_product');
|
| 479 |
+
foreach($products as $productId => $qty) {
|
| 480 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
| 481 |
+
if ($product && $product->getId()) {
|
| 482 |
+
$data = array('data' => $this->getProductData($product), 'qty' => $qty);
|
| 483 |
+
$items[] = $data;
|
| 484 |
+
}
|
| 485 |
+
}
|
| 486 |
+
if (!empty($items)) return $items;
|
| 487 |
+
}
|
| 488 |
+
return false;
|
| 489 |
+
}
|
| 490 |
+
|
| 491 |
+
/**
|
| 492 |
+
* @return array|bool The relevant product data as key/value pairs, false if no product has been removed from basket
|
| 493 |
+
*/
|
| 494 |
+
public function getPprRemoveFromBasketProductData() {
|
| 495 |
+
$session = Mage::getSingleton('customer/session');
|
| 496 |
+
$products = $session->getData('event_sales_quote_remove_item_product');
|
| 497 |
+
$items = array();
|
| 498 |
+
if (!empty($products)) {
|
| 499 |
+
$session->unsetData('event_sales_quote_remove_item_product');
|
| 500 |
+
foreach($products as $productId => $qty) {
|
| 501 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
| 502 |
+
$data = array('data' => $this->getProductData($product), 'qty' => $qty);
|
| 503 |
+
$items[] = $data;
|
| 504 |
+
}
|
| 505 |
+
if (!empty($items)) return $items;
|
| 506 |
+
}
|
| 507 |
+
return false;
|
| 508 |
+
}
|
| 509 |
+
|
| 510 |
+
/**
|
| 511 |
+
* @return array|bool The relevant product data as key/value pairs, false if no current product
|
| 512 |
+
*/
|
| 513 |
+
public function getPprViewProductData() {
|
| 514 |
+
/* @var $product Mage_Catalog_Model_Product */
|
| 515 |
+
if ($product = Mage::registry('current_product')) {
|
| 516 |
+
$data = $this->getProductData($product);
|
| 517 |
+
return $data;
|
| 518 |
+
}
|
| 519 |
+
return false;
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
/**
|
| 523 |
+
* Translates and escapes given text for usage in javascript context.
|
| 524 |
+
* @param $text
|
| 525 |
+
* @return mixed
|
| 526 |
+
*/
|
| 527 |
+
public function jsTranslAndEscape($text) {
|
| 528 |
+
$value = parent::__($text);
|
| 529 |
+
return Etracker_Etracker_Helper_Data::iCharRepl($value);
|
| 530 |
+
}
|
| 531 |
+
|
| 532 |
+
/**
|
| 533 |
+
* Returns the order in etracker required format (ready for json-encoding)
|
| 534 |
+
* @return bool|array
|
| 535 |
+
*/
|
| 536 |
+
public function getPprOrderData() {
|
| 537 |
+
$isTaxInclRequired = Mage::getStoreConfig('etracker/general/tax');
|
| 538 |
+
$order = $this->getOrder();
|
| 539 |
+
if ($order && $order->getId()) {
|
| 540 |
+
try {
|
| 541 |
+
$group = Mage::getModel('customer/group')->load($order->getCustomerGroupId());
|
| 542 |
+
$data = array();
|
| 543 |
+
$data['orderNumber'] = $order->getIncrementId();
|
| 544 |
+
$data['status'] = 'sale';
|
| 545 |
+
$total = $isTaxInclRequired ? $order->getBaseGrandTotal() : $order->getBaseGrandTotal() - $order->getBaseTaxAmount();
|
| 546 |
+
$data['orderPrice'] = Etracker_Etracker_Helper_Data::priceFormat($total);
|
| 547 |
+
$data['currency'] = $order->getOrderCurrencyCode();
|
| 548 |
+
$data['customerId'] = $order->getCustomerId() ? $order->getCustomerId() : '-';
|
| 549 |
+
$customerGroup = ($group && $group->getId()) ? $group->getCustomerGroupCode() : '-';
|
| 550 |
+
$data['customerGroup'] = Etracker_Etracker_Helper_Data::iCharRepl($customerGroup);
|
| 551 |
+
$shipmentAddressData = $this->getAddressString($order->getShippingAddress());
|
| 552 |
+
$data['customerAddress'] = $shipmentAddressData;
|
| 553 |
+
$billingAddressData = $this->getAddressString($order->getBillingAddress());
|
| 554 |
+
$data['invoiceAddress'] = $billingAddressData;
|
| 555 |
+
$data['paymentMethod'] = $order->getPayment() ? $order->getPayment()->getMethod() : '-';
|
| 556 |
+
$data['deliveryConditions'] = '-';
|
| 557 |
+
$data['paymentConditions'] = '-';
|
| 558 |
+
$data['shipType'] = $order->getShippingMethod() ? $order->getShippingMethod() : '';
|
| 559 |
+
$costs = $isTaxInclRequired ? $order->getShippingInclTax() : $order->getShippingAmount();
|
| 560 |
+
$data['shipCosts'] = Etracker_Etracker_Helper_Data::priceFormat($costs);
|
| 561 |
+
$data['couponCodes'] = $order->getCouponCode() ? Etracker_Etracker_Helper_Data::iCharRepl($order->getCouponCode()) : '-';
|
| 562 |
+
$data['giftPackage'] = array('-');
|
| 563 |
+
$data['differenceData'] = 0;
|
| 564 |
+
$products = array();
|
| 565 |
+
/* @var $item Mage_Sales_Model_Order_Item */
|
| 566 |
+
foreach($order->getAllVisibleItems() as $item) {
|
| 567 |
+
$dataItem = array();
|
| 568 |
+
$product = Mage::getModel('catalog/product')->load($item->getProductId());
|
| 569 |
+
$dataItem['product'] = $this->getProductData($product);
|
| 570 |
+
$dataItem['quantity'] = (int)$item->getQtyOrdered();
|
| 571 |
+
$products[] = $dataItem;
|
| 572 |
+
}
|
| 573 |
+
if ($order->getDiscountAmount() != 0) {
|
| 574 |
+
$dataItem['product'] = $this->getDiscountData($order);
|
| 575 |
+
$dataItem['quantity'] = (int)1;
|
| 576 |
+
$products[] = $dataItem;
|
| 577 |
+
}
|
| 578 |
+
/*$shipmentData = $this->getShipmentData($order);
|
| 579 |
+
if (!empty($shipmentData)) {
|
| 580 |
+
$dataItem['product'] = $shipmentData;
|
| 581 |
+
$dataItem['quantity'] = (int)1;
|
| 582 |
+
$products[] = $dataItem;
|
| 583 |
+
}*/
|
| 584 |
+
$basketId = Etracker_Etracker_Helper_Data::iCharRepl(Mage::helper('etracker')->__('Cart')).'#'.$order->getQuoteId();
|
| 585 |
+
$data['basket'] = (object) array(
|
| 586 |
+
'id' => $basketId,
|
| 587 |
+
'products' => $products
|
| 588 |
+
);
|
| 589 |
+
return $data;
|
| 590 |
+
} catch (Exception $e) {
|
| 591 |
+
Etracker_Etracker_Helper_Data::log('Problem extracting data from order: '.$e->getMessage(), Zend_Log::ERR);
|
| 592 |
+
}
|
| 593 |
+
}
|
| 594 |
+
return false;
|
| 595 |
+
}
|
| 596 |
+
|
| 597 |
+
/**
|
| 598 |
+
* @param Mage_Sales_Model_Order_Address $address
|
| 599 |
+
* @return string
|
| 600 |
+
*/
|
| 601 |
+
private function getAddressString($address) {
|
| 602 |
+
$value = '';
|
| 603 |
+
if ($address && $address->getId()) {
|
| 604 |
+
$value = $address->getCountryId();
|
| 605 |
+
if ($address->getRegion()) $value .= ','.$address->getRegion();
|
| 606 |
+
if ($address->getCity()) $value .= ','.$address->getCity();
|
| 607 |
+
}
|
| 608 |
+
return $value;
|
| 609 |
+
}
|
| 610 |
+
|
| 611 |
+
/**
|
| 612 |
+
* @param Mage_Catalog_Model_Product $product
|
| 613 |
+
* @return array
|
| 614 |
+
*/
|
| 615 |
+
private function getProductData($product) {
|
| 616 |
+
/* @var $categoryCurrent Mage_Catalog_Model_Category */
|
| 617 |
+
$categoryCurrent = Mage::registry('current_category');
|
| 618 |
+
$categoryFromCart = Etracker_Etracker_Helper_Data::getFromSession(
|
| 619 |
+
Etracker_Etracker_Helper_Data::SESS_KEY_CART_PROD_CAT_MAP, $product->getId());
|
| 620 |
+
|
| 621 |
+
$data = array();
|
| 622 |
+
$data['id'] = $product->getSku();
|
| 623 |
+
$data['name'] = Etracker_Etracker_Helper_Data::iCharRepl($product->getName());
|
| 624 |
+
$cat = $categoryCurrent ? $this->pathToArray($this->getCategoryPath($categoryCurrent)) : array();
|
| 625 |
+
if (empty($cat) && $categoryFromCart) {
|
| 626 |
+
$cat = $this->pathToArray($categoryFromCart);
|
| 627 |
+
}
|
| 628 |
+
$data['category'] = $cat;
|
| 629 |
+
$price = Etracker_Etracker_Helper_Data::getProductPrice($product);
|
| 630 |
+
$data['price'] = Etracker_Etracker_Helper_Data::priceFormat($price);
|
| 631 |
+
$data['currency'] = Mage::app()->getStore()->getCurrentCurrencyCode();
|
| 632 |
+
$data['variants'] = (object) array(); //$product->getOptions();
|
| 633 |
+
return $data;
|
| 634 |
+
}
|
| 635 |
+
|
| 636 |
+
/**
|
| 637 |
+
* Generates an array from a given path (separated by '/') and performs a js-escape on each term.
|
| 638 |
+
* @param $path
|
| 639 |
+
* @return array|mixed
|
| 640 |
+
*/
|
| 641 |
+
private function pathToArray($path) {
|
| 642 |
+
$path = Etracker_Etracker_Helper_Data::iCharRepl($path);
|
| 643 |
+
if (strpos($path, '/') !== false) {
|
| 644 |
+
return explode('/', $path);
|
| 645 |
+
}
|
| 646 |
+
return array($path);
|
| 647 |
+
}
|
| 648 |
+
|
| 649 |
+
/**
|
| 650 |
+
* @param Mage_Sales_Model_Order $order
|
| 651 |
+
* @return array
|
| 652 |
+
*/
|
| 653 |
+
private function getDiscountData($order) {
|
| 654 |
+
$hlp = Mage::helper('etracker');
|
| 655 |
+
$isTaxInclRequired = Mage::getStoreConfig('etracker/general/tax');
|
| 656 |
+
$price = $isTaxInclRequired ? $order->getDiscountAmount() : $order->getDiscountAmount() - $order->getHiddenTaxAmount();
|
| 657 |
+
$data = array();
|
| 658 |
+
if ($price) {
|
| 659 |
+
$id = $order->getIncrementId().($order->getCouponCode()? '-'.$order->getCouponCode() : '');
|
| 660 |
+
$data['id'] = $id;
|
| 661 |
+
$name = $order->getDiscountDescription() ? $order->getDiscountDescription().'('.$order->getCouponCode().')' : $hlp->__('Discount');
|
| 662 |
+
$data['name'] = Etracker_Etracker_Helper_Data::iCharRepl($name);
|
| 663 |
+
$cat = $order->getCouponCode() ? $hlp->__('Coupons') : $hlp->__('Discounts');
|
| 664 |
+
$data['category'] = array(Etracker_Etracker_Helper_Data::iCharRepl($cat));
|
| 665 |
+
$data['price'] = Etracker_Etracker_Helper_Data::priceFormat($price);
|
| 666 |
+
$data['currency'] = $order->getOrderCurrencyCode(); // Mage::app()->getStore()->getCurrentCurrencyCode();
|
| 667 |
+
$data['variants'] = (object) array();
|
| 668 |
+
}
|
| 669 |
+
return $data;
|
| 670 |
+
}
|
| 671 |
+
|
| 672 |
+
/**
|
| 673 |
+
* Returns the shipment data for the given order.
|
| 674 |
+
* @param Mage_Sales_Model_Order $order $order
|
| 675 |
+
* @return array May be empty
|
| 676 |
+
*/
|
| 677 |
+
private function getShipmentData($order) {
|
| 678 |
+
$data = array();
|
| 679 |
+
$isTaxInclRequired = Mage::getStoreConfig('etracker/general/tax');
|
| 680 |
+
$amount = $isTaxInclRequired ? $order->getShippingInclTax() : $order->getShippingAmount();
|
| 681 |
+
if ($amount) {
|
| 682 |
+
$id = $order->getIncrementId().'-'.Mage::helper('etracker')->__('Shipment');
|
| 683 |
+
$name = $order->getShippingMethod();
|
| 684 |
+
$cat = Mage::helper('etracker')->__('Shipment');
|
| 685 |
+
$data['id'] = $id;
|
| 686 |
+
$data['name'] = $name;
|
| 687 |
+
$data['category'] = array(Etracker_Etracker_Helper_Data::iCharRepl($cat));
|
| 688 |
+
$data['price'] = $amount;
|
| 689 |
+
$data['currency'] = $order->getOrderCurrencyCode();
|
| 690 |
+
$data['variants'] = (object)array();
|
| 691 |
+
}
|
| 692 |
+
return $data;
|
| 693 |
+
}
|
| 694 |
+
}
|
| 695 |
+
?>
|
app/code/community/Etracker/Etracker/Helper/Data.php
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
|
| 16 |
+
class Etracker_Etracker_Helper_Data extends Mage_Core_Helper_Abstract {
|
| 17 |
+
|
| 18 |
+
const SESS_KEY_LAST_CAT_VIEW = 'last_category_view';
|
| 19 |
+
const SESS_KEY_LAST_CAT_PROD_VIEW = 'last_category_product_view';
|
| 20 |
+
const SESS_KEY_CART_PROD_CAT_MAP = 'cart_category_product';
|
| 21 |
+
const SESS_KEY_LAST_CART_VIEW = 'last_cart_view';
|
| 22 |
+
|
| 23 |
+
/**
|
| 24 |
+
* Returns the configured security code.
|
| 25 |
+
*
|
| 26 |
+
* @return string May be empty/null
|
| 27 |
+
*/
|
| 28 |
+
public function getSecurityCode() {
|
| 29 |
+
$accountId = Mage::getStoreConfig('etracker/general/account');
|
| 30 |
+
return $accountId;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
/**
|
| 34 |
+
* Returns the configured cc code.
|
| 35 |
+
*
|
| 36 |
+
* @return string May be empty/null
|
| 37 |
+
*/
|
| 38 |
+
public function getCcKey() {
|
| 39 |
+
$id = Mage::getStoreConfig('etracker/general/cckey');
|
| 40 |
+
return $id;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
/**
|
| 44 |
+
* Writes the given log message (to a separate log file).
|
| 45 |
+
* @param $msg
|
| 46 |
+
* @param int $level
|
| 47 |
+
*/
|
| 48 |
+
public static function log($msg, $level=Zend_Log::DEBUG) {
|
| 49 |
+
$force = (bool) Mage::getStoreConfig('etracker/developer/log');
|
| 50 |
+
if ($level == Zend_Log::ERR || $level == Zend_Log::ALERT || $level == Zend_Log::CRIT) $force = true;
|
| 51 |
+
Mage::log($msg, $level, 'etracker.log', $force);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
/**
|
| 55 |
+
* @param $value int|float the number to be formatted
|
| 56 |
+
* @return string
|
| 57 |
+
*/
|
| 58 |
+
public static function priceFormat($value) {
|
| 59 |
+
return number_format($value, 2, '.', '');
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
/**
|
| 63 |
+
* Calculates the price on base of the configurable tax (incl./excl.).
|
| 64 |
+
* @param Mage_Catalog_Model_Product $product
|
| 65 |
+
*/
|
| 66 |
+
public static function getProductPrice($product) {
|
| 67 |
+
/* @var $taxHelper Mage_Tax_Helper_Data */
|
| 68 |
+
$taxHelper = Mage::helper('tax');
|
| 69 |
+
$isTaxInclRequired = (bool) Mage::getStoreConfig('etracker/general/tax');
|
| 70 |
+
$productsInclTax = $taxHelper->priceIncludesTax($product->getStore());
|
| 71 |
+
$finalPrice = $product->getFinalPrice();
|
| 72 |
+
if ($productsInclTax) { // shop
|
| 73 |
+
if (!$isTaxInclRequired) {
|
| 74 |
+
//$price = $taxHelper->getPrice($product, $finalPrice, false);
|
| 75 |
+
if ($product->getTaxClassId()) {
|
| 76 |
+
$taxAmount = self::calculateTax($product, $finalPrice, true);
|
| 77 |
+
return $finalPrice - $taxAmount;
|
| 78 |
+
}
|
| 79 |
+
}
|
| 80 |
+
} else {
|
| 81 |
+
if ($isTaxInclRequired) {
|
| 82 |
+
if ($product->getTaxClassId()) {
|
| 83 |
+
$taxAmount = self::calculateTax($product, $finalPrice, false);
|
| 84 |
+
return $taxAmount + $finalPrice;
|
| 85 |
+
}
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
return $finalPrice;
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
/**
|
| 93 |
+
* Calculates the tax on the give price.
|
| 94 |
+
* @param $product
|
| 95 |
+
* @param $price
|
| 96 |
+
* @param $productInclTax If product price includes tax already
|
| 97 |
+
* @return mixed
|
| 98 |
+
*/
|
| 99 |
+
protected static function calculateTax($product, $price, $productInclTax) {
|
| 100 |
+
$request = Mage::getSingleton('tax/calculation')->getRateRequest(null, null, null, $product->getStore());
|
| 101 |
+
$percent = Mage::getSingleton('tax/calculation')->getRate($request->setProductClassId($product->getTaxClassId()));
|
| 102 |
+
$calculator = Mage::getSingleton('tax/calculation');
|
| 103 |
+
$taxAmount = $calculator->calcTaxAmount($price, $percent, $productInclTax, false);
|
| 104 |
+
return $taxAmount;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
/**
|
| 108 |
+
* Sets the given key/value pair to the core/session using the given group as data holder.
|
| 109 |
+
* @param $group The group-key the values is set to session
|
| 110 |
+
* @param $key
|
| 111 |
+
* @param $value
|
| 112 |
+
* @return bool True on success, false otherwise
|
| 113 |
+
*/
|
| 114 |
+
public static function setToSession($group, $key, $value) {
|
| 115 |
+
if (empty($group) || empty($key)) return false;
|
| 116 |
+
$session = Mage::getSingleton('core/session');
|
| 117 |
+
$groupValues = $session->getData($group);
|
| 118 |
+
if ($groupValues && is_array($groupValues)) {
|
| 119 |
+
$groupValues[$key] = $value;
|
| 120 |
+
} else {
|
| 121 |
+
$groupValues = array();
|
| 122 |
+
$groupValues[$key] = $value;
|
| 123 |
+
}
|
| 124 |
+
$session->setData($group, $groupValues);
|
| 125 |
+
Etracker_Etracker_Helper_Data::log("Set to core/session [group] {$group}, [key] {$key}, [value] {$value}");
|
| 126 |
+
return true;
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
/**
|
| 130 |
+
* Returns the group values (array) for the give group key.
|
| 131 |
+
* @param $group
|
| 132 |
+
* @param null $key if set, the value for the given key is returned
|
| 133 |
+
* @return bool|mixed
|
| 134 |
+
*/
|
| 135 |
+
public static function getFromSession($group, $key=null) {
|
| 136 |
+
if (empty($group)) return false;
|
| 137 |
+
$session = Mage::getSingleton('core/session');
|
| 138 |
+
$groupValues = $session->getData($group);
|
| 139 |
+
if (is_null($key)) {
|
| 140 |
+
return $groupValues;
|
| 141 |
+
} else {
|
| 142 |
+
Etracker_Etracker_Helper_Data::log("Fetch from core/session [group] {$group}, [key] {$key}, [value] {$groupValues[$key]}");
|
| 143 |
+
return (is_array($groupValues) && isset($groupValues[$key])) ? $groupValues[$key] : false;
|
| 144 |
+
}
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
/**
|
| 148 |
+
* Removes the key from the given group in session. If key is null, the group will be removed.
|
| 149 |
+
* @param $group
|
| 150 |
+
* @param null $key
|
| 151 |
+
* @return bool
|
| 152 |
+
*/
|
| 153 |
+
public static function removeFromSession($group, $key=null) {
|
| 154 |
+
if (empty($group)) return false;
|
| 155 |
+
$session = Mage::getSingleton('core/session');
|
| 156 |
+
if (is_null($key) && $session->hasData($group)) {
|
| 157 |
+
$session->unsetData($group);
|
| 158 |
+
}
|
| 159 |
+
if (!is_null($key)) {
|
| 160 |
+
$groupValues = $session->getData($group);
|
| 161 |
+
if (isset($groupValues[$key])) {
|
| 162 |
+
Etracker_Etracker_Helper_Data::log("Remove from core/session [group] {$group}, [key] {$key}");
|
| 163 |
+
unset($groupValues[$key]);
|
| 164 |
+
}
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
/**
|
| 169 |
+
* Replaces the characters ',",; for JavaScript escaping (by a space-character) using str_ireplace.
|
| 170 |
+
* @param $value
|
| 171 |
+
*/
|
| 172 |
+
public static function iCharRepl($value) {
|
| 173 |
+
$value = Mage::helper('core')->jsQuoteEscape($value);
|
| 174 |
+
return str_ireplace(array('"', ';'), ' ', $value);
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
/**
|
| 178 |
+
* To support version < 1.4.2 we need to disable use of "dynamic block" feature (see Observer) and use overwridden
|
| 179 |
+
* blocks.
|
| 180 |
+
* @return bool
|
| 181 |
+
*/
|
| 182 |
+
public static function isDynamicBlockSupported() {
|
| 183 |
+
$version = Mage::getVersionInfo();
|
| 184 |
+
if ($version['minor'] == 4 && $version['revision'] < 2 ) {
|
| 185 |
+
return false;
|
| 186 |
+
} else if ($version['minor'] < 4) {
|
| 187 |
+
return false;
|
| 188 |
+
} else
|
| 189 |
+
return true;
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
/**
|
| 193 |
+
* To support version < 1.4.2 we add child block html on this way as we do not need to overwrite any template file.
|
| 194 |
+
* (This is a better solution and causes less problems together with other modules).
|
| 195 |
+
*
|
| 196 |
+
* @param Mage_Core_Block_Abstract $block
|
| 197 |
+
* @param $html
|
| 198 |
+
* @param $childBlockName
|
| 199 |
+
* @return string
|
| 200 |
+
*/
|
| 201 |
+
public static function getDynamicChildBlockHtml($block, $html, $childBlockName) {
|
| 202 |
+
if (!self::isDynamicBlockSupported()) {
|
| 203 |
+
if ($block->getChild($childBlockName)) {
|
| 204 |
+
$html .= "\n".$block->getChildHtml($childBlockName);
|
| 205 |
+
}
|
| 206 |
+
}
|
| 207 |
+
return $html;
|
| 208 |
+
}
|
| 209 |
+
}
|
app/code/community/Etracker/Etracker/Model/Admin/System/Config/Source/InclTax.php
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
class Etracker_Etracker_Model_Admin_System_Config_Source_InclTax
|
| 16 |
+
{
|
| 17 |
+
public function toOptionArray()
|
| 18 |
+
{
|
| 19 |
+
return array(
|
| 20 |
+
array('value'=>0, 'label'=>Mage::helper('etracker')->__('Excluding Tax')),
|
| 21 |
+
array('value'=>1, 'label'=>Mage::helper('etracker')->__('Including Tax')),
|
| 22 |
+
);
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
}
|
app/code/community/Etracker/Etracker/Model/Observer.php
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
?>
|
| 16 |
+
<?php
|
| 17 |
+
|
| 18 |
+
class Etracker_Etracker_Model_Observer
|
| 19 |
+
{
|
| 20 |
+
|
| 21 |
+
private $_cacheCartProductCount = array();
|
| 22 |
+
|
| 23 |
+
/**
|
| 24 |
+
* @param Varien_Event_Observer $observer
|
| 25 |
+
*/
|
| 26 |
+
public function onOrderSuccess(Varien_Event_Observer $observer) {
|
| 27 |
+
$orderIds = $observer->getEvent()->getOrderIds();
|
| 28 |
+
if (empty($orderIds) || !is_array($orderIds)) {
|
| 29 |
+
/* Backwards-Compatibility to < 1.4.2 */
|
| 30 |
+
$checkoutSingleton = Mage::getSingleton('checkout/type_onepage');
|
| 31 |
+
if ($checkoutSingleton) {
|
| 32 |
+
$process = $checkoutSingleton->getCheckout();
|
| 33 |
+
if ($process) {
|
| 34 |
+
$lastOrderId = $process->getLastOrderId();
|
| 35 |
+
if ($lastOrderId) $orderIds = array($lastOrderId);
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
if (empty($orderIds)) return;
|
| 39 |
+
}
|
| 40 |
+
Mage::register('current_order_ids', $orderIds);
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
/**
|
| 44 |
+
* @param Varien_Event_Observer $observer
|
| 45 |
+
*/
|
| 46 |
+
public function onCustomerAuthenticated(Varien_Event_Observer $observer) {
|
| 47 |
+
$customer = $observer['model'];
|
| 48 |
+
$session = Mage::getSingleton('customer/session');
|
| 49 |
+
$session->setData('event_customer_login', $customer ? $customer->getId() : '');
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
/**
|
| 53 |
+
* @param Varien_Event_Observer $observer
|
| 54 |
+
*/
|
| 55 |
+
public function onSalesQuoteAddItem(Varien_Event_Observer $observer) {
|
| 56 |
+
/* @var $item Mage_Sales_Model_Quote_Item */
|
| 57 |
+
$item = $observer['quote_item'];
|
| 58 |
+
if ($item) {
|
| 59 |
+
Etracker_Etracker_Helper_Data::log('onSalesQuoteAddItem: '.$item->getId());
|
| 60 |
+
|
| 61 |
+
/* To be used in PPR: insertToBasket/removeFromBasket identify product */
|
| 62 |
+
$qty = $item->getTotalQty(); // may be null!
|
| 63 |
+
if (!$qty) {
|
| 64 |
+
$qty = Mage::app()->getRequest()->getParam('qty', 1);
|
| 65 |
+
}
|
| 66 |
+
Mage::getSingleton('customer/session')->setData('event_sales_quote_add_item_product',
|
| 67 |
+
array($item->getProductId() => $qty));
|
| 68 |
+
|
| 69 |
+
/* To be used in PPR: provide relevant category the product has been picked from */
|
| 70 |
+
$categoryPath = Etracker_Etracker_Helper_Data::getFromSession(
|
| 71 |
+
Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CAT_PROD_VIEW, $item->getProductId());
|
| 72 |
+
if (!$categoryPath) {
|
| 73 |
+
$categoryPath = Etracker_Etracker_Helper_Data::getFromSession(Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CAT_VIEW, 'path');
|
| 74 |
+
}
|
| 75 |
+
if ($categoryPath) {
|
| 76 |
+
Etracker_Etracker_Helper_Data::setToSession(
|
| 77 |
+
Etracker_Etracker_Helper_Data::SESS_KEY_CART_PROD_CAT_MAP, $item->getProductId(), $categoryPath);
|
| 78 |
+
}
|
| 79 |
+
}
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
/**
|
| 83 |
+
* @param Varien_Event_Observer $observer
|
| 84 |
+
*/
|
| 85 |
+
public function onSalesQuoteRemoveItem(Varien_Event_Observer $observer) {
|
| 86 |
+
/* @var $item Mage_Sales_Model_Quote_Item */
|
| 87 |
+
$item = $observer['quote_item'];
|
| 88 |
+
if ($item) {
|
| 89 |
+
Etracker_Etracker_Helper_Data::log('onSalesQuoteRemoveItem: '.$item->getId());
|
| 90 |
+
Mage::getSingleton('customer/session')->setData('event_sales_quote_remove_item_product',
|
| 91 |
+
array($item->getProductId() => $item->getQty()));
|
| 92 |
+
}
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
/**
|
| 96 |
+
* @param Varien_Event_Observer $observer
|
| 97 |
+
*/
|
| 98 |
+
public function onCartUpdateItemsBefore(Varien_Event_Observer $observer) {
|
| 99 |
+
/** @var $cart Mage_Checkout_Model_Cart */
|
| 100 |
+
$cart = $observer['cart'];
|
| 101 |
+
/** @var $item Mage_Sales_Model_Quote_Item */
|
| 102 |
+
foreach ($cart->getItems() as $item) {
|
| 103 |
+
$qty = $item->getQty() ? $item->getQty() : 1;
|
| 104 |
+
$this->_cacheCartProductCount[$item->getProductId()] = $qty;
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
/**
|
| 109 |
+
* @param Varien_Event_Observer $observer
|
| 110 |
+
*/
|
| 111 |
+
public function onCartUpdateItemsAfter(Varien_Event_Observer $observer) {
|
| 112 |
+
/** @var $cart Mage_Checkout_Model_Cart */
|
| 113 |
+
$cart = $observer['cart'];
|
| 114 |
+
$session = Mage::getSingleton('customer/session');
|
| 115 |
+
$itemsRemove = array();
|
| 116 |
+
$itemsAdd = array();
|
| 117 |
+
/** @var $item Mage_Sales_Model_Quote_Item */
|
| 118 |
+
foreach ($cart->getItems() as $item) {
|
| 119 |
+
$qty = $item->getQty();
|
| 120 |
+
if (isset($this->_cacheCartProductCount[$item->getProductId()])) {
|
| 121 |
+
$oldQty = $this->_cacheCartProductCount[$item->getProductId()];
|
| 122 |
+
if ($oldQty > $qty) {
|
| 123 |
+
$itemsRemove[$item->getProductId()] = $oldQty - $qty;
|
| 124 |
+
}
|
| 125 |
+
if ($oldQty < $qty) {
|
| 126 |
+
$itemsAdd[$item->getProductId()] = $qty - $oldQty;
|
| 127 |
+
}
|
| 128 |
+
}
|
| 129 |
+
}
|
| 130 |
+
if (!empty($itemsRemove)) $session->setData('event_sales_quote_remove_item_product', $itemsRemove);
|
| 131 |
+
if (!empty($itemsAdd)) $session->setData('event_sales_quote_add_item_product', $itemsAdd);
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
/**
|
| 136 |
+
* @param Varien_Event_Observer $observer
|
| 137 |
+
*/
|
| 138 |
+
public function onWishlistAddProduct(Varien_Event_Observer $observer) {
|
| 139 |
+
$product = $observer['product'];
|
| 140 |
+
$session = Mage::getSingleton('customer/session');
|
| 141 |
+
$session->setData('event_wishlist_add_product', $product);
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
/**
|
| 146 |
+
* Appends a layout-configured block dynamically to an existing one.
|
| 147 |
+
* @param $observer
|
| 148 |
+
* @return $this
|
| 149 |
+
*/
|
| 150 |
+
public function afterBlockOutput($observer) {
|
| 151 |
+
$block = $observer->getEvent()->getBlock();
|
| 152 |
+
$isDynamicBlockSupported = Etracker_Etracker_Helper_Data::isDynamicBlockSupported();
|
| 153 |
+
$transport = $observer->getEvent()->getTransport();
|
| 154 |
+
if(empty($transport) || !$isDynamicBlockSupported) {
|
| 155 |
+
return $this;
|
| 156 |
+
}
|
| 157 |
+
if ($block->getNameInLayout() == 'product.info.media' && $block->getChild('etracker_img')) {
|
| 158 |
+
$this->appendChildToBlock($block, $transport, 'etracker_img');
|
| 159 |
+
} elseif ($block->getNameInLayout() == 'checkout.onepage' && $block->getChild('etracker_onepage')) {
|
| 160 |
+
$this->appendChildToBlock($block, $transport, 'etracker_onepage');
|
| 161 |
+
} elseif ($block->getNameInLayout() == 'checkout.cart' && $block->getChild('etracker_cart')) {
|
| 162 |
+
$this->appendChildToBlock($block, $transport, 'etracker_cart');
|
| 163 |
+
}
|
| 164 |
+
return $this;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
/**
|
| 168 |
+
* Appends the block html from the given child (childName) to the given block.
|
| 169 |
+
* @param $block Mage_Core_Block_Abstract
|
| 170 |
+
* @param $transport
|
| 171 |
+
* @return $this
|
| 172 |
+
*/
|
| 173 |
+
public function appendChildToBlock($block, $transport, $childName) {
|
| 174 |
+
Etracker_Etracker_Helper_Data::log("Appending block '{$childName}'");
|
| 175 |
+
$originalHtml = $transport->getHtml();
|
| 176 |
+
$appendHtml = $block->getChildHtml($childName);
|
| 177 |
+
$newHtml = $originalHtml."\n".$appendHtml;
|
| 178 |
+
$transport->setHtml($newHtml);
|
| 179 |
+
return $this;
|
| 180 |
+
}
|
| 181 |
+
}
|
| 182 |
+
?>
|
app/code/community/Etracker/Etracker/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* justselling Germany Ltd. EULA
|
| 5 |
+
* http://www.justselling.de/
|
| 6 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 7 |
+
*
|
| 8 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 9 |
+
*
|
| 10 |
+
* @category justselling
|
| 11 |
+
* @package justselling_etracker
|
| 12 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 13 |
+
* @license http://www.justselling.de/lizenz
|
| 14 |
+
* @author Bodo Schulte
|
| 15 |
+
*/
|
| 16 |
+
-->
|
| 17 |
+
<config>
|
| 18 |
+
<acl>
|
| 19 |
+
<resources>
|
| 20 |
+
<all>
|
| 21 |
+
<title>Allow Everything</title>
|
| 22 |
+
</all>
|
| 23 |
+
<admin>
|
| 24 |
+
<children>
|
| 25 |
+
<etracker>
|
| 26 |
+
<title>etracker</title>
|
| 27 |
+
<sort_order>0</sort_order>
|
| 28 |
+
</etracker>
|
| 29 |
+
<system>
|
| 30 |
+
<children>
|
| 31 |
+
<config>
|
| 32 |
+
<children>
|
| 33 |
+
<etracker translate="title" module="etracker">
|
| 34 |
+
<title>etracker</title>
|
| 35 |
+
</etracker>
|
| 36 |
+
</children>
|
| 37 |
+
</config>
|
| 38 |
+
</children>
|
| 39 |
+
</system>
|
| 40 |
+
</children>
|
| 41 |
+
</admin>
|
| 42 |
+
</resources>
|
| 43 |
+
</acl>
|
| 44 |
+
</config>
|
app/code/community/Etracker/Etracker/etc/config.xml
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* justselling Germany Ltd. EULA
|
| 5 |
+
* http://www.justselling.de/
|
| 6 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 7 |
+
*
|
| 8 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 9 |
+
*
|
| 10 |
+
* @category justselling
|
| 11 |
+
* @package justselling_etracker
|
| 12 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 13 |
+
* @license http://www.justselling.de/lizenz
|
| 14 |
+
* @author Bodo Schulte
|
| 15 |
+
*/
|
| 16 |
+
-->
|
| 17 |
+
<config>
|
| 18 |
+
<modules>
|
| 19 |
+
<Etracker_Etracker>
|
| 20 |
+
<version>1.0.0</version>
|
| 21 |
+
</Etracker_Etracker>
|
| 22 |
+
</modules>
|
| 23 |
+
<global>
|
| 24 |
+
<models>
|
| 25 |
+
<etracker>
|
| 26 |
+
<class>Etracker_Etracker_Model</class>
|
| 27 |
+
</etracker>
|
| 28 |
+
</models>
|
| 29 |
+
<blocks>
|
| 30 |
+
<etracker>
|
| 31 |
+
<class>Etracker_Etracker_Block</class>
|
| 32 |
+
</etracker>
|
| 33 |
+
<checkout>
|
| 34 |
+
<!-- In case any problem occurs (regarding to other modules) with one or all of these overwritten
|
| 35 |
+
blocks you can simply remove them. Precondition: your Magento Version is >= 1.4.2 -->
|
| 36 |
+
<rewrite>
|
| 37 |
+
<cart>Etracker_Etracker_Block_Checkout_Cart</cart>
|
| 38 |
+
<onepage>Etracker_Etracker_Block_Checkout_Onepage</onepage>
|
| 39 |
+
</rewrite>
|
| 40 |
+
</checkout>
|
| 41 |
+
<catalog>
|
| 42 |
+
<!-- In case any problem occurs (regarding to other moduls) with these overwritten block you can
|
| 43 |
+
simply remove it. Precondition: your Magento Version is >= 1.4.2 -->
|
| 44 |
+
<rewrite>
|
| 45 |
+
<product_view_media>Etracker_Etracker_Block_Catalog_Product_View_Media</product_view_media>
|
| 46 |
+
</rewrite>
|
| 47 |
+
</catalog>
|
| 48 |
+
</blocks>
|
| 49 |
+
<helpers>
|
| 50 |
+
<etracker>
|
| 51 |
+
<class>Etracker_Etracker_Helper</class>
|
| 52 |
+
</etracker>
|
| 53 |
+
</helpers>
|
| 54 |
+
</global>
|
| 55 |
+
<frontend>
|
| 56 |
+
<translate>
|
| 57 |
+
<modules>
|
| 58 |
+
<Etracker_Etracker>
|
| 59 |
+
<files>
|
| 60 |
+
<default>Etracker_Etracker.csv</default>
|
| 61 |
+
</files>
|
| 62 |
+
</Etracker_Etracker>
|
| 63 |
+
</modules>
|
| 64 |
+
</translate>
|
| 65 |
+
|
| 66 |
+
<layout>
|
| 67 |
+
<updates>
|
| 68 |
+
<etracker>
|
| 69 |
+
<file>etracker.xml</file>
|
| 70 |
+
</etracker>
|
| 71 |
+
</updates>
|
| 72 |
+
</layout>
|
| 73 |
+
<events>
|
| 74 |
+
<checkout_onepage_controller_success_action>
|
| 75 |
+
<observers>
|
| 76 |
+
<etracker_order_success>
|
| 77 |
+
<class>etracker/observer</class>
|
| 78 |
+
<method>onOrderSuccess</method>
|
| 79 |
+
</etracker_order_success>
|
| 80 |
+
</observers>
|
| 81 |
+
</checkout_onepage_controller_success_action>
|
| 82 |
+
<checkout_multishipping_controller_success_action>
|
| 83 |
+
<observers>
|
| 84 |
+
<etracker_order_success2>
|
| 85 |
+
<class>etracker/observer</class>
|
| 86 |
+
<method>onOrderSuccess</method>
|
| 87 |
+
</etracker_order_success2>
|
| 88 |
+
</observers>
|
| 89 |
+
</checkout_multishipping_controller_success_action>
|
| 90 |
+
<customer_customer_authenticated>
|
| 91 |
+
<observers>
|
| 92 |
+
<etracker_customer_authenticated>
|
| 93 |
+
<class>etracker/observer</class>
|
| 94 |
+
<method>onCustomerAuthenticated</method>
|
| 95 |
+
</etracker_customer_authenticated>
|
| 96 |
+
</observers>
|
| 97 |
+
</customer_customer_authenticated>
|
| 98 |
+
<sales_quote_add_item>
|
| 99 |
+
<observers>
|
| 100 |
+
<etracker_sales_quote_add_item>
|
| 101 |
+
<class>etracker/observer</class>
|
| 102 |
+
<method>onSalesQuoteAddItem</method>
|
| 103 |
+
</etracker_sales_quote_add_item>
|
| 104 |
+
</observers>
|
| 105 |
+
</sales_quote_add_item>
|
| 106 |
+
<sales_quote_remove_item>
|
| 107 |
+
<observers>
|
| 108 |
+
<etracker_sales_quote_remove_item>
|
| 109 |
+
<class>etracker/observer</class>
|
| 110 |
+
<method>onSalesQuoteRemoveItem</method>
|
| 111 |
+
</etracker_sales_quote_remove_item>
|
| 112 |
+
</observers>
|
| 113 |
+
</sales_quote_remove_item>
|
| 114 |
+
<checkout_cart_update_items_before>
|
| 115 |
+
<observers>
|
| 116 |
+
<etracker_cart_update_items_before>
|
| 117 |
+
<class>etracker/observer</class>
|
| 118 |
+
<method>onCartUpdateItemsBefore</method>
|
| 119 |
+
</etracker_cart_update_items_before>
|
| 120 |
+
</observers>
|
| 121 |
+
</checkout_cart_update_items_before>
|
| 122 |
+
<checkout_cart_update_items_after>
|
| 123 |
+
<observers>
|
| 124 |
+
<etracker_cart_update_items_after>
|
| 125 |
+
<class>etracker/observer</class>
|
| 126 |
+
<method>onCartUpdateItemsAfter</method>
|
| 127 |
+
</etracker_cart_update_items_after>
|
| 128 |
+
</observers>
|
| 129 |
+
</checkout_cart_update_items_after>
|
| 130 |
+
<wishlist_add_product>
|
| 131 |
+
<observers>
|
| 132 |
+
<etracker_wishlist_add_product>
|
| 133 |
+
<class>etracker/observer</class>
|
| 134 |
+
<method>onWishlistAddProduct</method>
|
| 135 |
+
</etracker_wishlist_add_product>
|
| 136 |
+
</observers>
|
| 137 |
+
</wishlist_add_product>
|
| 138 |
+
<core_block_abstract_to_html_after>
|
| 139 |
+
<observers>
|
| 140 |
+
<etracker_model_observer_block_output>
|
| 141 |
+
<type>singleton</type>
|
| 142 |
+
<class>etracker/observer</class>
|
| 143 |
+
<method>afterBlockOutput</method>
|
| 144 |
+
</etracker_model_observer_block_output>
|
| 145 |
+
</observers>
|
| 146 |
+
</core_block_abstract_to_html_after>
|
| 147 |
+
</events>
|
| 148 |
+
</frontend>
|
| 149 |
+
|
| 150 |
+
<adminhtml>
|
| 151 |
+
<translate>
|
| 152 |
+
<modules>
|
| 153 |
+
<Etracker_Etracker>
|
| 154 |
+
<files>
|
| 155 |
+
<default>Etracker_Etracker.csv</default>
|
| 156 |
+
</files>
|
| 157 |
+
</Etracker_Etracker>
|
| 158 |
+
</modules>
|
| 159 |
+
</translate>
|
| 160 |
+
</adminhtml>
|
| 161 |
+
<default>
|
| 162 |
+
<etracker>
|
| 163 |
+
<standard>
|
| 164 |
+
<active>1</active>
|
| 165 |
+
<async>1</async>
|
| 166 |
+
</standard>
|
| 167 |
+
</etracker>
|
| 168 |
+
</default>
|
| 169 |
+
</config>
|
app/code/community/Etracker/Etracker/etc/system.xml
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* justselling Germany Ltd. EULA
|
| 5 |
+
* http://www.justselling.de/
|
| 6 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 7 |
+
*
|
| 8 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 9 |
+
*
|
| 10 |
+
* @category justselling
|
| 11 |
+
* @package justselling_etracker
|
| 12 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 13 |
+
* @license http://www.justselling.de/lizenz
|
| 14 |
+
* @author Bodo Schulte
|
| 15 |
+
*/
|
| 16 |
+
-->
|
| 17 |
+
<config>
|
| 18 |
+
<sections>
|
| 19 |
+
<etracker translate="label" module="etracker">
|
| 20 |
+
<label>etracker</label>
|
| 21 |
+
<tab>general</tab>
|
| 22 |
+
<frontend_type>text</frontend_type>
|
| 23 |
+
<sort_order>340</sort_order>
|
| 24 |
+
<show_in_default>1</show_in_default>
|
| 25 |
+
<show_in_website>1</show_in_website>
|
| 26 |
+
<show_in_store>1</show_in_store>
|
| 27 |
+
<groups>
|
| 28 |
+
<general translate="label">
|
| 29 |
+
<label>General Settings</label>
|
| 30 |
+
<frontend_type>text</frontend_type>
|
| 31 |
+
<sort_order>10</sort_order>
|
| 32 |
+
<show_in_default>1</show_in_default>
|
| 33 |
+
<show_in_website>1</show_in_website>
|
| 34 |
+
<show_in_store>1</show_in_store>
|
| 35 |
+
<fields>
|
| 36 |
+
<account translate="label">
|
| 37 |
+
<label>etracker security code</label>
|
| 38 |
+
<frontend_type>text</frontend_type>
|
| 39 |
+
<sort_order>20</sort_order>
|
| 40 |
+
<show_in_default>1</show_in_default>
|
| 41 |
+
<show_in_website>1</show_in_website>
|
| 42 |
+
<show_in_store>1</show_in_store>
|
| 43 |
+
<comment>Please enter the security code here to overall enable tracking. You'll find the code online in Settings > Setup/Tracking code > etracker security code.</comment>
|
| 44 |
+
</account>
|
| 45 |
+
<cckey>
|
| 46 |
+
<label>Campaign Control secure key</label>
|
| 47 |
+
<frontend_type>text</frontend_type>
|
| 48 |
+
<sort_order>20</sort_order>
|
| 49 |
+
<show_in_default>1</show_in_default>
|
| 50 |
+
<show_in_website>1</show_in_website>
|
| 51 |
+
<show_in_store>1</show_in_store>
|
| 52 |
+
<comment>Please request your Campaign Control secure key from etracker.</comment>
|
| 53 |
+
</cckey>
|
| 54 |
+
<tax translate="label">
|
| 55 |
+
<label>Submit prices/amounts</label>
|
| 56 |
+
<frontend_type>select</frontend_type>
|
| 57 |
+
<source_model>etracker/admin_system_config_source_inclTax</source_model>
|
| 58 |
+
<sort_order>40</sort_order>
|
| 59 |
+
<show_in_default>1</show_in_default>
|
| 60 |
+
<show_in_website>1</show_in_website>
|
| 61 |
+
<show_in_store>1</show_in_store>
|
| 62 |
+
</tax>
|
| 63 |
+
</fields>
|
| 64 |
+
</general>
|
| 65 |
+
<standard translate="label">
|
| 66 |
+
<label>Tracking Settings</label>
|
| 67 |
+
<frontend_type>text</frontend_type>
|
| 68 |
+
<sort_order>20</sort_order>
|
| 69 |
+
<show_in_default>1</show_in_default>
|
| 70 |
+
<show_in_website>1</show_in_website>
|
| 71 |
+
<show_in_store>1</show_in_store>
|
| 72 |
+
<fields>
|
| 73 |
+
<active translate="label">
|
| 74 |
+
<label>Integrate tracking code?</label>
|
| 75 |
+
<frontend_type>select</frontend_type>
|
| 76 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 77 |
+
<sort_order>10</sort_order>
|
| 78 |
+
<show_in_default>1</show_in_default>
|
| 79 |
+
<show_in_website>1</show_in_website>
|
| 80 |
+
<show_in_store>1</show_in_store>
|
| 81 |
+
<comment>In case you already have the standard tracking code integrated you should set 'No' here.</comment>
|
| 82 |
+
</active>
|
| 83 |
+
<async translate="label">
|
| 84 |
+
<label>Activate asynchronous tracking?</label>
|
| 85 |
+
<frontend_type>select</frontend_type>
|
| 86 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 87 |
+
<sort_order>20</sort_order>
|
| 88 |
+
<show_in_default>1</show_in_default>
|
| 89 |
+
<show_in_website>1</show_in_website>
|
| 90 |
+
<show_in_store>1</show_in_store>
|
| 91 |
+
</async>
|
| 92 |
+
<storeviewcode translate="label">
|
| 93 |
+
<label>Activate StoreView code as area prefix?</label>
|
| 94 |
+
<frontend_type>select</frontend_type>
|
| 95 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 96 |
+
<sort_order>30</sort_order>
|
| 97 |
+
<show_in_default>1</show_in_default>
|
| 98 |
+
<show_in_website>1</show_in_website>
|
| 99 |
+
<show_in_store>1</show_in_store>
|
| 100 |
+
<comment>Should the StoreView code be set as prefix to the area path? Example: 'UK/products/product_a' instead of 'products/product_a', if your StoreView code is 'UK'.</comment>
|
| 101 |
+
</storeviewcode>
|
| 102 |
+
</fields>
|
| 103 |
+
</standard>
|
| 104 |
+
<ecommerce translate="label">
|
| 105 |
+
<label>Product Performance Reports (PPR)</label>
|
| 106 |
+
<frontend_type>text</frontend_type>
|
| 107 |
+
<sort_order>30</sort_order>
|
| 108 |
+
<show_in_default>1</show_in_default>
|
| 109 |
+
<show_in_website>1</show_in_website>
|
| 110 |
+
<show_in_store>1</show_in_store>
|
| 111 |
+
<fields>
|
| 112 |
+
<active translate="label">
|
| 113 |
+
<label>Enable PPR?</label>
|
| 114 |
+
<frontend_type>select</frontend_type>
|
| 115 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 116 |
+
<sort_order>10</sort_order>
|
| 117 |
+
<show_in_default>1</show_in_default>
|
| 118 |
+
<show_in_website>1</show_in_website>
|
| 119 |
+
<show_in_store>1</show_in_store>
|
| 120 |
+
<comment>If enabled, please ensure integrated standard tracking (above) OR existing tracking code equal or greater version 3.0.</comment>
|
| 121 |
+
</active>
|
| 122 |
+
<debug translate="label">
|
| 123 |
+
<label>Activate debug?</label>
|
| 124 |
+
<frontend_type>select</frontend_type>
|
| 125 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 126 |
+
<sort_order>20</sort_order>
|
| 127 |
+
<show_in_default>1</show_in_default>
|
| 128 |
+
<show_in_website>1</show_in_website>
|
| 129 |
+
<show_in_store>1</show_in_store>
|
| 130 |
+
<comment>If activated, debug data is printed to the browser console (instead of submitting it to etracker).</comment>
|
| 131 |
+
</debug>
|
| 132 |
+
</fields>
|
| 133 |
+
</ecommerce>
|
| 134 |
+
<developer translate="label">
|
| 135 |
+
<label>Developer</label>
|
| 136 |
+
<frontend_type>text</frontend_type>
|
| 137 |
+
<sort_order>100</sort_order>
|
| 138 |
+
<show_in_default>1</show_in_default>
|
| 139 |
+
<fields>
|
| 140 |
+
<log translate="label">
|
| 141 |
+
<label>Activate logging?</label>
|
| 142 |
+
<frontend_type>select</frontend_type>
|
| 143 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 144 |
+
<sort_order>10</sort_order>
|
| 145 |
+
<show_in_default>1</show_in_default>
|
| 146 |
+
<comment>If activated, log will be written to file 'etracker.log'.</comment>
|
| 147 |
+
</log>
|
| 148 |
+
</fields>
|
| 149 |
+
</developer>
|
| 150 |
+
</groups>
|
| 151 |
+
</etracker>
|
| 152 |
+
</sections>
|
| 153 |
+
</config>
|
app/design/frontend/base/default/layout/etracker.xml
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Magento
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
| 9 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
| 10 |
+
* It is also available through the world-wide-web at this URL:
|
| 11 |
+
* http://opensource.org/licenses/afl-3.0.php
|
| 12 |
+
* If you did not receive a copy of the license and are unable to
|
| 13 |
+
* obtain it through the world-wide-web, please send an email
|
| 14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 15 |
+
*
|
| 16 |
+
* DISCLAIMER
|
| 17 |
+
*
|
| 18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 19 |
+
* versions in the future. If you wish to customize Magento for your
|
| 20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 21 |
+
*
|
| 22 |
+
* @category design
|
| 23 |
+
* @package base_default
|
| 24 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
| 25 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
| 26 |
+
*/
|
| 27 |
+
|
| 28 |
+
-->
|
| 29 |
+
<layout version="0.1.0">
|
| 30 |
+
<default>
|
| 31 |
+
<reference name="after_body_start">
|
| 32 |
+
<block type="etracker/track" name="etracker" template="etracker/track.phtml" />
|
| 33 |
+
<block type="etracker/track" name="etracker_ppr" template="etracker/ppr.phtml" />
|
| 34 |
+
</reference>
|
| 35 |
+
</default>
|
| 36 |
+
|
| 37 |
+
<checkout_cart_index translate="label">
|
| 38 |
+
<reference name="checkout.cart">
|
| 39 |
+
<block type="etracker/track" name="etracker_cart" template="etracker/checkout/cart.phtml"/>
|
| 40 |
+
</reference>
|
| 41 |
+
</checkout_cart_index>
|
| 42 |
+
|
| 43 |
+
<checkout_onepage_index translate="label">
|
| 44 |
+
<reference name="checkout.onepage">
|
| 45 |
+
<!--<action method="setTemplate"><value>etracker/checkout/onepage.phtml</value></action>-->
|
| 46 |
+
<block type="checkout/onepage" name="etracker_onepage" template="etracker/checkout/et_onepage.phtml"/>
|
| 47 |
+
</reference>
|
| 48 |
+
</checkout_onepage_index>
|
| 49 |
+
|
| 50 |
+
<catalog_product_view translate="label">
|
| 51 |
+
<reference name="product.info.media">
|
| 52 |
+
<block type="etracker/track" name="etracker_img" template="etracker/product_media.phtml"/>
|
| 53 |
+
</reference>
|
| 54 |
+
</catalog_product_view>
|
| 55 |
+
|
| 56 |
+
</layout>
|
app/design/frontend/base/default/template/etracker/checkout/cart.phtml
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php if ($this->isPprActive()): ?>
|
| 2 |
+
<?php /* @var $cart Mage_Sales_Model_Quote */ ?>
|
| 3 |
+
<?php $cart = Mage::getSingleton('checkout/session')->getQuote(); ?>
|
| 4 |
+
<?php if ($cart): ?>
|
| 5 |
+
<?php $products = array(); ?>
|
| 6 |
+
<?php /* @var $item Mage_Sales_Model_Quote_Item */ ?>
|
| 7 |
+
<?php foreach($cart->getAllVisibleItems() as $item): ?>
|
| 8 |
+
<?php $products[$item->getProductId()] = $item->getQty() ? $item->getQty() : 1; ?>
|
| 9 |
+
<?php endforeach; ?>
|
| 10 |
+
<?php Mage::getSingleton('customer/session')->setData('event_sales_quote_remove_item_product', $products); ?>
|
| 11 |
+
|
| 12 |
+
<?php if ($items = $this->getPprRemoveFromBasketProductData()): ?>
|
| 13 |
+
<script type="text/javascript">
|
| 14 |
+
$$('button#empty_cart_button').each(function(element) {
|
| 15 |
+
element.onmouseup = function() {
|
| 16 |
+
<?php $i=0; foreach($items as $data): ?>
|
| 17 |
+
var rem_product_<?php echo $i ?> = <?php echo Mage::helper('core')->jsonEncode($data['data']) ?>;
|
| 18 |
+
etCommerce.sendEvent('removeFromBasket', rem_product_<?php echo $i ?>, <?php echo $data['qty'] ?>, '<?php echo $this->getQuoteId() ?>');
|
| 19 |
+
<?php $i++; ?>
|
| 20 |
+
<?php endforeach; ?>
|
| 21 |
+
}
|
| 22 |
+
});
|
| 23 |
+
</script>
|
| 24 |
+
<?php endif ?>
|
| 25 |
+
|
| 26 |
+
<?php endif; ?>
|
| 27 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/etracker/checkout/et_onepage.phtml
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
function getIsCheckoutCartViewed() {
|
| 3 |
+
$session = Mage::getSingleton('core/session');
|
| 4 |
+
$isBasketViewed = $session->getData(Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CART_VIEW);
|
| 5 |
+
if ($isBasketViewed) {
|
| 6 |
+
$session->unsetData(Etracker_Etracker_Helper_Data::SESS_KEY_LAST_CART_VIEW);
|
| 7 |
+
return true;
|
| 8 |
+
}
|
| 9 |
+
return false;
|
| 10 |
+
}
|
| 11 |
+
function isCustomerLoginRegistered() {
|
| 12 |
+
$session = Mage::getSingleton('customer/session');
|
| 13 |
+
$isLoginRegistered = $session->getData('event_customer_login');
|
| 14 |
+
if (!$isLoginRegistered) {
|
| 15 |
+
$isLoginRegistered = Mage::registry('event_customer_login');
|
| 16 |
+
}
|
| 17 |
+
return !empty($isLoginRegistered);
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
?>
|
| 22 |
+
|
| 23 |
+
<script type="text/javascript">
|
| 24 |
+
var steps = new Array();
|
| 25 |
+
var cart = "<?php echo Mage::helper('etracker')->__('Cart') ?>";
|
| 26 |
+
var areas = "<?php echo Mage::helper('etracker')->__('Checkout') .'/'. Mage::helper('etracker')->__('Onepage') ?>";
|
| 27 |
+
var target = cart + "/<?php echo Mage::helper('etracker')->__('Onepage') ?>";
|
| 28 |
+
<?php foreach($this->getSteps() as $_stepId => $_stepInfo): ?>
|
| 29 |
+
steps["<?php echo $_stepId ?>"] = "<?php echo $_stepInfo['label'] ?>";
|
| 30 |
+
<?php endforeach; ?>
|
| 31 |
+
<?php $steps = $this->getSteps(); ?>
|
| 32 |
+
<?php $activeStep = $steps[$this->getActiveStep()]; ?>
|
| 33 |
+
targetPath = target + "/<?php echo $activeStep['label'] ?>";
|
| 34 |
+
try {
|
| 35 |
+
<?php if (!getIsCheckoutCartViewed() && !isCustomerLoginRegistered()): ?>
|
| 36 |
+
//alert('Wrapper: '+ areas + ' * ' + cart);
|
| 37 |
+
et_eC_Wrapper("<?php echo Mage::helper('etracker')->getSecurityCode() ?>", cart, areas, "", "", cart);
|
| 38 |
+
<?php endif; ?>
|
| 39 |
+
|
| 40 |
+
<?php if (!isCustomerLoginRegistered()): ?>
|
| 41 |
+
//alert('Wrapper: '+ areas + ' * ' + target);
|
| 42 |
+
et_eC_Wrapper("<?php echo Mage::helper('etracker')->getSecurityCode() ?>", areas, areas, "", "", target);
|
| 43 |
+
<?php endif; ?>
|
| 44 |
+
|
| 45 |
+
//alert('Wrapper: '+ areas + ' * ' + targetPath);
|
| 46 |
+
et_eC_Wrapper("<?php echo Mage::helper('etracker')->getSecurityCode() ?>", "<?php echo $activeStep['label'] ?>", areas, "", "", targetPath);
|
| 47 |
+
} catch(err) { }
|
| 48 |
+
|
| 49 |
+
<?php if ($ccKey = Mage::helper('etracker')->getCcKey()): ?>
|
| 50 |
+
try {
|
| 51 |
+
et_cc_wrapper("<?php echo $ccKey ?>", {cc_pagename:"<?php echo $activeStep['label'] ?>"});
|
| 52 |
+
} catch(err) { }
|
| 53 |
+
<?php endif; ?>
|
| 54 |
+
|
| 55 |
+
var stepsDone = new Array("login", "billing");
|
| 56 |
+
Checkout.prototype.gotoSection = function(section) {
|
| 57 |
+
var stepVirtWrap = new Array();
|
| 58 |
+
var targetCurrent = target;
|
| 59 |
+
for (var key in steps) {
|
| 60 |
+
//alert('For section '+ section + ': ' + key + '->' + steps[key]);
|
| 61 |
+
targetCurrent += "/"+steps[key];
|
| 62 |
+
if (key == section) {
|
| 63 |
+
stepsDone.push(key);
|
| 64 |
+
break;
|
| 65 |
+
} else {
|
| 66 |
+
if (stepsDone.indexOf(key) == -1) {
|
| 67 |
+
//alert('setting virt wrap section='+key + ' / target='+targetCurrent);
|
| 68 |
+
stepVirtWrap['section'] = key;
|
| 69 |
+
stepVirtWrap['target'] = targetCurrent;
|
| 70 |
+
stepsDone.push(key);
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
if (stepVirtWrap['section']) {
|
| 75 |
+
try {
|
| 76 |
+
//alert('Virtual step: '+stepVirtWrap['target'] + ', pagename = ' + steps[stepVirtWrap['section']]);
|
| 77 |
+
et_eC_Wrapper("<?php echo Mage::helper('etracker')->getSecurityCode() ?>", steps[stepVirtWrap['section']], areas, "", "", stepVirtWrap['target']);
|
| 78 |
+
<?php if ($ccKey = Mage::helper('etracker')->getCcKey()): ?>
|
| 79 |
+
et_cc_wrapper("<?php echo $ccKey ?>", {cc_pagename:steps[stepVirtWrap['section']]});
|
| 80 |
+
<?php endif; ?>
|
| 81 |
+
} catch (err) { }
|
| 82 |
+
}
|
| 83 |
+
try {
|
| 84 |
+
//alert('Usual step: ' + targetCurrent);
|
| 85 |
+
et_eC_Wrapper("<?php echo Mage::helper('etracker')->getSecurityCode() ?>", steps[section], areas, "", "", targetCurrent);
|
| 86 |
+
} catch(err) { }
|
| 87 |
+
|
| 88 |
+
<?php if ($ccKey = Mage::helper('etracker')->getCcKey()): ?>
|
| 89 |
+
try {
|
| 90 |
+
et_cc_wrapper("<?php echo $ccKey ?>", {cc_pagename:steps[section]});
|
| 91 |
+
} catch(err) { }
|
| 92 |
+
<?php endif; ?>
|
| 93 |
+
|
| 94 |
+
section = $('opc-'+section);
|
| 95 |
+
section.addClassName('allow');
|
| 96 |
+
this.accordion.openSection(section);
|
| 97 |
+
};
|
| 98 |
+
</script>
|
app/design/frontend/base/default/template/etracker/ppr.phtml
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
|
| 16 |
+
/* @var $this Etracker_Etracker_Block_Track */
|
| 17 |
+
$helper = Mage::helper('etracker');
|
| 18 |
+
?>
|
| 19 |
+
<script type="text/javascript">
|
| 20 |
+
if (typeof etCommerce != "object") {
|
| 21 |
+
etCommerce = {
|
| 22 |
+
sendEvent: function() {},
|
| 23 |
+
attachEvent: function() {}
|
| 24 |
+
};
|
| 25 |
+
}
|
| 26 |
+
</script>
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
<?php if ($this->isPprActive()): ?>
|
| 30 |
+
|
| 31 |
+
<?php if ($this->isPprDebugActive() && !$this->isAsyncActive()): ?>
|
| 32 |
+
<script type="text/javascript">
|
| 33 |
+
etCommerce.debugMode = true;
|
| 34 |
+
</script>
|
| 35 |
+
<?php endif; ?>
|
| 36 |
+
|
| 37 |
+
<script type="text/javascript">
|
| 38 |
+
var etCommercePrepareEvents = [];
|
| 39 |
+
<?php if ($product = $this->getPprViewProductData()): ?>
|
| 40 |
+
var product = <?php echo Mage::helper('core')->jsonEncode($product) ?>;
|
| 41 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 42 |
+
etCommercePrepareEvents.push(['sendEvent', 'viewProduct', product, '<?php echo $this->getQuoteId() ?>']);
|
| 43 |
+
<?php else: ?>
|
| 44 |
+
etCommerce.sendEvent('viewProduct', product, '<?php echo $this->getQuoteId() ?>');
|
| 45 |
+
<?php endif; ?>
|
| 46 |
+
<?php endif ?>
|
| 47 |
+
<?php if ($items = $this->getPprInsertToBasketProductData()): ?>
|
| 48 |
+
<?php $i=0; foreach($items as $data): ?>
|
| 49 |
+
var add_product_<?php echo $i ?> = <?php echo Mage::helper('core')->jsonEncode($data['data']) ?>;
|
| 50 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 51 |
+
etCommercePrepareEvents.push(['sendEvent', 'insertToBasket', add_product_<?php echo $i ?>, <?php echo $data['qty'] ?>, '<?php echo $this->getQuoteId() ?>']);
|
| 52 |
+
<?php else: ?>
|
| 53 |
+
etCommerce.sendEvent('insertToBasket', add_product_<?php echo $i ?>, <?php echo $data['qty'] ?>, '<?php echo $this->getQuoteId() ?>');
|
| 54 |
+
<?php endif; ?>
|
| 55 |
+
<?php $i++; ?>
|
| 56 |
+
<?php endforeach; ?>
|
| 57 |
+
<?php endif ?>
|
| 58 |
+
<?php if ($items = $this->getPprRemoveFromBasketProductData()): ?>
|
| 59 |
+
<?php $i=0; foreach($items as $data): ?>
|
| 60 |
+
var rem_product_<?php echo $i ?> = <?php echo Mage::helper('core')->jsonEncode($data['data']) ?>;
|
| 61 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 62 |
+
etCommercePrepareEvents.push(['sendEvent', 'removeFromBasket', rem_product_<?php echo $i ?>, <?php echo $data['qty'] ?>, '<?php echo $this->getQuoteId() ?>']);
|
| 63 |
+
<?php else: ?>
|
| 64 |
+
etCommerce.sendEvent('removeFromBasket', rem_product_<?php echo $i ?>, <?php echo $data['qty'] ?>, '<?php echo $this->getQuoteId() ?>');
|
| 65 |
+
<?php endif; ?>
|
| 66 |
+
<?php $i++; ?>
|
| 67 |
+
<?php endforeach; ?>
|
| 68 |
+
<?php endif ?>
|
| 69 |
+
<?php if ($data = $this->getPprOrderData()): ?>
|
| 70 |
+
var order = <?php echo Mage::helper('core')->jsonEncode($data) ?>;
|
| 71 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 72 |
+
etCommercePrepareEvents.push(['sendEvent', 'order', order]);
|
| 73 |
+
<?php else: ?>
|
| 74 |
+
etCommerce.sendEvent('order', order);
|
| 75 |
+
<?php endif; ?>
|
| 76 |
+
<?php endif; ?>
|
| 77 |
+
</script>
|
| 78 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/etracker/product_media.phtml
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
?>
|
| 16 |
+
|
| 17 |
+
<?php $product = Mage::registry('current_product'); ?>
|
| 18 |
+
<?php if ($product): ?>
|
| 19 |
+
<script>
|
| 20 |
+
$$('div.more-views a').each(function(element){
|
| 21 |
+
element.onmouseup = function() {
|
| 22 |
+
ET_Event.eventStart('<?php echo $this->jsTranslAndEscape('Product Image') ?>', '<?php echo $this->jsTranslAndEscape('Product').'#'.$product->getSku() ?>', '<?php echo $this->jsTranslAndEscape('Zoom') ?>');
|
| 23 |
+
return false;
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
})
|
| 27 |
+
$$('img#image').each(function(element) {
|
| 28 |
+
element.ondblclick = function() {
|
| 29 |
+
ET_Event.eventStart('<?php echo $this->jsTranslAndEscape('Product Main Image') ?>', '<?php echo $this->jsTranslAndEscape('Product').'#'.$product->getSku() ?>', '<?php echo $this->jsTranslAndEscape('Zoom') ?>');
|
| 30 |
+
return false;
|
| 31 |
+
}
|
| 32 |
+
})
|
| 33 |
+
</script>
|
| 34 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/etracker/track.phtml
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* justselling Germany Ltd. EULA
|
| 4 |
+
* http://www.justselling.de/
|
| 5 |
+
* Read the license at http://www.justselling.de/lizenz
|
| 6 |
+
*
|
| 7 |
+
* Do not edit or add to this file, please refer to http://www.justselling.de for more information.
|
| 8 |
+
*
|
| 9 |
+
* @category justselling
|
| 10 |
+
* @package justselling_etracker
|
| 11 |
+
* @copyright Copyright (c) 2013 justselling Germany Ltd. (http://www.justselling.de)
|
| 12 |
+
* @license http://www.justselling.de/lizenz
|
| 13 |
+
* @author Bodo Schulte
|
| 14 |
+
*/
|
| 15 |
+
|
| 16 |
+
/* @var $this Etracker_Etracker_Block_Track */
|
| 17 |
+
$helper = Mage::helper('etracker');
|
| 18 |
+
?>
|
| 19 |
+
<?php if ($this->isEnabled()): ?>
|
| 20 |
+
|
| 21 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 22 |
+
<script type="text/javascript">
|
| 23 |
+
var clfuncs = [];
|
| 24 |
+
var funcs = [];
|
| 25 |
+
var ET_Event = {
|
| 26 |
+
loginSuccess: function() { clfuncs.push(['ET_Event', 'loginSuccess', arguments])},
|
| 27 |
+
eventStart: function() { clfuncs.push(['ET_Event', 'eventStart', arguments]) }
|
| 28 |
+
}
|
| 29 |
+
var et_eC_Wrapper = function() { funcs.push(['et_eC_Wrapper', arguments]) };
|
| 30 |
+
var et_cc_wrapper = function() { funcs.push(['et_cc_wrapper', arguments]) };
|
| 31 |
+
</script>
|
| 32 |
+
<?php endif; ?>
|
| 33 |
+
|
| 34 |
+
<?php if ($this->isTrackingCodeToBeIncluded()): ?>
|
| 35 |
+
<?php if ($this->isAsyncActive()): ?>
|
| 36 |
+
<!-- BEGIN etracker Tracklet 3.0 async -->
|
| 37 |
+
|
| 38 |
+
<script type="text/javascript">
|
| 39 |
+
function delayedTrack() {
|
| 40 |
+
try {
|
| 41 |
+
clfuncs.forEach( function (item) {
|
| 42 |
+
var etdf = item[1];
|
| 43 |
+
var obj = window[item[0]];
|
| 44 |
+
switch (item[2].length) {
|
| 45 |
+
case 0: obj[etdf](); break;
|
| 46 |
+
case 1: obj[etdf](item[2][0]); break;
|
| 47 |
+
case 2: obj[etdf](item[2][0], item[2][1]); break;
|
| 48 |
+
default: obj[etdf](item[2][0], item[2][1], item[2][2]); break;
|
| 49 |
+
};
|
| 50 |
+
});
|
| 51 |
+
clfuncs = [];
|
| 52 |
+
funcs.forEach( function(item) {
|
| 53 |
+
var obj = window[item[0]];
|
| 54 |
+
obj.apply(null, item[1]);
|
| 55 |
+
});
|
| 56 |
+
funcs = [];
|
| 57 |
+
} catch (err) { }
|
| 58 |
+
}
|
| 59 |
+
</script>
|
| 60 |
+
|
| 61 |
+
<script type="text/javascript">
|
| 62 |
+
function et_params() {
|
| 63 |
+
delayedTrack();
|
| 64 |
+
et_pagename = "<?php echo rawurlencode($this->getPageName()) ?>";
|
| 65 |
+
et_areas = "<?php echo rawurlencode($this->getAreas()) ?>";
|
| 66 |
+
<?php if ($this->isCheckoutCartView() || $this->isCheckout('multishipping') || $this->isCheckoutSuccess()): ?>
|
| 67 |
+
et_target = "<?php echo rawurlencode($this->_getOrdersEtTarget()) ?>";
|
| 68 |
+
<?php endif; ?>
|
| 69 |
+
<?php if ($this->_getOrdersIdTrackingCode()) : ?>
|
| 70 |
+
et_tsale = "<?php echo rawurlencode($this->_getOrderTsale()) ?>";
|
| 71 |
+
et_tval = "<?php echo rawurlencode($this->_getOrdersValueTrackingCode()) ?>";
|
| 72 |
+
et_tonr = "<?php echo rawurlencode($this->_getOrdersIdTrackingCode()) ?>";
|
| 73 |
+
et_basket = "<?php echo rawurlencode($this->_getOrdersBasketTrackingCode()) ?>";
|
| 74 |
+
<?php endif; ?>
|
| 75 |
+
<?php if ($this->isPprActive() && $this->isPprDebugActive()): ?>
|
| 76 |
+
etCommerce.debugMode = true;
|
| 77 |
+
<?php endif; ?>
|
| 78 |
+
}
|
| 79 |
+
</script>
|
| 80 |
+
|
| 81 |
+
<script type="text/javascript">
|
| 82 |
+
(function(){
|
| 83 |
+
var et_init = function(){
|
| 84 |
+
var et = document.createElement('script');
|
| 85 |
+
et.src = 'http'+('https:'==document.location.protocol?'s':'') +'://code.etracker.com/a.js?et=<?php echo $this->getSecurityCode() ?>';
|
| 86 |
+
var head = document.getElementsByTagName('head')[0]; head.insertBefore(et, head.firstChild);
|
| 87 |
+
};
|
| 88 |
+
window.addEventListener
|
| 89 |
+
? window.addEventListener('load', et_init, false)
|
| 90 |
+
: window.attachEvent('onload', et_init);
|
| 91 |
+
})();
|
| 92 |
+
</script>
|
| 93 |
+
|
| 94 |
+
<!-- etracker CODE NOSCRIPT 3.0 -->
|
| 95 |
+
<noscript>
|
| 96 |
+
<p style="display:none;"><a href='https://www.etracker.de/app?et=<?php echo $this->getSecurityCode() ?>'>
|
| 97 |
+
<img style='border:0px;' alt='' src='https://www.etracker.de/cnt.php?et=<?php echo $this->getSecurityCode() ?>&v=3.0&java=n&et_easy=0&et_pagename=<?php echo rawurlencode($this->getPageName()) ?>&et_areas=<?php echo rawurlencode($this->getAreas()) ?>&et_target=<?php echo rawurlencode($this->_getOrdersEtTarget()) ?>&et_basket=<?php echo rawurlencode($this->_getOrdersBasketTrackingCode()) ?>&et_tonr=<?php echo rawurlencode($this->_getOrdersIdTrackingCode()) ?>&et_tval=<?php echo rawurlencode($this->_getOrdersValueTrackingCode())?>&et_tsale=<?php echo rawurlencode($this->_getOrderTsale()) ?>' /></a></p>
|
| 98 |
+
</noscript>
|
| 99 |
+
<!-- etracker CODE NOSCRIPT END-->
|
| 100 |
+
<!-- etracker Tracklet END -->
|
| 101 |
+
|
| 102 |
+
<?php else: // is async active? ?>
|
| 103 |
+
|
| 104 |
+
<!-- Copyright (c) 2000-2013 etracker GmbH. All rights reserved. -->
|
| 105 |
+
<!-- This material may not be reproduced, displayed, modified or distributed -->
|
| 106 |
+
<!-- without the express prior written permission of the copyright holder. -->
|
| 107 |
+
|
| 108 |
+
<!-- BEGIN etracker Tracklet 3.0 -->
|
| 109 |
+
<script type="text/javascript">document.write(String.fromCharCode(60)+'script type="text/javascript" src="http'+("https:"==document.location.protocol?"s":"")+'://code.etracker.com/t.js?et=<?php echo $this->getSecurityCode() ?>">'+String.fromCharCode(60)+'/script>');</script>
|
| 110 |
+
|
| 111 |
+
<!-- etracker PARAMETER 3.0 -->
|
| 112 |
+
<script type="text/javascript">
|
| 113 |
+
var et_pagename = "<?php echo rawurlencode($this->getPageName()) ?>";
|
| 114 |
+
var et_areas = "<?php echo rawurlencode($this->getAreas()) ?>";
|
| 115 |
+
<?php if ($this->isCheckoutCartView() || $this->isCheckout('multishipping') || $this->isCheckoutSuccess()): ?>
|
| 116 |
+
var et_target = "<?php echo rawurlencode($this->_getOrdersEtTarget()) ?>";
|
| 117 |
+
<?php endif; ?>
|
| 118 |
+
<?php if ($this->_getOrdersIdTrackingCode()) : ?>
|
| 119 |
+
var et_tsale = "<?php echo rawurlencode($this->_getOrderTsale()); ?>";
|
| 120 |
+
var et_tval = "<?php echo rawurlencode($this->_getOrdersValueTrackingCode()); ?>";
|
| 121 |
+
var et_tonr = "<?php echo rawurlencode($this->_getOrdersIdTrackingCode()); ?>";
|
| 122 |
+
var et_basket = "<?php echo rawurlencode($this->_getOrdersBasketTrackingCode()); ?>";
|
| 123 |
+
<?php endif; ?>
|
| 124 |
+
</script>
|
| 125 |
+
<!-- etracker PARAMETER END -->
|
| 126 |
+
|
| 127 |
+
<script type="text/javascript">_etc();</script>
|
| 128 |
+
|
| 129 |
+
<noscript>
|
| 130 |
+
<p style="display:none;"><a href='https://www.etracker.de/app?et=<?php echo $this->getSecurityCode() ?>'>
|
| 131 |
+
<img style='border:0px;' alt='' src='https://www.etracker.de/cnt.php?et=<?php echo $this->getSecurityCode() ?>&v=3.0&java=n&et_easy=0&et_pagename=<?php echo rawurlencode($this->getPageName()) ?>&et_areas=<?php echo rawurlencode($this->getAreas()) ?>&et_target=<?php echo rawurlencode($this->_getOrdersEtTarget()) ?>&et_basket=<?php echo rawurlencode($this->_getOrdersBasketTrackingCode()) ?>&et_tonr=<?php echo rawurlencode($this->_getOrdersIdTrackingCode()) ?>&et_tval=<?php echo rawurlencode($this->_getOrdersValueTrackingCode())?>&et_tsale=<?php echo rawurlencode($this->_getOrderTsale()) ?>' /></a></p>
|
| 132 |
+
</noscript>
|
| 133 |
+
<!-- etracker CODE NOSCRIPT END-->
|
| 134 |
+
<!-- etracker CODE END -->
|
| 135 |
+
|
| 136 |
+
<?php endif; // end is async active ?>
|
| 137 |
+
|
| 138 |
+
|
| 139 |
+
<?php if ($this->isCheckout('multishipping') && $this->getCcKey()): ?>
|
| 140 |
+
<script type="text/javascript">
|
| 141 |
+
et_cc_wrapper('<?php echo $this->getCcKey() ?>', {cc_pagename:"<?php echo $this->getPageName() ?>"});
|
| 142 |
+
</script>
|
| 143 |
+
<?php endif; ?>
|
| 144 |
+
|
| 145 |
+
<?php if ($this->isCheckout('multishipping') && $this->isCheckoutMultiShippingFirstStep()): ?>
|
| 146 |
+
<script type="text/javascript">
|
| 147 |
+
var pagename = '<?php echo $helper->__('Checkout').'_'.$helper->__('Multishipping') ?>';
|
| 148 |
+
var target = '<?php echo $helper->__('Cart').'/'.$helper->__('Multishipping') ?>';
|
| 149 |
+
et_eC_Wrapper('<?php echo $this->getSecurityCode() ?>', pagename, "<?php echo $this->getAreas() ?>", "", "", target);
|
| 150 |
+
</script>
|
| 151 |
+
<?php endif; ?>
|
| 152 |
+
|
| 153 |
+
<?php /* Even in case the standard-code is deactivated, this Events are triggered */ ?>
|
| 154 |
+
<?php if ($value = $this->isEventRegistered('event_customer_login', true)): ?>
|
| 155 |
+
<script type="text/javascript">
|
| 156 |
+
ET_Event.loginSuccess('<?php echo $this->jsTranslAndEscape('Customer').'#'.$value ?>', '');
|
| 157 |
+
</script>
|
| 158 |
+
<?php endif; ?>
|
| 159 |
+
|
| 160 |
+
<?php if ($product = $this->isEventRegistered('event_wishlist_add_product')): ?>
|
| 161 |
+
<?php $productId = $product ? $product->getSku() : ''; ?>
|
| 162 |
+
<script type="text/javascript">
|
| 163 |
+
ET_Event.eventStart('<?php echo $this->jsTranslAndEscape('Wishlist') ?>', '<?php echo $this->jsTranslAndEscape('Product').' '.$productId ?>', '<?php echo $this->jsTranslAndEscape('Add Product') ?>');
|
| 164 |
+
</script>
|
| 165 |
+
<?php endif; ?>
|
| 166 |
+
|
| 167 |
+
<?php endif; // isTrackingCodeToBeIncluded ?>
|
| 168 |
+
|
| 169 |
+
<?php endif; // isEnabled ?>
|
app/etc/modules/Etracker_Etracker.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Etracker_Etracker>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>community</codePool>
|
| 7 |
+
</Etracker_Etracker>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
app/locale/de_DE/Etracker_Etracker.csv
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"checkout","Checkout"
|
| 2 |
+
"cart","Warenkorb"
|
| 3 |
+
"cms","CMS-Seite"
|
| 4 |
+
"catalogsearch","Suche"
|
| 5 |
+
"product_compare","Produktvergleich"
|
| 6 |
+
"result","Ergebnis"
|
| 7 |
+
"Order Success","Bestellung"
|
| 8 |
+
"Discount","Rabatt"
|
| 9 |
+
"Discounts","Rabatte"
|
| 10 |
+
"Coupons","Gutscheine"
|
| 11 |
+
"etracker security code","etracker Sicherheitscode"
|
| 12 |
+
"Please enter the security code here to overall enable tracking. You'll find the code online in Settings > Setup/Tracking code > etracker security code.","Bitte geben Sie hier den Sicherheitscode ein, um das Tracking generell zu ermöglichen. Sie finden den Code online unter <b>Einstellungen > Setup/Tracking Code > etracker Sicherheitscode</b>"
|
| 13 |
+
"Campaign Control secure key","Sicherheitsschlüssel für Campaign Control"
|
| 14 |
+
"Please request your Campaign Control secure key from etracker.","Bitte fordern Sie Ihren Sicherheitsschlüssel für Campaign Control bei etracker an."
|
| 15 |
+
"Submit prices/amounts","Übergabe von Preisen/Beträgen"
|
| 16 |
+
"Tracking Settings","Einstellungen zum Tracking"
|
| 17 |
+
"Integrate tracking code?","Tracking Code integrieren?"
|
| 18 |
+
"In case you already have the standard tracking code integrated you should set 'No' here.","Falls Sie den Standard-Tracking-Code schon integriert haben, sollten Sie hier 'Nein' wählen."
|
| 19 |
+
"Activate asynchronous tracking?","Asynchrones Tracking aktivieren?"
|
| 20 |
+
"Activate StoreView code as area prefix?","StoreView Code als Area-Präfix aktivieren?"
|
| 21 |
+
"Should the StoreView code be set as prefix to the area path? Example: 'UK/products/product_a' instead of 'products/product_a', if your StoreView code is 'UK'.","Soll der StoreView Code als Präfix vor den Area-Pfad gesetzt werden? Beispiel: 'UK/products/product_a' statt 'products/product_a', wenn Ihr StoreView Code 'UK' ist."
|
| 22 |
+
"Enable PPR?","PPR aktivieren?"
|
| 23 |
+
"If enabled, please ensure integrated standard tracking (above) OR existing tracking code equal or greater version 3.0.","Bei Aktivierung bitte sicherstellen, dass der Standard-Tracking-Code integriert ist (siehe oben) ODER die existierende Tracking Code Version 3.0 oder höher integriert ist."
|
| 24 |
+
"Activate debug?","Debug aktivieren?"
|
| 25 |
+
"If activated, debug data is printed to the browser console (instead of submitting it to etracker).","Bei Aktivierung werden die Debug-Daten in der Browser-Konsole ausgegeben (anstatt sie an etracker zu senden)."
|
| 26 |
+
"Activate logging?","Protokollierung aktivieren?"
|
| 27 |
+
"If activated, log will be written to file 'etracker.log'.","Bei Aktivierung wird das Protokoll in die Datei 'etracker.log' geschrieben."
|
| 28 |
+
|
| 29 |
+
|
app/locale/en_US/Etracker_Etracker.csv
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
"catalogsearch","Search"
|
| 2 |
+
"cms","CMS-Page"
|
package.xml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>etracker_connect</name>
|
| 4 |
+
<version>1.0.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license>GPL</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Gezielte Shop-Analyse mit den etracker Optimisation Suites.</summary>
|
| 10 |
+
<description><p>
|
| 11 |
+
Die etracker GmbH aus Hamburg ist mit mehr als 110.000 Kunden ein in Europa führender Anbieter von Produkten und Dienstleistungen zur Optimierung von Online-Shops, Websites und Online-Marketing-Maßnahmen.
|
| 12 |
+
</p>
|
| 13 |
+
<p>
|
| 14 |
+
Die etracker Optimisation Suites integrieren alle für die jeweilige Zielgruppe wichtigen Funktionalitäten zur <strong>Marketing-, Usability-, Zufriedenheits-, Web- und Shop-Optimierung</strong>, und wurden bereits mehrfach mit Innovationspreisen ausgezeichnet. Die Lösungen überzeugen zudem durch ihr hervorragendes Preis-Leistungs-Verhältnis, sind wahlweise im SaaS-Modell oder als Inhouse-Lösung erhältlich – und sie sind zu 100 Prozent datenschutzkonform.
|
| 15 |
+
</p>
|
| 16 |
+
<h3>1 Extension, 5 Produkte</h3>
|
| 17 |
+
<ul>
|
| 18 |
+
<li>Campaign Control (inklusive Product Performance Report)</li>
|
| 19 |
+
<li>Visitor Motion</li>
|
| 20 |
+
<li>Visitor Voice</li>
|
| 21 |
+
<li>Page Feedback</li>
|
| 22 |
+
<li>Web Analytics</li>
|
| 23 |
+
</ul>
|
| 24 |
+

|
| 25 |
+
<h3>Highlight: Product Performance Report</h3>
|
| 26 |
+
<p>
|
| 27 |
+
Die etracker Extension ermöglicht Ihnen die einfache Integration des neuen Product Performance Reports. Die Extension übernimmt hierfür automatisch die korrekte Übergabe der wichtigsten Events des Einkaufs – Produkt gesehen, Produkt in den Warenkorb gelegt, Produkt aus dem Warenkorb gelöscht, Produkt bestellt und gegebenenfalls Produkt retourniert. So können Sie auf sehr intelligente und einfache Art und Weise die <strong>Sortimentsgestaltung</strong> mit der <strong>Marketing-Kommunikation</strong> und <strong>Shop-Optimierung</strong> verbinden.
|
| 28 |
+
</p>
|
| 29 |
+
<p>
|
| 30 |
+
Hierbei kommt die innovative High-Performance Technologie etracker <strong>Dynamic Discovery</strong> zum Einsatz, mit der Sie selbst große Datenmengen auf jeder beliebigen Detailebene in Sekundenschnelle analysieren. Sie können die Analyse-Perspektive via <strong>Drag</description>
|
| 31 |
+
<notes>Initial Stable Version</notes>
|
| 32 |
+
<authors><author><name>Justselling Germany Limited</name><user>auto-converted</user><email>info@justselling.de</email></author></authors>
|
| 33 |
+
<date>2013-08-12</date>
|
| 34 |
+
<time>14:50:29</time>
|
| 35 |
+
<contents><target name="magecommunity"><dir name="Etracker"><dir name="Etracker"><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="View"><file name="Media.php" hash="5a13620e6fd24ef3757d7fd33d6a3a89"/></dir></dir></dir><dir name="Checkout"><file name="Cart.php" hash="61c0729778514ab0bcdafb78d2fdb79e"/><file name="Onepage.php" hash="d251df39cec5b917e443cb4b66a5347e"/></dir><file name="Track.php" hash="9260415b17961629c43fd731c9562083"/></dir><dir name="Helper"><file name="Data.php" hash="a8daaab21b10ec346b76a33039a148db"/></dir><dir name="Model"><dir name="Admin"><dir name="System"><dir name="Config"><dir name="Source"><file name="InclTax.php" hash="fa2c5583dbb3d4792f17420bb4b2a83e"/></dir></dir></dir></dir><file name="Observer.php" hash="7b92fe745c4e555ed6ba47dce71f78f6"/></dir><dir name="etc"><file name="adminhtml.xml" hash="4eee22fc1dd9e00ccc2ba17fff2c282e"/><file name="config.xml" hash="43e2e295256b777994f13ef322a7f11d"/><file name="system.xml" hash="e622fe7d2db9633816ad12d17aff2068"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="etracker.xml" hash="03425af629e1b36dc1f4785454955bd8"/></dir><dir name="template"><dir name="etracker"><dir name="checkout"><file name="cart.phtml" hash="495262401610c1129292f98b865974e1"/><file name="et_onepage.phtml" hash="975a80d842858e6daf2311732389122f"/></dir><file name="ppr.phtml" hash="6974161b448b65ca41239a8150da9399"/><file name="product_media.phtml" hash="62685ad4b81c8cdb8d3b34862417b4df"/><file name="track.phtml" hash="332aa2194d0750050de07dab08b35629"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Etracker_Etracker.xml" hash="03cd56f88dbab2daf24ed201d34ddc5b"/></dir></target><target name="magelocale"><dir name="de_DE"><file name="Etracker_Etracker.csv" hash="b9d76450a6f6205b13faaa19a027b304"/></dir><dir name="en_US"><file name="Etracker_Etracker.csv" hash="d62acdb902e80a282e13a85e852946b8"/></dir></target></contents>
|
| 36 |
+
<compatible/>
|
| 37 |
+
<dependencies/>
|
| 38 |
+
</package>
|
