Version Notes
v1.2.0
* Weekly email reports
* Fully compatible with OneStepCheckout
* Better tracking support for Paypal
* Better translation
* Added Modman file
Download this release
Release Info
Developer | Anatta Design |
Extension | AnattaDesign_AbandonedCarts |
Version | 1.2.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.2 to 1.2.0
- app/code/local/AnattaDesign/AbandonedCarts/Helper/Data.php +32 -20
- app/code/local/AnattaDesign/AbandonedCarts/Model/Checkout/Onepage/Observer.php +19 -1
- app/code/local/AnattaDesign/AbandonedCarts/Model/Mysql4/Osstatistics.php +9 -0
- app/code/local/AnattaDesign/AbandonedCarts/Model/Mysql4/Osstatistics/Collection.php +9 -0
- app/code/local/AnattaDesign/AbandonedCarts/Model/Observer.php +94 -2
- app/code/local/AnattaDesign/AbandonedCarts/Model/Osstatistics.php +9 -0
- app/code/local/AnattaDesign/AbandonedCarts/Model/Statistics.php +103 -0
- app/code/local/AnattaDesign/AbandonedCarts/etc/adminhtml.xml +26 -0
- app/code/local/AnattaDesign/AbandonedCarts/etc/config.xml +96 -30
- app/code/local/AnattaDesign/AbandonedCarts/etc/system.xml +41 -0
- app/code/local/AnattaDesign/AbandonedCarts/sql/anattadesign_abandonedcarts_setup/mysql4-upgrade-1.1.2-1.1.2.1.php +26 -0
- app/code/local/AnattaDesign/AbandonedCarts/sql/anattadesign_abandonedcarts_setup/mysql4-upgrade-1.1.2.1-1.2.0.php +3 -0
- app/design/adminhtml/default/default/template/anattadesign/abandonedcarts/widget.phtml +56 -129
- app/locale/de_DE/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/en_AU/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/en_CA/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/en_GB/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/en_US/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/en_US/template/email/anattadesign_abandonedcarts/weekly_report.html +146 -0
- app/locale/es_ES/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/fr_FR/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/it_IT/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/pt_BR/AnattaDesign_AbandonedCarts.csv +24 -0
- app/locale/ru_RU/AnattaDesign_AbandonedCarts.csv +24 -0
- package.xml +10 -6
app/code/local/AnattaDesign/AbandonedCarts/Helper/Data.php
CHANGED
@@ -5,6 +5,8 @@ class AnattaDesign_AbandonedCarts_Helper_Data extends Mage_Core_Helper_Abstract
|
|
5 |
public function getStatisticsModel() {
|
6 |
if ( $this->isAwesomeCheckoutActive() ) {
|
7 |
return Mage::getModel( 'anattadesign_abandonedcarts/statistics' );
|
|
|
|
|
8 |
} else {
|
9 |
return Mage::getModel( 'anattadesign_abandonedcarts/opstatistics' );
|
10 |
}
|
@@ -14,6 +16,10 @@ class AnattaDesign_AbandonedCarts_Helper_Data extends Mage_Core_Helper_Abstract
|
|
14 |
return Mage::getConfig()->getModuleConfig( 'AnattaDesign_AwesomeCheckout' )->is( 'active', 'true' );
|
15 |
}
|
16 |
|
|
|
|
|
|
|
|
|
17 |
public function getMessage() {
|
18 |
|
19 |
$cache = Mage::getSingleton( 'core/cache' );
|
@@ -25,7 +31,8 @@ class AnattaDesign_AbandonedCarts_Helper_Data extends Mage_Core_Helper_Abstract
|
|
25 |
$contents = json_decode( $payload, true );
|
26 |
|
27 |
if ( $contents['status'] == 'success' ) {
|
28 |
-
$
|
|
|
29 |
// cache data for 2 days
|
30 |
$cache->save( $payload, 'abandonedcart_payload', array( 'abandonedcart' ), 2 * 24 * 60 * 60 );
|
31 |
} else {
|
@@ -33,37 +40,42 @@ class AnattaDesign_AbandonedCarts_Helper_Data extends Mage_Core_Helper_Abstract
|
|
33 |
}
|
34 |
} else {
|
35 |
$contents = json_decode( $payload, true );
|
36 |
-
$
|
|
|
37 |
}
|
38 |
|
39 |
return $message;
|
40 |
}
|
41 |
|
42 |
-
public function
|
43 |
-
return Mage::app()->getLocale()->currency( Mage::app()->getStore()->getCurrentCurrencyCode() )->getSymbol();
|
44 |
-
}
|
45 |
-
|
46 |
-
public function getSalesVolume( $year, $month ) {
|
47 |
|
48 |
$cache = Mage::getSingleton( 'core/cache' );
|
49 |
-
$
|
50 |
|
51 |
-
if ( $
|
52 |
-
// recalculate
|
53 |
-
$orderTotals = Mage::getModel( 'sales/order' )->getCollection()
|
54 |
-
->addAttributeToFilter( 'status', Mage_Sales_Model_Order::STATE_COMPLETE )
|
55 |
-
->addAttributeToFilter( 'created_at', array( 'from' => date( 'Y-m-01' ) ) )
|
56 |
-
->addAttributeToSelect( 'grand_total' )
|
57 |
-
->getColumnValues( 'grand_total' )
|
58 |
-
;
|
59 |
|
60 |
-
$
|
|
|
61 |
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
-
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
|
69 |
public function trailingslashit( $string ) {
|
5 |
public function getStatisticsModel() {
|
6 |
if ( $this->isAwesomeCheckoutActive() ) {
|
7 |
return Mage::getModel( 'anattadesign_abandonedcarts/statistics' );
|
8 |
+
} elseif ( $this->isOneStepCheckoutActive() ) {
|
9 |
+
return Mage::getModel( 'anattadesign_abandonedcarts/osstatistics' );
|
10 |
} else {
|
11 |
return Mage::getModel( 'anattadesign_abandonedcarts/opstatistics' );
|
12 |
}
|
16 |
return Mage::getConfig()->getModuleConfig( 'AnattaDesign_AwesomeCheckout' )->is( 'active', 'true' );
|
17 |
}
|
18 |
|
19 |
+
public function isOneStepCheckoutActive() {
|
20 |
+
return Mage::getConfig()->getModuleConfig( 'Idev_OneStepCheckout' )->is( 'active', 'true' );
|
21 |
+
}
|
22 |
+
|
23 |
public function getMessage() {
|
24 |
|
25 |
$cache = Mage::getSingleton( 'core/cache' );
|
31 |
$contents = json_decode( $payload, true );
|
32 |
|
33 |
if ( $contents['status'] == 'success' ) {
|
34 |
+
$message_array = $this->isAwesomeCheckoutActive() ? $contents['data_array']['ac'] : $contents['data_array']['non-ac'];
|
35 |
+
$message = $message_array[ array_rand( $message_array ) ];
|
36 |
// cache data for 2 days
|
37 |
$cache->save( $payload, 'abandonedcart_payload', array( 'abandonedcart' ), 2 * 24 * 60 * 60 );
|
38 |
} else {
|
40 |
}
|
41 |
} else {
|
42 |
$contents = json_decode( $payload, true );
|
43 |
+
$message_array = $this->isAwesomeCheckoutActive() ? $contents['data_array']['ac'] : $contents['data_array']['non-ac'];
|
44 |
+
$message = $message_array[ array_rand( $message_array ) ];
|
45 |
}
|
46 |
|
47 |
return $message;
|
48 |
}
|
49 |
|
50 |
+
public function getEmailFooter() {
|
|
|
|
|
|
|
|
|
51 |
|
52 |
$cache = Mage::getSingleton( 'core/cache' );
|
53 |
+
$payload = $cache->load( 'abandonedcart_payload' );
|
54 |
|
55 |
+
if ( $payload === false ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
+
$payload = file_get_contents( 'http://api.anattadesign.com/abandonedcart/1alpha/fetch/payload' );
|
58 |
+
$contents = json_decode( $payload, true );
|
59 |
|
60 |
+
if ( $contents['status'] == 'success' ) {
|
61 |
+
$email_footer_array = $contents['email_footer'];
|
62 |
+
$email_footer = $email_footer_array[ array_rand( $email_footer_array ) ];
|
63 |
+
// cache data for 2 days
|
64 |
+
$cache->save( $payload, 'abandonedcart_payload', array( 'abandonedcart' ), 2 * 24 * 60 * 60 );
|
65 |
+
} else {
|
66 |
+
$email_footer = false;
|
67 |
+
}
|
68 |
+
} else {
|
69 |
+
$contents = json_decode( $payload, true );
|
70 |
+
$email_footer_array = $contents['email_footer'];
|
71 |
+
$email_footer = $email_footer_array[ array_rand( $email_footer_array ) ];
|
72 |
}
|
73 |
|
74 |
+
// fallback email footer message
|
75 |
+
if ( $email_footer === false )
|
76 |
+
$email_footer = '<p style="text-align:center;padding-bottom:25px;">Sponsored by <a href="https://awesomecheckout.com/?kme=Clicked%20Link&km_Email=MyAB">Awesome Checkout</a> - the highest converting checkout extension for Magento</p>';
|
77 |
+
|
78 |
+
return $email_footer;
|
79 |
}
|
80 |
|
81 |
public function trailingslashit( $string ) {
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Checkout/Onepage/Observer.php
CHANGED
@@ -25,6 +25,8 @@ class AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer {
|
|
25 |
|
26 |
if ( Mage::helper( 'anattadesign_abandonedcarts' )->isAwesomeCheckoutActive() ) {
|
27 |
$statistics->saveStepReached( 'shipping', $this->getQuoteId() );
|
|
|
|
|
28 |
} else {
|
29 |
if ( Mage::getSingleton( 'customer/session' )->isLoggedIn() ) {
|
30 |
$statistics->saveStepReached( 'billing', $this->getQuoteId() );
|
@@ -105,9 +107,25 @@ class AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer {
|
|
105 |
}
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
protected function _getNextStep( Mage_Core_Controller_Response_Http $response ) {
|
109 |
$body = json_decode( $response->getBody() );
|
110 |
-
return $body->goto_section;
|
111 |
}
|
112 |
|
113 |
protected function _isMovedToNextStep( Mage_Core_Controller_Response_Http $response ) {
|
25 |
|
26 |
if ( Mage::helper( 'anattadesign_abandonedcarts' )->isAwesomeCheckoutActive() ) {
|
27 |
$statistics->saveStepReached( 'shipping', $this->getQuoteId() );
|
28 |
+
} elseif ( Mage::helper( 'anattadesign_abandonedcarts' )->isOneStepCheckoutActive() ) {
|
29 |
+
$statistics->saveStepReached( 'review', $this->getQuoteId() );
|
30 |
} else {
|
31 |
if ( Mage::getSingleton( 'customer/session' )->isLoggedIn() ) {
|
32 |
$statistics->saveStepReached( 'billing', $this->getQuoteId() );
|
107 |
}
|
108 |
}
|
109 |
|
110 |
+
public function paypalReview() {
|
111 |
+
$statistics = $this->getModel();
|
112 |
+
$statistics->saveStepReached( 'review', $this->getQuoteId() );
|
113 |
+
}
|
114 |
+
|
115 |
+
public function paypalSaveOrder() {
|
116 |
+
$statistics = $this->getModel();
|
117 |
+
$statistics->saveStepMoved( 'review', $this->getQuoteId() );
|
118 |
+
}
|
119 |
+
|
120 |
+
public function finalsaveOrder( $observer ) {
|
121 |
+
$quote_id = $observer->getEvent()->getQuote()->getId();
|
122 |
+
$statistics = $this->getModel();
|
123 |
+
$statistics->saveStepMoved( 'review', $quote_id );
|
124 |
+
}
|
125 |
+
|
126 |
protected function _getNextStep( Mage_Core_Controller_Response_Http $response ) {
|
127 |
$body = json_decode( $response->getBody() );
|
128 |
+
return isset( $body->goto_section ) ? $body->goto_section : '';
|
129 |
}
|
130 |
|
131 |
protected function _isMovedToNextStep( Mage_Core_Controller_Response_Http $response ) {
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Mysql4/Osstatistics.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AnattaDesign_AbandonedCarts_Model_Mysql4_Osstatistics extends Mage_Core_Model_Mysql4_Abstract {
|
4 |
+
|
5 |
+
protected function _construct() {
|
6 |
+
$this->_init( 'anattadesign_abandonedcarts/osstatistics', 'statistics_id' );
|
7 |
+
}
|
8 |
+
|
9 |
+
}
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Mysql4/Osstatistics/Collection.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AnattaDesign_AbandonedCarts_Model_Mysql4_Osstatistics_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
|
4 |
+
|
5 |
+
protected function _construct() {
|
6 |
+
$this->_init( 'anattadesign_abandonedcarts/osstatistics' );
|
7 |
+
}
|
8 |
+
|
9 |
+
}
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Observer.php
CHANGED
@@ -38,9 +38,9 @@ class AnattaDesign_AbandonedCarts_Model_Observer {
|
|
38 |
if ( $latest->latestVersion != $version ) {
|
39 |
Mage::getModel( 'adminnotification/inbox' )
|
40 |
->setSeverity( Mage_AdminNotification_Model_Inbox::SEVERITY_NOTICE )
|
41 |
-
->setTitle( "My Abandoned Cart
|
42 |
->setDateAdded( gmdate( 'Y-m-d H:i:s' ) )->setUrl( 'http://www.myabandonedcarts.com/' )
|
43 |
-
->setDescription( 'Your version of My Abandoned Cart is currently not up-to-date. Please <a href="
|
44 |
->save();
|
45 |
Mage::getModel( 'core/config' )
|
46 |
->saveConfig( 'anattadesign_abandonedcart_latest_checked_version', $latest->latestVersion );
|
@@ -72,4 +72,96 @@ class AnattaDesign_AbandonedCarts_Model_Observer {
|
|
72 |
$layout->getBlock( 'js' )->append( $block );
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
38 |
if ( $latest->latestVersion != $version ) {
|
39 |
Mage::getModel( 'adminnotification/inbox' )
|
40 |
->setSeverity( Mage_AdminNotification_Model_Inbox::SEVERITY_NOTICE )
|
41 |
+
->setTitle( Mage::helper( 'anattadesign_abandonedcarts' )->__( "My Abandoned Cart %s is now available", $latest->latestVersion ) )
|
42 |
->setDateAdded( gmdate( 'Y-m-d H:i:s' ) )->setUrl( 'http://www.myabandonedcarts.com/' )
|
43 |
+
->setDescription( Mage::helper( 'anattadesign_abandonedcarts' )->__( 'Your version of My Abandoned Cart is currently not up-to-date. Please <a href="%s">click here</a> to get the latest version.', 'http://www.myabandonedcarts.com/' ) )
|
44 |
->save();
|
45 |
Mage::getModel( 'core/config' )
|
46 |
->saveConfig( 'anattadesign_abandonedcart_latest_checked_version', $latest->latestVersion );
|
72 |
$layout->getBlock( 'js' )->append( $block );
|
73 |
}
|
74 |
|
75 |
+
private function _formatStatisics( $stats ) {
|
76 |
+
$stat = new stdClass();
|
77 |
+
$stat->from = date( 'F j, Y', strtotime( $stats['from'] ) );
|
78 |
+
$stat->to = date( 'F j, Y', strtotime( $stats['to'] ) );
|
79 |
+
|
80 |
+
$stats = call_user_func_array( array( Mage::helper( 'anattadesign_abandonedcarts' )->getStatisticsModel(), 'getStatistics' ), $stats );
|
81 |
+
|
82 |
+
$stat->entered = $stats[0]['reached'];
|
83 |
+
$stat->completed = $stats[count( $stats ) - 1]['moved'];
|
84 |
+
$stat->abandonment = $stat->entered == $stat->completed ? 0 : round( ( $stat->entered - $stat->completed ) * 100 / $stat->entered, 2 );
|
85 |
+
|
86 |
+
$step_names = array(
|
87 |
+
'login' => 'Login',
|
88 |
+
'billing' => 'Billing',
|
89 |
+
'shipping' => 'Shipping',
|
90 |
+
'shipping_method' => 'Shipping Method',
|
91 |
+
'payment' => 'Payment',
|
92 |
+
'review' => 'Review'
|
93 |
+
);
|
94 |
+
for ( $i = 1; isset( $stats[$i - 1] ); $i++ ) {
|
95 |
+
$step = 'step' . $i . '_name';
|
96 |
+
$stat->$step = $step_names[$stats[$i - 1]['step']];
|
97 |
+
$entered = 'step' . $i . '_entered';
|
98 |
+
$stat->$entered = $stats[$i - 1]['reached'];
|
99 |
+
$total = 'step' . $i . '_total';
|
100 |
+
$stat->$total = $stat->entered ? ( 100 * $stats[$i - 1]['reached'] / $stat->entered ) : 0;
|
101 |
+
$abandoned = 'step' . $i . '_abandoned';
|
102 |
+
$stat->$abandoned = $stats[$i - 1]['loss'];
|
103 |
+
}
|
104 |
+
$entered = 'step' . $i . '_entered';
|
105 |
+
$stat->$entered = $stats[$i - 2]['moved'];
|
106 |
+
|
107 |
+
return $stat;
|
108 |
+
}
|
109 |
+
|
110 |
+
public function weeklyEmailReport() {
|
111 |
+
$email_addresses = explode( ',', str_replace( ' ', '', Mage::getStoreConfig( 'abandonedcart/email_report/receiver_emails' ) ) ); // remove spaces before explode, cuz doesn't matter as they are list of emails separated by comma
|
112 |
+
// return if we don't have an Email ID set in admin to send an email to.
|
113 |
+
if ( empty( $email_addresses[0] ) )
|
114 |
+
return;
|
115 |
+
|
116 |
+
$last_sunday = strtotime( 'last sunday' );
|
117 |
+
$vars = array();
|
118 |
+
|
119 |
+
for ( $i = 0; $i < 5; $i++ ) {
|
120 |
+
// week 1 through 5
|
121 |
+
$stats = array(
|
122 |
+
'from' => date( 'Y-m-d', strtotime( '-' . ( 1 + $i ) . ' week', $last_sunday ) ),
|
123 |
+
'to' => date( 'Y-m-d', $i ? strtotime( '-' . $i . ' week', $last_sunday ) : $last_sunday )
|
124 |
+
);
|
125 |
+
$stats = $this->_formatStatisics( $stats );
|
126 |
+
foreach ( (array) $stats as $key => $value ) {
|
127 |
+
$vars['week' . ( 1 + $i ) . '_' . $key] = $value;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
// set differences
|
132 |
+
for ( $i = 4; $i; $i-- ) {
|
133 |
+
$diff = $vars['week' . $i . '_abandonment'] - $vars['week' . ( 1 + $i ) . '_abandonment'];
|
134 |
+
$vars['week' . $i . '_difference'] = ( 0 < $diff ) ? '+ ' . $diff : ( $diff ? '- ' . abs( $diff ) : 0 );
|
135 |
+
$vars['week' . $i . '_color'] = ( 0 < $diff ) ? 'c62026' : '0c9748';
|
136 |
+
}
|
137 |
+
|
138 |
+
// Get message to display user
|
139 |
+
$tip = Mage::helper( 'anattadesign_abandonedcarts' )->getMessage();
|
140 |
+
$tip = is_string( $tip ) ? $tip : '';
|
141 |
+
$vars['tip'] = $tip;
|
142 |
+
|
143 |
+
// Dashboard url
|
144 |
+
$vars['dashboard_url'] = Mage::helper( 'adminhtml' )->getUrl( 'adminhtml/dashboard' );
|
145 |
+
|
146 |
+
// Email footer
|
147 |
+
$vars['email_footer'] = Mage::helper( 'anattadesign_abandonedcarts' )->getEmailFooter();
|
148 |
+
|
149 |
+
// Email Subject
|
150 |
+
$vars['email_subject'] = 'Abandoned Carts Report - Week of ' . $vars['week1_from'];
|
151 |
+
|
152 |
+
/* @var $email Mage_Core_Model_Email_Template */
|
153 |
+
$email = Mage::getModel( 'core/email_template' )->loadDefault( 'anattadesign_abandonedcarts_email_report_template' );
|
154 |
+
$email->setDesignConfig( array( 'area' => 'frontend' ) );
|
155 |
+
$email->setSenderName( 'My Abandoned Carts' );
|
156 |
+
$email->setSenderEmail( 'myabandonedcarts@' . Mage::helper('anattadesign_abandonedcarts')->untrailingslashit( $_SERVER['HTTP_HOST'] ) ); // its not a good idea to use any other domain for sending emails unless you want them to reaching spam/junk folders (use one that's hosted on the same IP)
|
157 |
+
$email->setTemplateType( Mage_Core_Model_Template::TYPE_HTML );
|
158 |
+
// $email->getProcessedTemplate( $vars ); // this can be used for testing
|
159 |
+
|
160 |
+
foreach ( $email_addresses as $email_id ) {
|
161 |
+
if ( !empty( $email_id ) ) {
|
162 |
+
$email->send( $email_id, '', $vars );
|
163 |
+
}
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
}
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Osstatistics.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AnattaDesign_AbandonedCarts_Model_Osstatistics extends AnattaDesign_AbandonedCarts_Model_Statistics {
|
4 |
+
|
5 |
+
protected function _construct() {
|
6 |
+
$this->_init( 'anattadesign_abandonedcarts/osstatistics' );
|
7 |
+
}
|
8 |
+
|
9 |
+
}
|
app/code/local/AnattaDesign/AbandonedCarts/Model/Statistics.php
CHANGED
@@ -77,6 +77,9 @@ class AnattaDesign_AbandonedCarts_Model_Statistics extends Mage_Core_Model_Abstr
|
|
77 |
throw new Exception( 'Step key is required' );
|
78 |
}
|
79 |
|
|
|
|
|
|
|
80 |
// Prepare data
|
81 |
$data = array_merge( $data, array( 'sales_flat_quote_id' => $data['quoteId'] ) );
|
82 |
|
@@ -97,4 +100,104 @@ class AnattaDesign_AbandonedCarts_Model_Statistics extends Mage_Core_Model_Abstr
|
|
97 |
}
|
98 |
}
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
77 |
throw new Exception( 'Step key is required' );
|
78 |
}
|
79 |
|
80 |
+
if ( !$data['step'] )
|
81 |
+
return;
|
82 |
+
|
83 |
// Prepare data
|
84 |
$data = array_merge( $data, array( 'sales_flat_quote_id' => $data['quoteId'] ) );
|
85 |
|
100 |
}
|
101 |
}
|
102 |
|
103 |
+
public function getStatistics( $from, $to = null ) {
|
104 |
+
// Select table name where data is stored
|
105 |
+
if (Mage::helper('anattadesign_abandonedcarts')->isAwesomeCheckoutActive()) {
|
106 |
+
$steps = array(
|
107 |
+
0 => array(
|
108 |
+
'step' => 'shipping'
|
109 |
+
),
|
110 |
+
1 => array(
|
111 |
+
'step' => 'shipping_method'
|
112 |
+
),
|
113 |
+
2 => array(
|
114 |
+
'step' => 'payment'
|
115 |
+
),
|
116 |
+
3 => array(
|
117 |
+
'step' => 'review'
|
118 |
+
)
|
119 |
+
);
|
120 |
+
|
121 |
+
$table = Mage::getSingleton('core/resource')->getTableName( 'anattadesign_abandonedcarts/statistics' );
|
122 |
+
} else if ( Mage::helper( 'anattadesign_abandonedcarts' )->isOneStepCheckoutActive() ) {
|
123 |
+
|
124 |
+
$steps = array(
|
125 |
+
0 => array(
|
126 |
+
'step' => 'review'
|
127 |
+
)
|
128 |
+
);
|
129 |
+
|
130 |
+
$table = Mage::getSingleton( 'core/resource' )->getTableName( 'anattadesign_abandonedcarts/osstatistics' );
|
131 |
+
} else {
|
132 |
+
$steps = array(
|
133 |
+
0 => array(
|
134 |
+
'step' => 'login'
|
135 |
+
),
|
136 |
+
1 => array(
|
137 |
+
'step' => 'billing'
|
138 |
+
),
|
139 |
+
2 => array(
|
140 |
+
'step' => 'shipping'
|
141 |
+
),
|
142 |
+
3 => array(
|
143 |
+
'step' => 'shipping_method'
|
144 |
+
),
|
145 |
+
4 => array(
|
146 |
+
'step' => 'payment'
|
147 |
+
),
|
148 |
+
5 => array(
|
149 |
+
'step' => 'review'
|
150 |
+
)
|
151 |
+
);
|
152 |
+
|
153 |
+
$table = Mage::getSingleton('core/resource')->getTableName( 'anattadesign_abandonedcarts/opstatistics' );
|
154 |
+
}
|
155 |
+
|
156 |
+
// Add reached & moved values in array
|
157 |
+
$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
|
158 |
+
if(!$to)
|
159 |
+
$query = "SELECT SUM(reached) as `reached`, SUM(moved) as `moved`, `step` FROM `$table` WHERE DATE(date) > '$from' GROUP BY `step`;";
|
160 |
+
else
|
161 |
+
$query = "SELECT SUM(reached) as `reached`, SUM(moved) as `moved`, `step` FROM `$table` WHERE DATE(date) > '$from' AND DATE(date) < '$to' GROUP BY `step`;";
|
162 |
+
$resource = $connection->query($query);
|
163 |
+
$queried_data = $resource->fetchAll();
|
164 |
+
|
165 |
+
$data = array();
|
166 |
+
foreach($queried_data as $d)
|
167 |
+
$data[$d['step']] = $d;
|
168 |
+
|
169 |
+
foreach ($steps as &$step) {
|
170 |
+
$step['reached'] = (isset($data[$step['step']]) && isset($data[$step['step']]['reached'])) ? intval($data[$step['step']]['reached']) : 0;
|
171 |
+
$step['moved'] = (isset($data[$step['step']]) && isset($data[$step['step']]['moved'])) ? intval($data[$step['step']]['moved']) : 0;
|
172 |
+
$step['loss'] = (0 == $step['reached'] && ($step['reached'] == $step['moved'])) ? 0 : (($step['reached'] - $step['moved']) * 100 / $step['reached']);
|
173 |
+
}
|
174 |
+
unset($step);
|
175 |
+
|
176 |
+
// adjustments to data
|
177 |
+
if (!Mage::helper('anattadesign_abandonedcarts')->isAwesomeCheckoutActive() && !Mage::helper( 'anattadesign_abandonedcarts' )->isOneStepCheckoutActive()) {
|
178 |
+
// This is needed as a user already logged in will never reach the login step
|
179 |
+
// Here we add the appropriate padding (for the sake of the funnel)
|
180 |
+
$diff = $steps[1]['reached'] - $steps[0]['moved'];
|
181 |
+
$steps[0]['reached'] += $diff;
|
182 |
+
$steps[0]['moved'] += $diff;
|
183 |
+
// make sure shipping step which is optional only depicts the loss, so add padding here (for the sake of funnel)
|
184 |
+
$diff = $steps[1]['moved'] - $steps[2]['reached'];
|
185 |
+
$steps[2]['reached'] += $diff;
|
186 |
+
$steps[2]['moved'] += $diff;
|
187 |
+
}
|
188 |
+
|
189 |
+
// let's match the moved of each step to the reached of next step, this will show decent output even in case of
|
190 |
+
// manual data changes via phpmyadmin. This won't affect anything if this module doesn't have any conflicts
|
191 |
+
for($i = count($steps) - 1; $i >= 0; $i--) {
|
192 |
+
// making sure that moved is never higher than reached
|
193 |
+
if($steps[$i]['moved'] > $steps[$i]['reached'])
|
194 |
+
$steps[$i]['reached'] = $steps[$i]['moved'];
|
195 |
+
|
196 |
+
if($i)
|
197 |
+
$steps[$i-1]['moved'] = $steps[$i]['reached'] = max($steps[$i-1]['moved'], $steps[$i]['reached']);
|
198 |
+
}
|
199 |
+
|
200 |
+
return $steps;
|
201 |
+
}
|
202 |
+
|
203 |
}
|
app/code/local/AnattaDesign/AbandonedCarts/etc/adminhtml.xml
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<all>
|
6 |
+
<title>Allow Everything</title>
|
7 |
+
</all>
|
8 |
+
<admin>
|
9 |
+
<children>
|
10 |
+
<system>
|
11 |
+
<children>
|
12 |
+
<config>
|
13 |
+
<children>
|
14 |
+
<abandonedcart>
|
15 |
+
<title>Anatta Design | My Abandoned Carts</title>
|
16 |
+
<sort_order>200</sort_order>
|
17 |
+
</abandonedcart>
|
18 |
+
</children>
|
19 |
+
</config>
|
20 |
+
</children>
|
21 |
+
</system>
|
22 |
+
</children>
|
23 |
+
</admin>
|
24 |
+
</resources>
|
25 |
+
</acl>
|
26 |
+
</config>
|
app/code/local/AnattaDesign/AbandonedCarts/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<AnattaDesign_AbandonedCarts>
|
5 |
-
<version>1.
|
6 |
</AnattaDesign_AbandonedCarts>
|
7 |
</modules>
|
8 |
<global>
|
@@ -20,6 +20,9 @@
|
|
20 |
<opstatistics>
|
21 |
<table>anattadesign_abandonedcarts_opstatistics</table>
|
22 |
</opstatistics>
|
|
|
|
|
|
|
23 |
</entities>
|
24 |
</anattadesign_abandonedcarts_mysql4>
|
25 |
</models>
|
@@ -44,24 +47,7 @@
|
|
44 |
<class>AnattaDesign_AbandonedCarts_Helper</class>
|
45 |
</anattadesign_abandonedcarts>
|
46 |
</helpers>
|
47 |
-
<translate>
|
48 |
-
<modules>
|
49 |
-
<AnattaDesign_AbandonedCarts>
|
50 |
-
<files>
|
51 |
-
<default>AnattaDesign_AbandonedCarts.csv</default>
|
52 |
-
</files>
|
53 |
-
</AnattaDesign_AbandonedCarts>
|
54 |
-
</modules>
|
55 |
-
</translate>
|
56 |
<events>
|
57 |
-
<admin_session_user_login_success>
|
58 |
-
<observers>
|
59 |
-
<anattadesign_abandonedcarts_model_observer>
|
60 |
-
<class>AnattaDesign_AbandonedCarts_Model_Observer</class>
|
61 |
-
<method>uponAdminLogin</method>
|
62 |
-
</anattadesign_abandonedcarts_model_observer>
|
63 |
-
</observers>
|
64 |
-
</admin_session_user_login_success>
|
65 |
<controller_action_layout_generate_blocks_after>
|
66 |
<observers>
|
67 |
<anattadesign_awesomecheckout_addjs>
|
@@ -71,6 +57,39 @@
|
|
71 |
</anattadesign_awesomecheckout_addjs>
|
72 |
</observers>
|
73 |
</controller_action_layout_generate_blocks_after>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
<controller_action_postdispatch_checkout_onepage_index>
|
75 |
<observers>
|
76 |
<anattadesign_abandonedcarts_checkout_observer>
|
@@ -80,6 +99,15 @@
|
|
80 |
</anattadesign_abandonedcarts_checkout_observer>
|
81 |
</observers>
|
82 |
</controller_action_postdispatch_checkout_onepage_index>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
<sales_quote_merge_before>
|
84 |
<observers>
|
85 |
<anattadesign_abandonedcarts_checkout_observer>
|
@@ -152,19 +180,35 @@
|
|
152 |
</anattadesign_abandonedcarts_checkout_observer>
|
153 |
</observers>
|
154 |
</controller_action_postdispatch_checkout_onepage_saveOrder>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
</events>
|
156 |
-
</
|
157 |
-
<admin>
|
158 |
-
<routers>
|
159 |
-
<abandonedcarts>
|
160 |
-
<use>admin</use>
|
161 |
-
<args>
|
162 |
-
<module>AnattaDesign_AbandonedCarts</module>
|
163 |
-
<frontName>abandonedcarts</frontName>
|
164 |
-
</args>
|
165 |
-
</abandonedcarts>
|
166 |
-
</routers>
|
167 |
-
</admin>
|
168 |
<adminhtml>
|
169 |
<translate>
|
170 |
<modules>
|
@@ -182,5 +226,27 @@
|
|
182 |
</anattadesign_abandonedcarts>
|
183 |
</updates>
|
184 |
</layout>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
</adminhtml>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
</config>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<AnattaDesign_AbandonedCarts>
|
5 |
+
<version>1.2.0</version>
|
6 |
</AnattaDesign_AbandonedCarts>
|
7 |
</modules>
|
8 |
<global>
|
20 |
<opstatistics>
|
21 |
<table>anattadesign_abandonedcarts_opstatistics</table>
|
22 |
</opstatistics>
|
23 |
+
<osstatistics>
|
24 |
+
<table>anattadesign_abandonedcarts_osstatistics</table>
|
25 |
+
</osstatistics>
|
26 |
</entities>
|
27 |
</anattadesign_abandonedcarts_mysql4>
|
28 |
</models>
|
47 |
<class>AnattaDesign_AbandonedCarts_Helper</class>
|
48 |
</anattadesign_abandonedcarts>
|
49 |
</helpers>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
<events>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
<controller_action_layout_generate_blocks_after>
|
52 |
<observers>
|
53 |
<anattadesign_awesomecheckout_addjs>
|
57 |
</anattadesign_awesomecheckout_addjs>
|
58 |
</observers>
|
59 |
</controller_action_layout_generate_blocks_after>
|
60 |
+
</events>
|
61 |
+
<template>
|
62 |
+
<email>
|
63 |
+
<anattadesign_abandonedcarts_email_report_template translate="label" module="anattadesign_abandonedcarts">
|
64 |
+
<label>MyAbandonedCarts Weekly Report</label>
|
65 |
+
<file>anattadesign_abandonedcarts/weekly_report.html</file>
|
66 |
+
<type>html</type>
|
67 |
+
</anattadesign_abandonedcarts_email_report_template>
|
68 |
+
</email>
|
69 |
+
</template>
|
70 |
+
</global>
|
71 |
+
<admin>
|
72 |
+
<routers>
|
73 |
+
<abandonedcarts>
|
74 |
+
<use>admin</use>
|
75 |
+
<args>
|
76 |
+
<module>AnattaDesign_AbandonedCarts</module>
|
77 |
+
<frontName>abandonedcarts</frontName>
|
78 |
+
</args>
|
79 |
+
</abandonedcarts>
|
80 |
+
</routers>
|
81 |
+
</admin>
|
82 |
+
<frontend>
|
83 |
+
<translate>
|
84 |
+
<modules>
|
85 |
+
<AnattaDesign_AbandonedCarts>
|
86 |
+
<files>
|
87 |
+
<default>AnattaDesign_AbandonedCarts.csv</default>
|
88 |
+
</files>
|
89 |
+
</AnattaDesign_AbandonedCarts>
|
90 |
+
</modules>
|
91 |
+
</translate>
|
92 |
+
<events>
|
93 |
<controller_action_postdispatch_checkout_onepage_index>
|
94 |
<observers>
|
95 |
<anattadesign_abandonedcarts_checkout_observer>
|
99 |
</anattadesign_abandonedcarts_checkout_observer>
|
100 |
</observers>
|
101 |
</controller_action_postdispatch_checkout_onepage_index>
|
102 |
+
<controller_action_postdispatch_onestepcheckout_index_index>
|
103 |
+
<observers>
|
104 |
+
<anattadesign_abandonedcarts_checkout_observer>
|
105 |
+
<type>singleton</type>
|
106 |
+
<class>AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer</class>
|
107 |
+
<method>index</method>
|
108 |
+
</anattadesign_abandonedcarts_checkout_observer>
|
109 |
+
</observers>
|
110 |
+
</controller_action_postdispatch_onestepcheckout_index_index>
|
111 |
<sales_quote_merge_before>
|
112 |
<observers>
|
113 |
<anattadesign_abandonedcarts_checkout_observer>
|
180 |
</anattadesign_abandonedcarts_checkout_observer>
|
181 |
</observers>
|
182 |
</controller_action_postdispatch_checkout_onepage_saveOrder>
|
183 |
+
<controller_action_postdispatch_paypal_express_review>
|
184 |
+
<observers>
|
185 |
+
<anattadesign_abandonedcarts_checkout_observer>
|
186 |
+
<type>singleton</type>
|
187 |
+
<class>AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer</class>
|
188 |
+
<method>paypalReview</method>
|
189 |
+
</anattadesign_abandonedcarts_checkout_observer>
|
190 |
+
</observers>
|
191 |
+
</controller_action_postdispatch_paypal_express_review>
|
192 |
+
<controller_action_postdispatch_paypal_express_placeOrder>
|
193 |
+
<observers>
|
194 |
+
<anattadesign_abandonedcarts_checkout_observer>
|
195 |
+
<type>singleton</type>
|
196 |
+
<class>AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer</class>
|
197 |
+
<method>paypalSaveOrder</method>
|
198 |
+
</anattadesign_abandonedcarts_checkout_observer>
|
199 |
+
</observers>
|
200 |
+
</controller_action_postdispatch_paypal_express_placeOrder>
|
201 |
+
<checkout_type_onepage_save_order_after>
|
202 |
+
<observers>
|
203 |
+
<anattadesign_abandonedcarts_checkout_observer>
|
204 |
+
<type>singleton</type>
|
205 |
+
<class>AnattaDesign_AbandonedCarts_Model_Checkout_Onepage_Observer</class>
|
206 |
+
<method>finalsaveOrder</method>
|
207 |
+
</anattadesign_abandonedcarts_checkout_observer>
|
208 |
+
</observers>
|
209 |
+
</checkout_type_onepage_save_order_after>
|
210 |
</events>
|
211 |
+
</frontend>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
<adminhtml>
|
213 |
<translate>
|
214 |
<modules>
|
226 |
</anattadesign_abandonedcarts>
|
227 |
</updates>
|
228 |
</layout>
|
229 |
+
<events>
|
230 |
+
<admin_session_user_login_success>
|
231 |
+
<observers>
|
232 |
+
<anattadesign_abandonedcarts_model_observer>
|
233 |
+
<class>AnattaDesign_AbandonedCarts_Model_Observer</class>
|
234 |
+
<method>uponAdminLogin</method>
|
235 |
+
</anattadesign_abandonedcarts_model_observer>
|
236 |
+
</observers>
|
237 |
+
</admin_session_user_login_success>
|
238 |
+
</events>
|
239 |
</adminhtml>
|
240 |
+
<crontab>
|
241 |
+
<jobs>
|
242 |
+
<anattadesign_abandonedcarts>
|
243 |
+
<schedule>
|
244 |
+
<cronexpr>0 6 * * 1</cronexpr>
|
245 |
+
</schedule>
|
246 |
+
<run>
|
247 |
+
<model>anattadesign_abandonedcarts/observer::weeklyEmailReport</model>
|
248 |
+
</run>
|
249 |
+
</anattadesign_abandonedcarts>
|
250 |
+
</jobs>
|
251 |
+
</crontab>
|
252 |
</config>
|
app/code/local/AnattaDesign/AbandonedCarts/etc/system.xml
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<config>
|
4 |
+
<tabs>
|
5 |
+
<anattadesign>
|
6 |
+
<label>Anatta Design</label>
|
7 |
+
<sort_order>99999</sort_order>
|
8 |
+
</anattadesign>
|
9 |
+
</tabs>
|
10 |
+
<sections>
|
11 |
+
<abandonedcart>
|
12 |
+
<label>My Abandoned Carts</label>
|
13 |
+
<tab>anattadesign</tab>
|
14 |
+
<frontend_type>text</frontend_type>
|
15 |
+
<sort_order>2000</sort_order>
|
16 |
+
<show_in_default>1</show_in_default>
|
17 |
+
<show_in_website>1</show_in_website>
|
18 |
+
<show_in_store>1</show_in_store>
|
19 |
+
<groups>
|
20 |
+
<email_report translate="label">
|
21 |
+
<label>Weekly Email Report Options</label>
|
22 |
+
<sort_order>10</sort_order>
|
23 |
+
<show_in_default>1</show_in_default>
|
24 |
+
<show_in_website>1</show_in_website>
|
25 |
+
<show_in_store>1</show_in_store>
|
26 |
+
<fields>
|
27 |
+
<receiver_emails translate="label">
|
28 |
+
<label>Email addresses</label>
|
29 |
+
<frontend_type>text</frontend_type>
|
30 |
+
<sort_order>11</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
<comment>Enter email addresses separated by comma to which weekly email reports should be sent.</comment>
|
35 |
+
</receiver_emails>
|
36 |
+
</fields>
|
37 |
+
</email_report>
|
38 |
+
</groups>
|
39 |
+
</abandonedcart>
|
40 |
+
</sections>
|
41 |
+
</config>
|
app/code/local/AnattaDesign/AbandonedCarts/sql/anattadesign_abandonedcarts_setup/mysql4-upgrade-1.1.2-1.1.2.1.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
$installer->run("DROP TABLE IF EXISTS `" . $installer->getTable( 'anattadesign_abandonedcarts/osstatistics' ) . "`");
|
8 |
+
|
9 |
+
$installer->run(
|
10 |
+
"CREATE TABLE `" . $installer->getTable( 'anattadesign_abandonedcarts/osstatistics' ) . "` (
|
11 |
+
`statistics_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
12 |
+
`sales_flat_quote_id` int(10) unsigned NOT NULL,
|
13 |
+
`step` varchar(32) NOT NULL,
|
14 |
+
`reached` tinyint(4) NOT NULL DEFAULT '0',
|
15 |
+
`moved` tinyint(4) NOT NULL DEFAULT '0',
|
16 |
+
`year` smallint(6) NOT NULL,
|
17 |
+
`month` tinyint(4) NOT NULL,
|
18 |
+
`date` datetime NOT NULL,
|
19 |
+
PRIMARY KEY (`statistics_id`),
|
20 |
+
KEY `dashboard_tab` (`year`,`month`,`step`,`reached`,`moved`)
|
21 |
+
) ENGINE=InnoDB"
|
22 |
+
);
|
23 |
+
|
24 |
+
$installer->endSetup();
|
25 |
+
|
26 |
+
Mage::helper( 'anattadesign_abandonedcarts' )->ping();
|
app/code/local/AnattaDesign/AbandonedCarts/sql/anattadesign_abandonedcarts_setup/mysql4-upgrade-1.1.2.1-1.2.0.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
Mage::helper( 'anattadesign_abandonedcarts' )->ping();
|
app/design/adminhtml/default/default/template/anattadesign/abandonedcarts/widget.phtml
CHANGED
@@ -1,190 +1,117 @@
|
|
1 |
<?php
|
2 |
-
if (!Mage::helper('core')->isModuleEnabled('AnattaDesign_AbandonedCarts')) {
|
3 |
die();
|
4 |
}
|
5 |
?>
|
6 |
|
7 |
-
<link href='
|
8 |
-
<link href='
|
9 |
-
<link href='
|
10 |
-
<link href='
|
11 |
|
12 |
<?php
|
13 |
$display_month = array(
|
14 |
-
1 => 'January',
|
15 |
-
2 => 'February',
|
16 |
-
3 => 'March',
|
17 |
-
4 => 'April',
|
18 |
-
5 => 'May',
|
19 |
-
6 => 'June',
|
20 |
-
7 => 'July',
|
21 |
-
8 => 'August',
|
22 |
-
9 => 'September',
|
23 |
-
10 => 'October',
|
24 |
-
11 => 'November',
|
25 |
-
12 => 'December'
|
26 |
);
|
27 |
|
28 |
-
$period = isset($_GET['period']) ? $_GET['period'] : '';
|
29 |
|
30 |
-
switch ($period) {
|
31 |
case '12h':
|
32 |
-
$queried_date = date('Y-m-d', strtotime('-12 hours'));
|
33 |
break;
|
34 |
case '24h':
|
35 |
-
$queried_date = date('Y-m-d', strtotime('-24 hours'));
|
36 |
break;
|
37 |
case '7d':
|
38 |
-
$queried_date = date('Y-m-d', strtotime('-7 days'));
|
39 |
break;
|
40 |
case '1m':
|
41 |
-
$queried_date = date('Y-m-d', strtotime('-1 month'));
|
42 |
break;
|
43 |
case '1y':
|
44 |
-
$queried_date = date('Y-m-d', strtotime('-1 year'));
|
45 |
break;
|
46 |
case '2y':
|
47 |
-
$queried_date = date('Y-m-d', strtotime('-2 years'));
|
48 |
break;
|
49 |
default:
|
50 |
-
$queried_date = date('Y-m-d', strtotime('-24 hours'));
|
51 |
}
|
52 |
|
53 |
-
// Select table name where data is stored
|
54 |
-
if (Mage::helper('anattadesign_abandonedcarts')->isAwesomeCheckoutActive()) {
|
55 |
-
|
56 |
-
$steps = array(
|
57 |
-
0 => array(
|
58 |
-
'step' => 'shipping'
|
59 |
-
),
|
60 |
-
1 => array(
|
61 |
-
'step' => 'shipping_method'
|
62 |
-
),
|
63 |
-
2 => array(
|
64 |
-
'step' => 'payment'
|
65 |
-
),
|
66 |
-
3 => array(
|
67 |
-
'step' => 'review'
|
68 |
-
)
|
69 |
-
);
|
70 |
-
|
71 |
-
$table = Mage::getSingleton('core/resource')->getTableName( 'anattadesign_abandonedcarts/statistics' );
|
72 |
-
} else {
|
73 |
-
|
74 |
-
$steps = array(
|
75 |
-
0 => array(
|
76 |
-
'step' => 'login'
|
77 |
-
),
|
78 |
-
1 => array(
|
79 |
-
'step' => 'billing'
|
80 |
-
),
|
81 |
-
2 => array(
|
82 |
-
'step' => 'shipping'
|
83 |
-
),
|
84 |
-
3 => array(
|
85 |
-
'step' => 'shipping_method'
|
86 |
-
),
|
87 |
-
4 => array(
|
88 |
-
'step' => 'payment'
|
89 |
-
),
|
90 |
-
5 => array(
|
91 |
-
'step' => 'review'
|
92 |
-
)
|
93 |
-
);
|
94 |
-
|
95 |
-
$table = Mage::getSingleton('core/resource')->getTableName( 'anattadesign_abandonedcarts/opstatistics' );
|
96 |
-
}
|
97 |
-
|
98 |
-
// Add reached & moved values in array
|
99 |
-
$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
|
100 |
-
foreach ($steps as &$step) {
|
101 |
-
$query = "SELECT SUM(reached) as `reached`, SUM(moved) as `moved` FROM `$table` WHERE DATE(date) > '$queried_date' AND `step` = '{$step['step']}';";
|
102 |
-
$resource = $connection->query($query);
|
103 |
-
$fetched_data = $resource->fetch();
|
104 |
-
$step['reached'] = intval($fetched_data['reached']);
|
105 |
-
$step['moved'] = intval($fetched_data['moved']);
|
106 |
-
$step['loss'] = $step['reached'] == $step['moved'] ? 0 : ($step['reached'] - $step['moved']) * 100 / $step['reached'];
|
107 |
-
}
|
108 |
-
unset($step);
|
109 |
-
|
110 |
-
$step_no = 1;
|
111 |
$step_names = array(
|
112 |
-
'login' => 'Login',
|
113 |
-
'billing' => 'Billing',
|
114 |
-
'shipping' => 'Shipping',
|
115 |
-
'shipping_method' => 'Shipping Method',
|
116 |
-
'payment' => 'Payment',
|
117 |
-
'review' => 'Review'
|
118 |
);
|
119 |
|
120 |
-
|
121 |
-
if (Mage::helper('anattadesign_abandonedcarts')->isAwesomeCheckoutActive()) {
|
122 |
-
|
123 |
-
} else {
|
124 |
-
// This is needed as a user already logged in will never reach the login step
|
125 |
-
// Here we add the appropriate padding (for the sake of the funnel)
|
126 |
-
$diff = $steps[1]['reached'] - $steps[0]['moved'];
|
127 |
-
$steps[0]['reached'] += $diff;
|
128 |
-
$steps[0]['moved'] += $diff;
|
129 |
-
// make sure shipping step which is optional only depicts the loss, so add padding here (for the sake of funnel)
|
130 |
-
$diff = $steps[1]['moved'] - $steps[2]['reached'];
|
131 |
-
$steps[2]['reached'] += $diff;
|
132 |
-
$steps[2]['moved'] += $diff;
|
133 |
-
}
|
134 |
-
|
135 |
-
// let's match the moved of each step to the reached of next step, this will show decent output even in case of
|
136 |
-
// manual data changes via phpmyadmin. This won't affect anything if this module doesn't have any conflicts
|
137 |
-
for($i = count($steps) - 1; $i >= 0; $i--) {
|
138 |
-
// making sure that moved is never higher than reached
|
139 |
-
if($steps[$i]['moved'] > $steps[$i]['reached'])
|
140 |
-
$steps[$i]['reached'] = $steps[$i]['moved'];
|
141 |
-
|
142 |
-
if($i)
|
143 |
-
$steps[$i-1]['moved'] = $steps[$i]['reached'] = max($steps[$i-1]['moved'], $steps[$i]['reached']);
|
144 |
-
}
|
145 |
|
146 |
// calculate abandonment rate & loss for the queried month-year
|
147 |
-
$
|
148 |
|
149 |
// Get message to display user
|
150 |
-
$message = Mage::helper('anattadesign_abandonedcarts')->getMessage();
|
151 |
-
$message = is_string($message) ? $message : '';
|
152 |
?>
|
153 |
|
154 |
<div id="ac-wrapper">
|
155 |
<div class="abwidget">
|
156 |
<h2 class="widget-title">
|
157 |
-
<strong
|
158 |
<a href="http://myabandonedcarts.com/?kme=Clicked%20Link&km_Referrer=Widget" class="myab"></a>
|
159 |
</h2>
|
160 |
|
161 |
<div class="widget-content">
|
162 |
-
<span class="checkout-info item-1">
|
163 |
-
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
|
166 |
<div class="graph-table">
|
167 |
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
168 |
<tr>
|
169 |
-
<?php foreach ($steps as $step) : ?>
|
170 |
<td><span class="number"><?php echo $step['reached']; ?></span></td>
|
171 |
-
<?php $total_height = $steps[0]['reached'] ? (($step['reached'] * 100)) / $steps[0]['reached'] : 0; ?>
|
172 |
-
<?php $lost_height = $step['reached'] ? (($step['reached'] - $step['moved']) * 100) / $step['reached'] : 0; ?>
|
173 |
<td>
|
174 |
<div class="graph" style="height:<?php echo $total_height; ?>%;">
|
175 |
<span class="color" style="height: <?php echo $lost_height; ?>%;">
|
176 |
-
<span class="value"><?php echo round($lost_height, 2); ?>%</span>
|
177 |
</span>
|
178 |
</div>
|
179 |
</td>
|
180 |
<?php endforeach; ?>
|
181 |
-
<?php $last_step = end($steps); ?>
|
182 |
<td><span class="number"><?php echo $last_step['moved']; ?></span></td>
|
183 |
</tr>
|
184 |
<tr class="steps">
|
185 |
<?php $count = 0; ?>
|
186 |
-
<?php foreach ($steps as $index => $step) : ?>
|
187 |
-
<td<?php if ($count)
|
|
|
188 |
<?php $count++; ?>
|
189 |
<td><span><?php echo $count . '. ' . $step_names[$step['step']]; ?></span></td>
|
190 |
<?php endforeach; ?>
|
1 |
<?php
|
2 |
+
if ( !Mage::helper( 'core' )->isModuleEnabled( 'AnattaDesign_AbandonedCarts' ) ) {
|
3 |
die();
|
4 |
}
|
5 |
?>
|
6 |
|
7 |
+
<link href='https://fonts.googleapis.com/css?family=Exo:600' rel='stylesheet' type='text/css'>
|
8 |
+
<link href='https://fonts.googleapis.com/css?family=Exo:100' rel='stylesheet' type='text/css'>
|
9 |
+
<link href='https://fonts.googleapis.com/css?family=Arvo' rel='stylesheet' type='text/css'>
|
10 |
+
<link href='https://fonts.googleapis.com/css?family=Ubuntu:400,500' rel='stylesheet' type='text/css'>
|
11 |
|
12 |
<?php
|
13 |
$display_month = array(
|
14 |
+
1 => $this->__( 'January' ),
|
15 |
+
2 => $this->__( 'February' ),
|
16 |
+
3 => $this->__( 'March' ),
|
17 |
+
4 => $this->__( 'April' ),
|
18 |
+
5 => $this->__( 'May' ),
|
19 |
+
6 => $this->__( 'June' ),
|
20 |
+
7 => $this->__( 'July' ),
|
21 |
+
8 => $this->__( 'August' ),
|
22 |
+
9 => $this->__( 'September' ),
|
23 |
+
10 => $this->__( 'October' ),
|
24 |
+
11 => $this->__( 'November' ),
|
25 |
+
12 => $this->__( 'December' )
|
26 |
);
|
27 |
|
28 |
+
$period = isset( $_GET['period'] ) ? $_GET['period'] : '';
|
29 |
|
30 |
+
switch ( $period ) {
|
31 |
case '12h':
|
32 |
+
$queried_date = date( 'Y-m-d', strtotime( '-12 hours' ) );
|
33 |
break;
|
34 |
case '24h':
|
35 |
+
$queried_date = date( 'Y-m-d', strtotime( '-24 hours' ) );
|
36 |
break;
|
37 |
case '7d':
|
38 |
+
$queried_date = date( 'Y-m-d', strtotime( '-7 days' ) );
|
39 |
break;
|
40 |
case '1m':
|
41 |
+
$queried_date = date( 'Y-m-d', strtotime( '-1 month' ) );
|
42 |
break;
|
43 |
case '1y':
|
44 |
+
$queried_date = date( 'Y-m-d', strtotime( '-1 year' ) );
|
45 |
break;
|
46 |
case '2y':
|
47 |
+
$queried_date = date( 'Y-m-d', strtotime( '-2 years' ) );
|
48 |
break;
|
49 |
default:
|
50 |
+
$queried_date = date( 'Y-m-d', strtotime( '-24 hours' ) );
|
51 |
}
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
$step_names = array(
|
54 |
+
'login' => $this->__( 'Login' ),
|
55 |
+
'billing' => $this->__( 'Billing' ),
|
56 |
+
'shipping' => $this->__( 'Shipping' ),
|
57 |
+
'shipping_method' => $this->__( 'Shipping Method' ),
|
58 |
+
'payment' => $this->__( 'Payment' ),
|
59 |
+
'review' => $this->__( 'Review' )
|
60 |
);
|
61 |
|
62 |
+
$steps = Mage::helper( 'anattadesign_abandonedcarts' )->getStatisticsModel()->getStatistics($queried_date);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
// calculate abandonment rate & loss for the queried month-year
|
65 |
+
$abandonment_rate = $steps[0]['reached'] == $steps[count($steps) - 1]['moved'] ? 0 : round(($steps[0]['reached'] - $steps[count($steps) - 1]['moved']) * 100 / $steps[0]['reached'], 2);
|
66 |
|
67 |
// Get message to display user
|
68 |
+
$message = Mage::helper( 'anattadesign_abandonedcarts' )->getMessage();
|
69 |
+
$message = is_string( $message ) ? $message : '';
|
70 |
?>
|
71 |
|
72 |
<div id="ac-wrapper">
|
73 |
<div class="abwidget">
|
74 |
<h2 class="widget-title">
|
75 |
+
<strong><?php echo $this->__( 'TIPS!:' ); ?></strong> <?php echo $message; ?>
|
76 |
<a href="http://myabandonedcarts.com/?kme=Clicked%20Link&km_Referrer=Widget" class="myab"></a>
|
77 |
</h2>
|
78 |
|
79 |
<div class="widget-content">
|
80 |
+
<span class="checkout-info item-1">
|
81 |
+
<?php echo $this->__( 'ENTERED CHECKOUT' ); ?>
|
82 |
+
<small><?php echo $steps[0]['reached'] ?></small>
|
83 |
+
</span>
|
84 |
+
<span class="checkout-info item-2">
|
85 |
+
<?php echo $this->__( 'COMPLETED CHECKOUT' ); ?>
|
86 |
+
<small><?php echo $steps[count( $steps ) - 1]['moved'] ?></small>
|
87 |
+
</span>
|
88 |
+
<span class="checkout-info item-3">
|
89 |
+
<?php echo $this->__( 'ABANDONMENT RATE' ); ?><big><?php echo $abandonment_rate; ?>%</big>
|
90 |
+
</span>
|
91 |
|
92 |
<div class="graph-table">
|
93 |
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
94 |
<tr>
|
95 |
+
<?php foreach ( $steps as $step ) : ?>
|
96 |
<td><span class="number"><?php echo $step['reached']; ?></span></td>
|
97 |
+
<?php $total_height = $steps[0]['reached'] ? ( ( $step['reached'] * 100 ) ) / $steps[0]['reached'] : 0; ?>
|
98 |
+
<?php $lost_height = $step['reached'] ? ( ( $step['reached'] - $step['moved'] ) * 100 ) / $step['reached'] : 0; ?>
|
99 |
<td>
|
100 |
<div class="graph" style="height:<?php echo $total_height; ?>%;">
|
101 |
<span class="color" style="height: <?php echo $lost_height; ?>%;">
|
102 |
+
<span class="value"><?php echo round( $lost_height, 2 ); ?>%</span>
|
103 |
</span>
|
104 |
</div>
|
105 |
</td>
|
106 |
<?php endforeach; ?>
|
107 |
+
<?php $last_step = end( $steps ); ?>
|
108 |
<td><span class="number"><?php echo $last_step['moved']; ?></span></td>
|
109 |
</tr>
|
110 |
<tr class="steps">
|
111 |
<?php $count = 0; ?>
|
112 |
+
<?php foreach ( $steps as $index => $step ) : ?>
|
113 |
+
<td<?php if ( $count )
|
114 |
+
echo ' class="arrow"'; ?>> </td>
|
115 |
<?php $count++; ?>
|
116 |
<td><span><?php echo $count . '. ' . $step_names[$step['step']]; ?></span></td>
|
117 |
<?php endforeach; ?>
|
app/locale/de_DE/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","Abbruchrate"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Rechnungsschreibung"
|
5 |
+
"COMPLETED CHECKOUT","ABGESCHLOSSEN KASSE"
|
6 |
+
"December","Dezember"
|
7 |
+
"ENTERED CHECKOUT","GESCHLOSSEN KASSE"
|
8 |
+
"February","Februar"
|
9 |
+
"January","Januar"
|
10 |
+
"July","Juli"
|
11 |
+
"June","Juni"
|
12 |
+
"Login","Anmelden"
|
13 |
+
"March","März"
|
14 |
+
"May","Mai"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s ist jetzt verfügbar"
|
16 |
+
"November","November"
|
17 |
+
"October","Oktober"
|
18 |
+
"Payment","Bezahlung"
|
19 |
+
"Review","Bewertung"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Versand"
|
22 |
+
"Shipping Method","Liefer-Methode"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Ihre Version von My Abandoned Cart ist derzeit nicht up-to-date. Bitte <a href=\"%s\">hier</a>, um die neueste Version zu erhalten."
|
app/locale/en_AU/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","ABANDONMENT RATE"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Billing"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETED CHECKOUT"
|
6 |
+
"December","December"
|
7 |
+
"ENTERED CHECKOUT","ENTERED CHECKOUT"
|
8 |
+
"February","February"
|
9 |
+
"January","January"
|
10 |
+
"July","July"
|
11 |
+
"June","June"
|
12 |
+
"Login","Login"
|
13 |
+
"March","March"
|
14 |
+
"May","May"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s is now available"
|
16 |
+
"November","November"
|
17 |
+
"October","October"
|
18 |
+
"Payment","Payment"
|
19 |
+
"Review","Review"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Shipping"
|
22 |
+
"Shipping Method","Shipping Method"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version."
|
app/locale/en_CA/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","ABANDONMENT RATE"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Billing"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETED CHECKOUT"
|
6 |
+
"December","December"
|
7 |
+
"ENTERED CHECKOUT","ENTERED CHECKOUT"
|
8 |
+
"February","February"
|
9 |
+
"January","January"
|
10 |
+
"July","July"
|
11 |
+
"June","June"
|
12 |
+
"Login","Login"
|
13 |
+
"March","March"
|
14 |
+
"May","May"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s is now available"
|
16 |
+
"November","November"
|
17 |
+
"October","October"
|
18 |
+
"Payment","Payment"
|
19 |
+
"Review","Review"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Shipping"
|
22 |
+
"Shipping Method","Shipping Method"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version."
|
app/locale/en_GB/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","ABANDONMENT RATE"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Billing"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETED CHECKOUT"
|
6 |
+
"December","December"
|
7 |
+
"ENTERED CHECKOUT","ENTERED CHECKOUT"
|
8 |
+
"February","February"
|
9 |
+
"January","January"
|
10 |
+
"July","July"
|
11 |
+
"June","June"
|
12 |
+
"Login","Login"
|
13 |
+
"March","March"
|
14 |
+
"May","May"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s is now available"
|
16 |
+
"November","November"
|
17 |
+
"October","October"
|
18 |
+
"Payment","Payment"
|
19 |
+
"Review","Review"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Shipping"
|
22 |
+
"Shipping Method","Shipping Method"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version."
|
app/locale/en_US/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","ABANDONMENT RATE"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Billing"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETED CHECKOUT"
|
6 |
+
"December","December"
|
7 |
+
"ENTERED CHECKOUT","ENTERED CHECKOUT"
|
8 |
+
"February","February"
|
9 |
+
"January","January"
|
10 |
+
"July","July"
|
11 |
+
"June","June"
|
12 |
+
"Login","Login"
|
13 |
+
"March","March"
|
14 |
+
"May","May"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s is now available"
|
16 |
+
"November","November"
|
17 |
+
"October","October"
|
18 |
+
"Payment","Payment"
|
19 |
+
"Review","Review"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Shipping"
|
22 |
+
"Shipping Method","Shipping Method"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version."
|
app/locale/en_US/template/email/anattadesign_abandonedcarts/weekly_report.html
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!--@subject {{var email_subject}} @-->
|
2 |
+
|
3 |
+
<body style="background: #f3f0ec;padding: 0px; margin: 0px;">
|
4 |
+
<div style="background: #f3f0ec;padding-top: 20px; margin: 0px; ">
|
5 |
+
<!--main table with single cell-->
|
6 |
+
<table cellspacing="0" cellpadding="0" align="center" width="545px;" style="background: #fff; padding: 40px 40px 40px 40px; color: #000; font-family: 'LatoRegular',arial,sans-serif; font-size: 13px;">
|
7 |
+
<tr>
|
8 |
+
<td style="border-bottom:1px solid #d5d5d5;margin-bottom:20px">
|
9 |
+
<table cellspacing="0" cellpadding="0" align="left" width="100%">
|
10 |
+
<tbody>
|
11 |
+
<tr>
|
12 |
+
<td align="left">
|
13 |
+
<h1 style="font-size:24px;padding:0 0 18px 0;margin:0;font-family:'LatoBlack',arial,sans-serif;font-weight:normal;">Your weekly update</h1>
|
14 |
+
</td>
|
15 |
+
<td align="right" style="vertical-align: top;">
|
16 |
+
<a href="https://awesomecheckout.com/?kme=Clicked%20Link&km_Email=MyAB" style="font-size:11px; color:#000; text-decoration:none" target="_blank">
|
17 |
+
Sponsored by<br>
|
18 |
+
<img src="{{skin url='anattadesign/abandonedcarts/images/logo.png'}}" style="margin-top:5px; width:140px">
|
19 |
+
</a>
|
20 |
+
</td>
|
21 |
+
</tr>
|
22 |
+
</tbody>
|
23 |
+
</table>
|
24 |
+
</td>
|
25 |
+
</tr>
|
26 |
+
<tr>
|
27 |
+
<td>
|
28 |
+
<div style="margin:0px auto; margin-top:20px;">
|
29 |
+
<h2 style="background:#cf7e3e; height: 10px; overflow: hidden;border:2px solid #c36449;padding:8px 10px;color:#fff;margin:0px;">
|
30 |
+
<span style="float:left;font-size:12px;font-weight:normal; text-transform: uppercase;">This WEEK ( {{var week1_from}} - {{var week1_to}} )</span>
|
31 |
+
<a href="http://myabandonedcarts.com/?kme=Clicked%20Widget" style="float:right;"><img src="{{skin url='anattadesign/abandonedcarts/images/powerdby.jpg'}}" style="border:none;"/></a>
|
32 |
+
</h2>
|
33 |
+
|
34 |
+
<div style="border:1px solid #343434;border-top:none;">
|
35 |
+
<div style="padding:10px 0 20px 0;">
|
36 |
+
<table cellspacing="0" cellpadding="0" align="right" >
|
37 |
+
<tr>
|
38 |
+
<td align="right">
|
39 |
+
<span style="width:70px;text-transform:uppercase;font-size:8px;font-weight:bold;color:#000;text-align:center; float:right;font-family: 'LatoBlack',arial,sans-serif; font-weight: normal;">ABANDONMENT RATE<small style="font-size:26px;display:block;line-height:30px;">{{var week1_abandonment}}%</small> <sub style="font-size: 8px; color: #{{var week1_color}};"> ({{var week1_difference}}%)</sub></span>
|
40 |
+
<span style="width:70px;text-transform:uppercase;font-size:8px;font-weight:bold;color:#000;text-align:center; float:right;font-family: 'LatoBlack',arial,sans-serif; font-weight: normal;">COMPLETED CHECKOUT<small style="color:#cf7e3e;display:block;font-size:10px;">{{var week1_completed}}</small></span>
|
41 |
+
<span style="width:70px;text-transform:uppercase;font-size:8px;font-weight:bold;color:#000;text-align:center; float:right;font-family: 'LatoBlack',arial,sans-serif; font-weight: normal;">ENTERED CHECKOUT<small style="color:#cf7e3e;display:block;font-size:10px;font-family: 'LatoBlack',arial,sans-serif; font-weight: normal;">{{var week1_entered}}</small></span>
|
42 |
+
</td>
|
43 |
+
</tr>
|
44 |
+
</table>
|
45 |
+
</div>
|
46 |
+
<div style="padding-top:35px; vertical-align: middle;">
|
47 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="vertical-align: middle; height: 135px;">
|
48 |
+
<tr>
|
49 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step1_entered}}</span></td>
|
50 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step1_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step1_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step1_abandoned}}%;"></span></div></td>
|
51 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step2_entered}}</span></td>
|
52 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step2_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step2_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step2_abandoned}}%;"></span></div></td>
|
53 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step3_entered}}</span></td>
|
54 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step3_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step3_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step3_abandoned}}%;"></span></div></td>
|
55 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step4_entered}}</span></td>
|
56 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step4_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step4_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step4_abandoned}}%;"></span></div></td>
|
57 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step5_entered}}</span></td>
|
58 |
+
{{if week1_step5_name}}
|
59 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step5_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step5_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step5_abandoned}}%;"></span></div></td>
|
60 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step6_entered}}</span></td>
|
61 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="display:block; color:#00; width: 30px; margin:0px 0 4px 0; text-align:center;font-size:10px;">{{var week1_step6_abandoned}}%</span><div style="border:2px solid #c36449;border-bottom:none;margin:-2px 0 0 0;background: #EBD5B7;height: {{var week1_step6_total}}%;"><span style="background:#333;display:block;color:#fff;text-align:center;font-size:10px;;height:{{var week1_step6_abandoned}}%;"></span></div></td>
|
62 |
+
<td style="text-align:center;vertical-align:bottom;padding:0 5px;width:1%;"><span style="font-size:9px;color:#cf7e3e;">{{var week1_step7_entered}}</span></td>
|
63 |
+
{{/if}}
|
64 |
+
</tr>
|
65 |
+
<tr style="padding-right:4%;border-right:1px solid #343434;">
|
66 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"> </td>
|
67 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">1. {{var week1_step1_name}}</span></td>
|
68 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><img src="{{skin url='anattadesign/abandonedcarts/images/table-step-img-arrow.jpg'}}" alt="" style="border:none;" /></td>
|
69 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">2. {{var week1_step2_name}}</span></td>
|
70 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><img src="{{skin url='anattadesign/abandonedcarts/images/table-step-img-arrow.jpg'}}" alt="" style="border:none;" /></td>
|
71 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">3. {{var week1_step3_name}}</span></td>
|
72 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><img src="{{skin url='anattadesign/abandonedcarts/images/table-step-img-arrow.jpg'}}" alt="" style="border:none;" /></td>
|
73 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">4. {{var week1_step4_name}}</span></td>
|
74 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><img src="{{skin url='anattadesign/abandonedcarts/images/table-step-img-arrow.jpg'}}" alt="" style="border:none;" /></td>
|
75 |
+
{{if week1_step5_name}}
|
76 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">5. {{var week1_step5_name}}</span></td>
|
77 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><img src="{{skin url='anattadesign/abandonedcarts/images/table-step-img-arrow.jpg'}}" alt="" style="border:none;" /></td>
|
78 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:center;"><span style="padding:0px 0 0 2px;font-size:9px;">6. {{var week1_step6_name}}</span></td>
|
79 |
+
<td style="background:#eaefef;vertical-align:middle;height:37px;border-top:1px solid #343434;text-align:left;"></td>
|
80 |
+
{{/if}}
|
81 |
+
</tr>
|
82 |
+
</table>
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
</td>
|
87 |
+
</tr>
|
88 |
+
<tr>
|
89 |
+
<td>
|
90 |
+
<h6 style="padding: 35px 0 15px 0; margin: 0; color: #d86d45; font-weight: normal;text-transform: uppercase; font-size: 12px;font-family: 'LatoBold',arial,sans-serif; font-weight: normal; letter-spacing:1px;">PREVIOUS WEEK’S ABANDONMENT RATE</h6>
|
91 |
+
</td>
|
92 |
+
</tr>
|
93 |
+
<tr>
|
94 |
+
<td>
|
95 |
+
<table cellspacing="0" cellpadding="0" align="center" width="100%" style="border:1px solid #c4c1be;">
|
96 |
+
<tr>
|
97 |
+
<th align="center" style=" background: #f6f4f1; padding: 8px 5px ; color: #000100; text-transform: uppercase; font-size: 9px; font-family: 'LatoBold',arial,sans-serif; font-weight: normal; border-right: 1px solid #c4c1be;border-bottom: 1px solid #c4c1be;">{{var week2_from}} - {{var week2_to}}</th>
|
98 |
+
<th align="center" style=" background: #f6f4f1; padding: 8px 5px; color: #000100; text-transform: uppercase; font-size: 9px; font-family: 'LatoBold',arial,sans-serif; font-weight: normal;border-right: 1px solid #c4c1be;border-bottom: 1px solid #c4c1be;">{{var week3_from}} - {{var week3_to}}</th>
|
99 |
+
<th align="center" style=" background: #f6f4f1; padding: 8px 5px ; color: #000100; text-transform: uppercase; font-size: 9px; font-family: 'LatoBold',arial,sans-serif; font-weight: normal;border-bottom: 1px solid #c4c1be;">{{var week4_from}} - {{var week4_to}}</th>
|
100 |
+
</tr>
|
101 |
+
<tr>
|
102 |
+
<td align="center" style=" background: #edd6b8; font-size: 14px;padding:10px 5px; color: #000100;border-right: 1px solid #c4c1be;">{{var week2_abandonment}}% <sub style="font-size: 8px; color: #{{var week2_color}};"> ({{var week2_difference}}%)</sub></td>
|
103 |
+
<td align="center" style=" background: #edd6b8; font-size: 14px;padding:10px 5px; color: #000100;border-right: 1px solid #c4c1be;">{{var week3_abandonment}}% <sub style="font-size: 8px; color: #{{var week3_color}};"> ({{var week3_difference}}%)</sub></td>
|
104 |
+
<td align="center" style=" background: #edd6b8; font-size: 14px;padding:10px 5px; color: #000100;">{{var week4_abandonment}}% <sub style="font-size: 8px; color: #{{var week4_color}};"> ({{var week4_difference}}%)</sub></td>
|
105 |
+
</tr>
|
106 |
+
</table>
|
107 |
+
</td>
|
108 |
+
</tr>
|
109 |
+
<tr>
|
110 |
+
<td height="50"><a href="{{var dashboard_url}}">Click here to view full reports on Magento dashboard</a></a></td>
|
111 |
+
</tr>
|
112 |
+
<tr>
|
113 |
+
<td height="50"><span style="border-top:1px solid #d5d5d5; display:block;"></span></td>
|
114 |
+
</tr>
|
115 |
+
<tr>
|
116 |
+
<td>
|
117 |
+
<table>
|
118 |
+
<tr>
|
119 |
+
<td valign="top"><img src="{{skin url='anattadesign/abandonedcarts/images/tipimproveicon.jpg'}}" alt="" style="float: left; border:none;" /></td>
|
120 |
+
<td valign="top">
|
121 |
+
<h2 style="font-size: 22px; color: #333; display:block; padding:4px 0 0 10px; margin: 0; float: left;font-family: 'LatoBlack',arial,sans-serif; font-weight: normal;">A tip to improve your checkout.</h2>
|
122 |
+
<br>
|
123 |
+
<p style="font-size:16px; color: #333; padding: 20px 0 15px 10px; margin: 0px; line-height: 24px;">{{var tip}}</p>
|
124 |
+
</td>
|
125 |
+
</tr>
|
126 |
+
</table>
|
127 |
+
</td>
|
128 |
+
</tr>
|
129 |
+
<!--
|
130 |
+
<tr>
|
131 |
+
<td>
|
132 |
+
<table width="100%">
|
133 |
+
<tr>
|
134 |
+
<td valign="top" align="center">
|
135 |
+
<p style="border-top:1px solid #d5d5d5; padding: 30px 0 25px 0; margin: 0px; text-align: center; margin-top:20px;"><a href="#"><img src="{{skin url='anattadesign/abandonedcarts/images/learnmore.jpg'}}" alt="" style="border: none;" /></a></p>
|
136 |
+
</td>
|
137 |
+
</tr>
|
138 |
+
</table>
|
139 |
+
</td>
|
140 |
+
</tr>
|
141 |
+
-->
|
142 |
+
</table>
|
143 |
+
<!--main table-->
|
144 |
+
{{var email_footer}}
|
145 |
+
</div>
|
146 |
+
</body>
|
app/locale/es_ES/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","ABANDONMENT RATE"
|
2 |
+
"April","April"
|
3 |
+
"August","August"
|
4 |
+
"Billing","Billing"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETED CHECKOUT"
|
6 |
+
"December","December"
|
7 |
+
"ENTERED CHECKOUT","ENTERED CHECKOUT"
|
8 |
+
"February","February"
|
9 |
+
"January","January"
|
10 |
+
"July","July"
|
11 |
+
"June","June"
|
12 |
+
"Login","Login"
|
13 |
+
"March","March"
|
14 |
+
"May","May"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s is now available"
|
16 |
+
"November","November"
|
17 |
+
"October","October"
|
18 |
+
"Payment","Payment"
|
19 |
+
"Review","Review"
|
20 |
+
"September","September"
|
21 |
+
"Shipping","Shipping"
|
22 |
+
"Shipping Method","Shipping Method"
|
23 |
+
"TIPS!:","TIPS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version."
|
app/locale/fr_FR/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","TAUX D'ABANDON"
|
2 |
+
"April","Avril"
|
3 |
+
"August","Août"
|
4 |
+
"Billing","facturation"
|
5 |
+
"COMPLETED CHECKOUT","REMPLIR MON PANIER"
|
6 |
+
"December","Décembre"
|
7 |
+
"ENTERED CHECKOUT","INSCRIRE MON PANIER"
|
8 |
+
"February","février"
|
9 |
+
"January","janvier"
|
10 |
+
"July","Juillet"
|
11 |
+
"June","Juin"
|
12 |
+
"Login","Connexion"
|
13 |
+
"March","mars"
|
14 |
+
"May","mai"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s est maintenant disponible"
|
16 |
+
"November","Novembre"
|
17 |
+
"October","octobre"
|
18 |
+
"Payment","paiement"
|
19 |
+
"Review","réviser"
|
20 |
+
"September","Septembre"
|
21 |
+
"Shipping","Livraison"
|
22 |
+
"Shipping Method","Mode de livraison"
|
23 |
+
"TIPS!:","CONSEILS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Votre version de My Abandoned Cart n'est actuellement pas mise à jour. Veuillez <a href=\"%s\">cliquez ici</a> pour obtenir la dernière version."
|
app/locale/it_IT/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","Tasso di abbandono"
|
2 |
+
"April","aprile"
|
3 |
+
"August","agosto"
|
4 |
+
"Billing","fatturazione"
|
5 |
+
"COMPLETED CHECKOUT","COMPLETATO CHECKOUT"
|
6 |
+
"December","dicembre"
|
7 |
+
"ENTERED CHECKOUT","ENTRATO CHECKOUT"
|
8 |
+
"February","febbraio"
|
9 |
+
"January","gennaio"
|
10 |
+
"July","luglio"
|
11 |
+
"June","giugno"
|
12 |
+
"Login","Accedi"
|
13 |
+
"March","marzo"
|
14 |
+
"May","maggio"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s è ora disponibile"
|
16 |
+
"November","novembre"
|
17 |
+
"October","ottobre"
|
18 |
+
"Payment","pagamento"
|
19 |
+
"Review","recensione"
|
20 |
+
"September","Settembre"
|
21 |
+
"Shipping","spedizione"
|
22 |
+
"Shipping Method","Metodo di Spedizione"
|
23 |
+
"TIPS!:","CONSIGLI!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","La tua versione di My Abandoned Cart al momento non è up-to-date. per favore <a href=\"%s\">clicca qui</a> per ottenere la versione più recente."
|
app/locale/pt_BR/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","taxa de abandono"
|
2 |
+
"April","abril"
|
3 |
+
"August","agosto"
|
4 |
+
"Billing","faturamento"
|
5 |
+
"COMPLETED CHECKOUT","FINALIZAR CONCLUÍDO"
|
6 |
+
"December","dezembro"
|
7 |
+
"ENTERED CHECKOUT","check-out informada"
|
8 |
+
"February","fevereiro"
|
9 |
+
"January","janeiro"
|
10 |
+
"July","julho"
|
11 |
+
"June","junho"
|
12 |
+
"Login","Login"
|
13 |
+
"March","março"
|
14 |
+
"May","maio"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s já está disponível"
|
16 |
+
"November","novembro"
|
17 |
+
"October","outubro"
|
18 |
+
"Payment","pagamento"
|
19 |
+
"Review","rever"
|
20 |
+
"September","setembro"
|
21 |
+
"Shipping","expedição"
|
22 |
+
"Shipping Method","Método de envio"
|
23 |
+
"TIPS!:","DICAS!:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Sua versão do Meu Carrinho Abandonado não está up-to-date. <a href=\"%s\">clique aqui</a> para obter a versão mais recente."
|
app/locale/ru_RU/AnattaDesign_AbandonedCarts.csv
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"ABANDONMENT RATE","Коэффициент прерывания"
|
2 |
+
"April","апрель"
|
3 |
+
"August","август"
|
4 |
+
"Billing","Биллинг"
|
5 |
+
"COMPLETED CHECKOUT","ЗАВЕРШЕНА ПРОВЕРКА"
|
6 |
+
"December","декабрь"
|
7 |
+
"ENTERED CHECKOUT","ВВЕДЕН Купить"
|
8 |
+
"February","февраль"
|
9 |
+
"January","январь"
|
10 |
+
"July","июль"
|
11 |
+
"June","июнь"
|
12 |
+
"Login","Войти"
|
13 |
+
"March","март"
|
14 |
+
"May","может"
|
15 |
+
"My Abandoned Cart %s is now available","My Abandoned Cart %s теперь доступен"
|
16 |
+
"November","ноябрь"
|
17 |
+
"October","октябрь"
|
18 |
+
"Payment","оплата"
|
19 |
+
"Review","Обзор"
|
20 |
+
"September","сентябрь"
|
21 |
+
"Shipping","судоходство"
|
22 |
+
"Shipping Method","Способ доставки"
|
23 |
+
"TIPS!:","СОВЕТЫ:"
|
24 |
+
"Your version of My Abandoned Cart is currently not up-to-date. Please <a href=\"%s\">click here</a> to get the latest version.","Ваша версия My Abandoned Cart не соответствующий современным требованиям. Пожалуйста, <a href=\"%s\">нажмите здесь</a>, чтобы получить последнюю версию."
|
package.xml
CHANGED
@@ -1,20 +1,24 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>AnattaDesign_AbandonedCarts</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Track abandoned carts & show a funnel report to show statistics</summary>
|
10 |
<description>Track abandoned carts & show a funnel report to show statistics</description>
|
11 |
-
<notes>v1.
|
12 |

|
13 |
-
|
|
|
|
|
|
|
|
|
14 |
<authors><author><name>Anatta Design</name><user>anattadesign</user><email>nirav@anattadesign.com</email></author></authors>
|
15 |
-
<date>2013-
|
16 |
-
<time>
|
17 |
-
<contents><target name="magelocal"><dir name="AnattaDesign"><dir name="AbandonedCarts"><dir><dir name="Block"><file name="Widget.php" hash="c6baf4dc8dc25ed7c62e3b89cc78c413"/></dir><dir name="Helper"><file name="Data.php" hash="
|
18 |
<compatible/>
|
19 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
20 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>AnattaDesign_AbandonedCarts</name>
|
4 |
+
<version>1.2.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Track abandoned carts & show a funnel report to show statistics</summary>
|
10 |
<description>Track abandoned carts & show a funnel report to show statistics</description>
|
11 |
+
<notes>v1.2.0
|
12 |

|
13 |
+
* Weekly email reports
|
14 |
+
* Fully compatible with OneStepCheckout
|
15 |
+
* Better tracking support for Paypal
|
16 |
+
* Better translation
|
17 |
+
* Added Modman file</notes>
|
18 |
<authors><author><name>Anatta Design</name><user>anattadesign</user><email>nirav@anattadesign.com</email></author></authors>
|
19 |
+
<date>2013-07-29</date>
|
20 |
+
<time>04:44:12</time>
|
21 |
+
<contents><target name="magelocal"><dir name="AnattaDesign"><dir name="AbandonedCarts"><dir><dir name="Block"><file name="Widget.php" hash="c6baf4dc8dc25ed7c62e3b89cc78c413"/></dir><dir name="Helper"><file name="Data.php" hash="3b5ef34244919bebf7cfce65ff40e5d9"/></dir><dir name="Model"><dir name="Checkout"><dir name="Onepage"><file name="Observer.php" hash="fb89020f3132555a332e29c65ee5d6df"/></dir></dir><dir name="Mysql4"><dir name="Opstatistics"><file name="Collection.php" hash="66b29da439c196f325c9faec4b171f30"/></dir><file name="Opstatistics.php" hash="9ccaa740ddbfa607204bde0222fceafc"/><dir name="Osstatistics"><file name="Collection.php" hash="ece88b40a6434e61c3bb98777f9e5a80"/></dir><file name="Osstatistics.php" hash="5824f15a418adc0c034ea74264540227"/><dir name="Statistics"><file name="Collection.php" hash="c92997470a39016001c196fa4bf17861"/></dir><file name="Statistics.php" hash="88d17295de3fc05637ac55e71c52a3a3"/></dir><file name="Observer.php" hash="92700ee1de1652a4469e6cb2455f1a03"/><file name="Opstatistics.php" hash="f3bfe7b7e44ef33e15877332a767b25a"/><file name="Osstatistics.php" hash="1040d239d807dbd5f5b4f4bf0e8e2423"/><file name="Statistics.php" hash="e36ff5a9e407bbb2867da3a209a62a42"/></dir><dir name="controllers"><file name="WidgetController.php" hash="ca23d690e09435f5f4df54c539dea74b"/></dir><dir name="etc"><file name="adminhtml.xml" hash="77cbef67f18b08bed62237f75bfb68d7"/><file name="config.xml" hash="9f1317eaa5eb6b8800a7a9f2c5902d54"/><file name="system.xml" hash="66777828da2bfd1a353f09398409e379"/></dir><dir name="sql"><dir name="anattadesign_abandonedcarts_setup"><file name="mysql4-install-1.0.0.php" hash="b235486189e6609d4f9abc82ffae76c7"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="f9f7cbb6845f014f74c294692189c369"/><file name="mysql4-upgrade-1.0.1-1.1.0.php" hash="f9f7cbb6845f014f74c294692189c369"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="f9f7cbb6845f014f74c294692189c369"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="f9f7cbb6845f014f74c294692189c369"/><file name="mysql4-upgrade-1.1.2-1.1.2.1.php" hash="4d69acff510bb3e985155a88d1f13130"/><file name="mysql4-upgrade-1.1.2.1-1.2.0.php" hash="f9f7cbb6845f014f74c294692189c369"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="anattadesign_abandonedcarts.xml" hash="c14481626a0c367d974a5660ed930482"/></dir><dir name="template"><dir name="anattadesign"><dir name="abandonedcarts"><file name="widget.phtml" hash="4d2e492c3e0a8faf6c009da1320778aa"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="AnattaDesign_AbandonedCarts.xml" hash="fba54c1c1c7b2abd323a56bcdd56be20"/></dir></target><target name="mage"><dir name="js"><dir name="anattadesign"><dir name="abandonedcarts"><file name="adminhack.js" hash="d8d1b081040d1dbbe87296e4ed064a91"/><file name="zepto.js" hash="61e66962daedd0943adc35a97b0eaa27"/></dir></dir></dir><dir name="app"><dir name="locale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="anattadesign_abandonedcarts"><file name="weekly_report.html" hash="0b47ad9df7af1d4004b2d8f0cdb8e23e"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="anattadesign"><dir name="abandonedcarts"><dir><dir name="css"><file name="style.css" hash="91b410a9fc1a5ff1e20e7c321fd64e23"/></dir><dir name="images"><file name="bt-rep.gif" hash="f2054c34f7d04f81082ef2d686464c5f"/><file name="powerdby.jpg" hash="82777ae659f9316a27dbf7e14e23a5e2"/><file name="table-step-img-arrow.jpg" hash="ea678306e6a71818565e09c771bec7a5"/><file name="table-step-img-last-arrow.jpg" hash="88b14ae05fd2105ba317025925a39880"/><file name="table-step-img.jpg" hash="4bcb56e9e828981d0c1654925848791e"/></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="anattadesign"><file name="abandonedcarts" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="AnattaDesign_AbandonedCarts.csv" hash="bfa007f4595474255a4a72840bf6e671"/></dir><dir name="es_ES"><file name="AnattaDesign_AbandonedCarts.csv" hash="bfa007f4595474255a4a72840bf6e671"/></dir><dir name="en_CA"><file name="AnattaDesign_AbandonedCarts.csv" hash="bfa007f4595474255a4a72840bf6e671"/></dir><dir name="ru_RU"><file name="AnattaDesign_AbandonedCarts.csv" hash="403b72f3f24fa5e88bfdf98bf9acd176"/></dir><dir name="en_GB"><file name="AnattaDesign_AbandonedCarts.csv" hash="bfa007f4595474255a4a72840bf6e671"/></dir><dir name="de_DE"><file name="AnattaDesign_AbandonedCarts.csv" hash="6102c1e8cf0bc0e5fae1a873f295b213"/></dir><dir name="it_IT"><file name="AnattaDesign_AbandonedCarts.csv" hash="e191dc1c7c2b0e247e25f2b93f6e5cb3"/></dir><dir name="en_AU"><file name="AnattaDesign_AbandonedCarts.csv" hash="bfa007f4595474255a4a72840bf6e671"/></dir><dir name="fr_FR"><file name="AnattaDesign_AbandonedCarts.csv" hash="4ac2c0619a05f4db3e0facacd2e9c474"/></dir><dir name="pt_BR"><file name="AnattaDesign_AbandonedCarts.csv" hash="6167c9a9b6390223e133944bbd38d844"/></dir></target></contents>
|
22 |
<compatible/>
|
23 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
24 |
</package>
|