WooCommerce Cart Abandonment Recovery - Version 1.1.0

Version Description

Download this release

Release Info

Developer sandesh055
Plugin Icon 128x128 WooCommerce Cart Abandonment Recovery
Version 1.1.0
Comparing to
See all releases

Code changes from version 1.0.0 to 1.1.0

admin/assets/css/admin-cart-abandonment-rtl.css CHANGED
@@ -129,8 +129,213 @@
129
  }
130
 
131
  .wcf-ca-left-report-field-group {
132
- display: table-cell; text-align: right
133
  }
134
  .wcf-ca-right-report-field-group {
135
- display: table-cell; text-align: left
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  }
130
 
131
  .wcf-ca-left-report-field-group {
132
+ display: table-cell; text-align: right;
133
  }
134
  .wcf-ca-right-report-field-group {
135
+ display: table-cell; text-align: left;
136
+ }
137
+ .wcf-ca-report-table-row {
138
+ color: #636363;
139
+ border: 1px solid #e5e5e5;
140
+ }
141
+
142
+ /* Newly Added for the modification of the User Order detail window UI */
143
+
144
+ /* Column Classes */
145
+
146
+ .wcf-ca-column-one{
147
+ width: 100%;
148
+ }
149
+
150
+ .wcf-ca-column-two,
151
+ .wcf-ca-user-address{
152
+ width: 50%;
153
+ }
154
+
155
+ .wcf-pull-left{
156
+ float: right;
157
+ }
158
+ .wcf-ca-email-data,
159
+ .wcf-ca-user-detail{
160
+ border-radius: 3px;
161
+ padding: 20px 25px;
162
+ min-height: 330px;
163
+ max-height: 420px;
164
+ width: 100%;
165
+ overflow: auto;
166
+ }
167
+
168
+ .wcf-ca-user-detail{
169
+ max-height: 100%;
170
+ }
171
+
172
+ .wcf-ca-user-order{
173
+ border-radius: 3px;
174
+ padding: 20px 25px;
175
+ overflow: hidden;
176
+ height: auto;
177
+ width: 100%;
178
+ min-height: 100%;
179
+ max-height: 100%;
180
+ }
181
+
182
+ /* Column Classes */
183
+
184
+ /* Section classes */
185
+
186
+ .wcf-ca-column:first-of-type{
187
+ margin-left: 13px;
188
+ }
189
+ .wcf-ca-column:second-of-type{
190
+ margin-right: 13px;
191
+ }
192
+
193
+ .wcf-ca-column{
194
+ background-color: #fff;
195
+ border-radius: 3px;
196
+ display: flex;
197
+ }
198
+
199
+ /* Section Classes */
200
+
201
+
202
+ .wcf-ca-right-report-field-group .back-button{
203
+ height: auto;
204
+ padding: 3px 5px 3px 10px;
205
+ }
206
+
207
+ .wcf-ca-left-report-field-group .back-button .dashicons{
208
+ vertical-align: middle;
209
+ }
210
+
211
+ .wcf-ca-panel{
212
+ cursor: default;
213
+ /*background-color: #fff;*/
214
+ border-radius: 5px;
215
+ display: flex;
216
+ padding: 0px;
217
+ margin: 10px 0 25px;
218
+ }
219
+
220
+ .wcf-table{
221
+ border: none;
222
+ text-align: right;
223
+ width: 100%;
224
+ }
225
+ .wcf-table tr,
226
+ .wcf-table tr th,
227
+ .wcf-table tr td{
228
+ border: none;
229
+ }
230
+
231
+ .wcf-table tr th a,
232
+ .wcf-table tr td a{
233
+ text-decoration: none;
234
+ cursor: pointer;
235
+ }
236
+
237
+ .wcf-table tr th{
238
+ vertical-align: bottom;
239
+ border-bottom: 2px solid #ddd;
240
+ }
241
+
242
+ .wcf-table tr td{
243
+ border-bottom: 1px solid #ddd;
244
+ line-height: 1.42857143;
245
+ vertical-align: top;
246
+ position: relative;
247
+ }
248
+
249
+ .wcf-ca-panel h2{
250
+ margin: 0;
251
+ font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
252
+ font-size: 21px;
253
+ font-weight: 400;
254
+ line-height: 1.2;
255
+ text-shadow: -1px 1px 1px #fff;
256
+ padding: 10px 0 15px;
257
+ margin: 0;
258
+ }
259
+
260
+ .wcf-ca-user-order table{
261
+ width: 100%;
262
+ }
263
+
264
+ .wcf-ca-user-order table thead th{
265
+ text-align: center;
266
+ padding: 1em 3em;
267
+ font-weight: 400;
268
+ color: #999;
269
+ /*background: #f8f8f8;*/
270
+ -webkit-touch-callout: none;
271
+ -webkit-user-select: none;
272
+ -moz-user-select: none;
273
+ -ms-user-select: none;
274
+ user-select: none;
275
+ }
276
+
277
+ .wcf-ca-user-order table thead th:first-of-type{
278
+ padding-right: 3.6em;
279
+ text-align: right;
280
+ }
281
+
282
+ .wcf-ca-user-order table tbody tr td {
283
+ text-align: center;
284
+ padding: 1em 3em;
285
+ vertical-align: middle;
286
+ }
287
+
288
+ .wcf-ca-user-order table tbody tr td:first-of-type{
289
+ text-align: right;
290
+ /*width: 38px;*/
291
+ padding-right: 3em;
292
+ }
293
+
294
+
295
+ .wcf-ca-user-order table tbody tr#wcf-ca-discount td:first-of-type,
296
+ .wcf-ca-user-order table tbody tr#wcf-ca-other td:first-of-type,
297
+ .wcf-ca-user-order table tbody tr#wcf-ca-shipping td:first-of-type,
298
+ .wcf-ca-user-order table tbody tr#wcf-ca-cart-total td:first-of-type {
299
+ text-align: left;
300
+ font-weight: 600;
301
+ width: 82%;
302
+ }
303
+ .wcf-ca-user-order table tbody tr#wcf-ca-discount td {
304
+ border-top: 1px solid #ccc;
305
+ }
306
+
307
+ .wcf-ca-tooltip-text.display_tool_tip{
308
+ display: block;
309
+ }
310
+
311
+ .wcf-ca-tooltip-text::before {
312
+ border-right: 5px solid transparent;
313
+ border-left: 5px solid transparent;
314
+ border-top: 5px solid transparent;
315
+ border-bottom: 5px solid #444;
316
+ bottom: auto;
317
+ content: " ";
318
+ font-size: 0;
319
+ right: 25px;
320
+ line-height: 0;
321
+ margin-right: -5px;
322
+ position: absolute;
323
+ top: -10px;
324
+ width: 0;
325
+ }
326
+
327
+ .wcf-ca-tooltip-text {
328
+ background: #444;
329
+ border-radius: 3px;
330
+ color: #fff;
331
+ height: auto;
332
+ right: 0;
333
+ margin-top: 10px;
334
+ max-width: 150px;
335
+ position: absolute;
336
+ padding: 6px 10px;
337
+ width: 100%;
338
+ display: none;
339
+ z-index: 10000;
340
+ }
341
+ /* Newly Added for the modification of the User Order detail window UI */
admin/assets/css/admin-cart-abandonment.css CHANGED
@@ -129,8 +129,213 @@
129
  }
130
 
131
  .wcf-ca-left-report-field-group {
132
- display: table-cell; text-align: left
133
  }
134
  .wcf-ca-right-report-field-group {
135
- display: table-cell; text-align: right
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  }
130
 
131
  .wcf-ca-left-report-field-group {
132
+ display: table-cell; text-align: left;
133
  }
134
  .wcf-ca-right-report-field-group {
135
+ display: table-cell; text-align: right;
136
+ }
137
+ .wcf-ca-report-table-row {
138
+ color: #636363;
139
+ border: 1px solid #e5e5e5;
140
+ }
141
+
142
+ /* Newly Added for the modification of the User Order detail window UI */
143
+
144
+ /* Column Classes */
145
+
146
+ .wcf-ca-column-one{
147
+ width: 100%;
148
+ }
149
+
150
+ .wcf-ca-column-two,
151
+ .wcf-ca-user-address{
152
+ width: 50%;
153
+ }
154
+
155
+ .wcf-pull-left{
156
+ float: left;
157
+ }
158
+ .wcf-ca-email-data,
159
+ .wcf-ca-user-detail{
160
+ border-radius: 3px;
161
+ padding: 20px 25px;
162
+ min-height: 330px;
163
+ max-height: 420px;
164
+ width: 100%;
165
+ overflow: auto;
166
+ }
167
+
168
+ .wcf-ca-user-detail{
169
+ max-height: 100%;
170
+ }
171
+
172
+ .wcf-ca-user-order{
173
+ border-radius: 3px;
174
+ padding: 20px 25px;
175
+ overflow: hidden;
176
+ height: auto;
177
+ width: 100%;
178
+ min-height: 100%;
179
+ max-height: 100%;
180
+ }
181
+
182
+ /* Column Classes */
183
+
184
+ /* Section classes */
185
+
186
+ .wcf-ca-column:first-of-type{
187
+ margin-right: 13px;
188
+ }
189
+ .wcf-ca-column:second-of-type{
190
+ margin-left: 13px;
191
+ }
192
+
193
+ .wcf-ca-column{
194
+ background-color: #fff;
195
+ border-radius: 3px;
196
+ display: flex;
197
+ }
198
+
199
+ /* Section Classes */
200
+
201
+
202
+ .wcf-ca-right-report-field-group .back-button{
203
+ height: auto;
204
+ padding: 3px 10px 3px 5px;
205
+ }
206
+
207
+ .wcf-ca-left-report-field-group .back-button .dashicons{
208
+ vertical-align: middle;
209
+ }
210
+
211
+ .wcf-ca-panel{
212
+ cursor: default;
213
+ /*background-color: #fff;*/
214
+ border-radius: 5px;
215
+ display: flex;
216
+ padding: 0px;
217
+ margin: 10px 0 25px;
218
+ }
219
+
220
+ .wcf-table{
221
+ border: none;
222
+ text-align: left;
223
+ width: 100%;
224
+ }
225
+ .wcf-table tr,
226
+ .wcf-table tr th,
227
+ .wcf-table tr td{
228
+ border: none;
229
+ }
230
+
231
+ .wcf-table tr th a,
232
+ .wcf-table tr td a{
233
+ text-decoration: none;
234
+ cursor: pointer;
235
+ }
236
+
237
+ .wcf-table tr th{
238
+ vertical-align: bottom;
239
+ border-bottom: 2px solid #ddd;
240
+ }
241
+
242
+ .wcf-table tr td{
243
+ border-bottom: 1px solid #ddd;
244
+ line-height: 1.42857143;
245
+ vertical-align: top;
246
+ position: relative;
247
+ }
248
+
249
+ .wcf-ca-panel h2{
250
+ margin: 0;
251
+ font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
252
+ font-size: 21px;
253
+ font-weight: 400;
254
+ line-height: 1.2;
255
+ text-shadow: 1px 1px 1px #fff;
256
+ padding: 10px 0 15px;
257
+ margin: 0;
258
+ }
259
+
260
+ .wcf-ca-user-order table{
261
+ width: 100%;
262
+ }
263
+
264
+ .wcf-ca-user-order table thead th{
265
+ text-align: center;
266
+ padding: 1em 3em;
267
+ font-weight: 400;
268
+ color: #999;
269
+ /*background: #f8f8f8;*/
270
+ -webkit-touch-callout: none;
271
+ -webkit-user-select: none;
272
+ -moz-user-select: none;
273
+ -ms-user-select: none;
274
+ user-select: none;
275
+ }
276
+
277
+ .wcf-ca-user-order table thead th:first-of-type{
278
+ padding-left: 3.6em;
279
+ text-align: left;
280
+ }
281
+
282
+ .wcf-ca-user-order table tbody tr td {
283
+ text-align: center;
284
+ padding: 1em 3em;
285
+ vertical-align: middle;
286
+ }
287
+
288
+ .wcf-ca-user-order table tbody tr td:first-of-type{
289
+ text-align: left;
290
+ /*width: 38px;*/
291
+ padding-left: 3em;
292
+ }
293
+
294
+
295
+ .wcf-ca-user-order table tbody tr#wcf-ca-discount td:first-of-type,
296
+ .wcf-ca-user-order table tbody tr#wcf-ca-other td:first-of-type,
297
+ .wcf-ca-user-order table tbody tr#wcf-ca-shipping td:first-of-type,
298
+ .wcf-ca-user-order table tbody tr#wcf-ca-cart-total td:first-of-type {
299
+ text-align: right;
300
+ font-weight: 600;
301
+ width: 82%;
302
+ }
303
+ .wcf-ca-user-order table tbody tr#wcf-ca-discount td {
304
+ border-top: 1px solid #ccc;
305
+ }
306
+
307
+ .wcf-ca-tooltip-text.display_tool_tip{
308
+ display: block;
309
+ }
310
+
311
+ .wcf-ca-tooltip-text::before {
312
+ border-left: 5px solid transparent;
313
+ border-right: 5px solid transparent;
314
+ border-top: 5px solid transparent;
315
+ border-bottom: 5px solid #444;
316
+ bottom: auto;
317
+ content: " ";
318
+ font-size: 0;
319
+ left: 25px;
320
+ line-height: 0;
321
+ margin-left: -5px;
322
+ position: absolute;
323
+ top: -10px;
324
+ width: 0;
325
+ }
326
+
327
+ .wcf-ca-tooltip-text {
328
+ background: #444;
329
+ border-radius: 3px;
330
+ color: #fff;
331
+ height: auto;
332
+ left: 0;
333
+ margin-top: 10px;
334
+ max-width: 150px;
335
+ position: absolute;
336
+ padding: 6px 10px;
337
+ width: 100%;
338
+ display: none;
339
+ z-index: 10000;
340
+ }
341
+ /* Newly Added for the modification of the User Order detail window UI */
admin/assets/js/admin-email-templates.js CHANGED
@@ -232,11 +232,24 @@
232
  },
233
  }
234
 
 
 
 
 
 
 
 
 
 
 
 
235
  $(document).ready(
236
  function () {
237
  EmailTemplatesAdmin.init();
238
  CartAbandonmentSettings.init();
239
  ZapierSettings.init();
 
 
240
  }
241
  );
242
 
232
  },
233
  }
234
 
235
+ ToolTipHover = {
236
+ init: function () {
237
+
238
+ $(".wcf-ca-report-table-row .wcf-ca-icon-row").hover(function(){
239
+ $(this).find('.wcf-ca-tooltip-text').toggleClass("display_tool_tip");
240
+ });
241
+ },
242
+
243
+
244
+ }
245
+
246
  $(document).ready(
247
  function () {
248
  EmailTemplatesAdmin.init();
249
  CartAbandonmentSettings.init();
250
  ZapierSettings.init();
251
+
252
+ ToolTipHover.init();
253
  }
254
  );
255
 
changelog.txt CHANGED
@@ -1,2 +1,5 @@
 
 
 
1
  Version 1.0.0 - Monday, 27th May 2019
2
- - Initial Release
1
+ Version 1.1.0 - Thursday, 30th May 2019
2
+ - Added a view for admin to check email status specific to the particular abandoned user.
3
+
4
  Version 1.0.0 - Monday, 27th May 2019
5
+ - Initial Release
classes/class-cartflows-ca-loader.php CHANGED
@@ -77,7 +77,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
77
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
78
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
79
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
80
- define( 'CARTFLOWS_CA_VER', '1.0.0' );
81
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
82
 
83
  define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
@@ -131,7 +131,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
131
 
132
  $class = 'notice notice-error';
133
  /* translators: %s: html tags */
134
- $message = sprintf( __( 'The %1$sWoocommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated.', 'cartflows-ca' ), '<strong>', '</strong>' );
135
 
136
  $plugin = 'woocommerce/woocommerce.php';
137
 
77
  define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
78
  define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
79
  define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
80
+ define( 'CARTFLOWS_CA_VER', '1.1.0' );
81
  define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
82
 
83
  define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
131
 
132
  $class = 'notice notice-error';
133
  /* translators: %s: html tags */
134
+ $message = sprintf( __( 'The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated.', 'cartflows-ca' ), '<strong>', '</strong>' );
135
 
136
  $plugin = 'woocommerce/woocommerce.php';
137
 
languages/cartflows-ca.pot CHANGED
@@ -1,417 +1,515 @@
1
- # Copyright (C) 2019 CartFlows Inc
2
- # This file is distributed under the same license as the Woocommerce Cart Abandonment Recovery package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Woocommerce Cart Abandonment Recovery 1.0.0\n"
6
- "Report-Msgid-Bugs-To: "
7
- "https://wordpress.org/support/plugin/woocommerce-cart-abandonment-recovery\n"
8
- "POT-Creation-Date: 2019-05-27 06:23:42+00:00\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=utf-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
13
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
- "Language-Team: LANGUAGE <LL@li.org>\n"
15
- "Language: en\n"
16
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
- "X-Poedit-Country: United States\n"
18
- "X-Poedit-SourceCharset: UTF-8\n"
19
- "X-Poedit-KeywordsList: "
20
- "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
21
- "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
22
- "X-Poedit-Basepath: ../\n"
23
- "X-Poedit-SearchPath-0: .\n"
24
- "X-Poedit-Bookmarks: \n"
25
- "X-Textdomain-Support: yes\n"
26
- "X-Generator: grunt-wp-i18n 1.0.3\n"
27
-
28
- #: classes/class-cartflows-ca-loader.php:134
29
- #. translators: %s: html tags
30
- msgid ""
31
- "The %1$sWoocommerce Cart Abandonment Recovery%2$s plugin requires "
32
- "%1$sWooCommerce%2$s plugin installed & activated."
33
- msgstr ""
34
-
35
- #: classes/class-cartflows-ca-loader.php:144
36
- msgid "Activate WooCommerce"
37
- msgstr ""
38
-
39
- #: classes/class-cartflows-ca-loader.php:152
40
- msgid "Install WooCommerce"
41
- msgstr ""
42
-
43
- #: classes/class-cartflows-ca-settings.php:53
44
- msgid "Cart Abandonment Settings"
45
- msgstr ""
46
-
47
- #: classes/class-cartflows-ca-settings.php:60
48
- msgid "Enable Cart Abandonment Tracking"
49
- msgstr ""
50
-
51
- #: classes/class-cartflows-ca-settings.php:64
52
- msgid ""
53
- "Start capturing abandoned carts. <br/><br/> <span "
54
- "class=\"description\"><strong>Note:</strong> Cart will be considered "
55
- "abandoned if order is not completed in <strong>15 minutes</strong>.</span>"
56
- msgstr ""
57
-
58
- #: classes/class-cartflows-ca-settings.php:76
59
- msgid "Email settings"
60
- msgstr ""
61
-
62
- #: classes/class-cartflows-ca-settings.php:83
63
- msgid "\"From\" Name"
64
- msgstr ""
65
-
66
- #: classes/class-cartflows-ca-settings.php:92
67
- msgid "\"From\" Address"
68
- msgstr ""
69
-
70
- #: classes/class-cartflows-ca-settings.php:101
71
- msgid "Send Reply Emails to"
72
- msgstr ""
73
-
74
- #: classes/class-cartflows-ca-settings.php:128
75
- msgid "Enable Webhook"
76
- msgstr ""
77
-
78
- #: classes/class-cartflows-ca-settings.php:132
79
- msgid ""
80
- "Allows you to trigger webhooks automatically upon cart abandonment and "
81
- "recovery."
82
- msgstr ""
83
-
84
- #: classes/class-cartflows-ca-settings.php:137
85
- msgid "Webhook URL"
86
- msgstr ""
87
-
88
- #: classes/class-cartflows-ca-settings.php:156
89
- msgid "Coupon Code Settings"
90
- msgstr ""
91
-
92
- #: classes/class-cartflows-ca-settings.php:163
93
- msgid "Create Coupon Code"
94
- msgstr ""
95
-
96
- #: classes/class-cartflows-ca-settings.php:167
97
- msgid ""
98
- "Auto-create the special coupon for the abandoned cart to send over the "
99
- "emails."
100
- msgstr ""
101
-
102
- #: classes/class-cartflows-ca-settings.php:172
103
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:491
104
- msgid "Discount Type"
105
- msgstr ""
106
-
107
- #: classes/class-cartflows-ca-settings.php:181
108
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:523
109
- msgid "Coupon Amount"
110
- msgstr ""
111
-
112
- #: classes/class-cartflows-ca-settings.php:190
113
- msgid "Coupon Expires After"
114
- msgstr ""
115
-
116
- #: classes/class-cartflows-ca-settings.php:225
117
- msgid "Webhook Settings"
118
- msgstr ""
119
-
120
- #: classes/class-cartflows-ca-settings.php:234
121
- msgid "GDPR Settings"
122
- msgstr ""
123
-
124
- #: classes/class-cartflows-ca-settings.php:241
125
- msgid "Enable GDPR integration"
126
- msgstr ""
127
-
128
- #: classes/class-cartflows-ca-settings.php:245
129
- msgid ""
130
- "Ask confirmation from the user before tracking data. <br/><br/> <span "
131
- "class=\"description\"><strong>Note:</strong> By checking this, it will show "
132
- "up confirmation text below the email id on checkout page.</span>"
133
- msgstr ""
134
-
135
- #: classes/class-cartflows-ca-settings.php:250
136
- msgid "GDPR Message"
137
- msgstr ""
138
-
139
- #: classes/class-cartflows-ca-settings.php:421
140
- msgid "Coupon code should be numeric and has to be greater than or equals to 1."
141
- msgstr ""
142
-
143
- #: classes/class-cartflows-ca-settings.php:531
144
- msgid "Invalid email \"From\" address field"
145
- msgstr ""
146
-
147
- #: classes/class-cartflows-ca-settings.php:549
148
- msgid "Invalid email \"Reply\" address field"
149
- msgstr ""
150
-
151
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:55
152
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:123
153
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:85
154
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:119
155
- msgid "Delete"
156
- msgstr ""
157
-
158
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:59
159
- msgid "Unsubscribe"
160
- msgstr ""
161
-
162
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:189
163
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1482
164
- msgid "Name"
165
- msgstr ""
166
-
167
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:190
168
- msgid "Email"
169
- msgstr ""
170
-
171
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:191
172
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1488
173
- msgid "Cart Total"
174
- msgstr ""
175
-
176
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:192
177
- msgid "Order Status"
178
- msgstr ""
179
-
180
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:193
181
- msgid "Time"
182
- msgstr ""
183
-
184
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:97
185
- msgid "Mail has been sent successfully!"
186
- msgstr ""
187
-
188
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:99
189
- msgid "Mail sending failed!"
190
- msgstr ""
191
-
192
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:132
193
- msgid "Every Fifteen Minutes"
194
- msgstr ""
195
-
196
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
197
- msgid "You have successfully unsubscribed from our email list."
198
- msgstr ""
199
-
200
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
201
- msgid "Unsubscribed"
202
- msgstr ""
203
-
204
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:343
205
- msgid "No Thanks"
206
- msgstr ""
207
-
208
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:737
209
- msgid "CartFlows says: This order was abandoned & subsequently recovered."
210
- msgstr ""
211
-
212
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:849
213
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:850
214
- msgid "Cart Abandonment"
215
- msgstr ""
216
-
217
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:883
218
- msgid "Items deleted: %d"
219
- msgstr ""
220
-
221
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:900
222
- msgid "User unsubscribed successfully!"
223
- msgstr ""
224
-
225
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1095
226
- msgid "Report"
227
- msgstr ""
228
-
229
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1111
230
- msgid "Emails"
231
- msgstr ""
232
-
233
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1127
234
- msgid "Settings"
235
- msgstr ""
236
-
237
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1478
238
- msgid "Your Shopping Cart"
239
- msgstr ""
240
-
241
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1481
242
- msgid "Item"
243
- msgstr ""
244
-
245
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1483
246
- msgid "Quantity"
247
- msgstr ""
248
-
249
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1484
250
- msgid "Price"
251
- msgstr ""
252
-
253
- #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1485
254
- msgid "Line Subtotal"
255
- msgstr ""
256
-
257
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:73
258
- msgid "Edit"
259
- msgstr ""
260
-
261
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:97
262
- msgid "Clone"
263
- msgstr ""
264
-
265
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:183
266
- msgid "Template Name"
267
- msgstr ""
268
-
269
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:184
270
- msgid "Email Subject"
271
- msgstr ""
272
-
273
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:185
274
- msgid "Trigger After"
275
- msgstr ""
276
-
277
- #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:186
278
- msgid "Is Activated?"
279
- msgstr ""
280
-
281
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:187
282
- msgid "The Email Template has been successfully added."
283
- msgstr ""
284
-
285
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:197
286
- msgid "The Email Template has been cloned successfully."
287
- msgstr ""
288
-
289
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:207
290
- msgid "The Email Template has been successfully deleted."
291
- msgstr ""
292
-
293
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:216
294
- msgid "The Email Template has been successfully updated."
295
- msgstr ""
296
-
297
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:226
298
- msgid "Default Email Templates has been restored successfully."
299
- msgstr ""
300
-
301
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:392
302
- msgid "Activate Template now?"
303
- msgstr ""
304
-
305
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:412
306
- msgid "Template Name:"
307
- msgstr ""
308
-
309
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:427
310
- msgid "Email Subject:"
311
- msgstr ""
312
-
313
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:442
314
- msgid "Email Body:"
315
- msgstr ""
316
-
317
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:471
318
- msgid "Create Coupon"
319
- msgstr ""
320
-
321
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:541
322
- msgid "Coupon expiry date"
323
- msgstr ""
324
-
325
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:578
326
- msgid "Send This Email"
327
- msgstr ""
328
-
329
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:611
330
- msgid "after cart is abandoned."
331
- msgstr ""
332
-
333
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:621
334
- msgid "Send Test Email To:"
335
- msgstr ""
336
-
337
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:935
338
- msgid "Create New Template"
339
- msgstr ""
340
-
341
- #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:938
342
- msgid " Restore Default Templates"
343
- msgstr ""
344
-
345
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:46
346
- msgid "Recoverable Orders"
347
- msgstr ""
348
-
349
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:50
350
- msgid "Total Recoverable Orders."
351
- msgstr ""
352
-
353
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:55
354
- msgid "Recovered Orders"
355
- msgstr ""
356
-
357
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:57
358
- msgid "Total Recovered Orders."
359
- msgstr ""
360
-
361
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:62
362
- msgid "Lost Orders"
363
- msgstr ""
364
-
365
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:65
366
- msgid "Total Lost Orders."
367
- msgstr ""
368
-
369
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:74
370
- msgid "Recoverable Revenue"
371
- msgstr ""
372
-
373
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:79
374
- msgid "Total Recoverable Revenue."
375
- msgstr ""
376
-
377
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:84
378
- msgid "Recovered Revenue"
379
- msgstr ""
380
-
381
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:90
382
- msgid "Total Recovered Revenue."
383
- msgstr ""
384
-
385
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:95
386
- msgid "Recovery Rate"
387
- msgstr ""
388
-
389
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:97
390
- msgid "Total Percentage Of Recovered Orders After Abandonment."
391
- msgstr ""
392
-
393
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:135
394
- msgid "No Orders Found."
395
- msgstr ""
396
-
397
- #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php:10
398
- msgid "Woocommerce Cart Abandonment Recovery "
399
- msgstr ""
400
-
401
- #. Plugin Name of the plugin/theme
402
- msgid "Woocommerce Cart Abandonment Recovery"
403
- msgstr ""
404
-
405
- #. Author URI of the plugin/theme
406
- msgid "https://cartflows.com/"
407
- msgstr ""
408
-
409
- #. Description of the plugin/theme
410
- msgid ""
411
- "Recover your lost revenue. Capture email address of users on the checkout "
412
- "page and send follow up emails if they don't complete the purchase."
413
- msgstr ""
414
-
415
- #. Author of the plugin/theme
416
- msgid "CartFlows Inc"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  msgstr ""
1
+ # Copyright (C) 2019 CartFlows Inc
2
+ # This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.1.0\n"
6
+ "Report-Msgid-Bugs-To: "
7
+ "https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
8
+ "POT-Creation-Date: 2019-05-30 05:42:46+00:00\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=utf-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: en\n"
16
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
+ "X-Poedit-Country: United States\n"
18
+ "X-Poedit-SourceCharset: UTF-8\n"
19
+ "X-Poedit-KeywordsList: "
20
+ "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
21
+ "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
22
+ "X-Poedit-Basepath: ../\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+ "X-Poedit-Bookmarks: \n"
25
+ "X-Textdomain-Support: yes\n"
26
+ "X-Generator: grunt-wp-i18n 1.0.3\n"
27
+
28
+ #: classes/class-cartflows-ca-loader.php:134
29
+ #. translators: %s: html tags
30
+ msgid ""
31
+ "The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires "
32
+ "%1$sWooCommerce%2$s plugin installed & activated."
33
+ msgstr ""
34
+
35
+ #: classes/class-cartflows-ca-loader.php:144
36
+ msgid "Activate WooCommerce"
37
+ msgstr ""
38
+
39
+ #: classes/class-cartflows-ca-loader.php:152
40
+ msgid "Install WooCommerce"
41
+ msgstr ""
42
+
43
+ #: classes/class-cartflows-ca-settings.php:53
44
+ msgid "Cart Abandonment Settings"
45
+ msgstr ""
46
+
47
+ #: classes/class-cartflows-ca-settings.php:60
48
+ msgid "Enable Cart Abandonment Tracking"
49
+ msgstr ""
50
+
51
+ #: classes/class-cartflows-ca-settings.php:64
52
+ msgid ""
53
+ "Start capturing abandoned carts. <br/><br/> <span "
54
+ "class=\"description\"><strong>Note:</strong> Cart will be considered "
55
+ "abandoned if order is not completed in <strong>15 minutes</strong>.</span>"
56
+ msgstr ""
57
+
58
+ #: classes/class-cartflows-ca-settings.php:76
59
+ msgid "Email settings"
60
+ msgstr ""
61
+
62
+ #: classes/class-cartflows-ca-settings.php:83
63
+ msgid "\"From\" Name"
64
+ msgstr ""
65
+
66
+ #: classes/class-cartflows-ca-settings.php:92
67
+ msgid "\"From\" Address"
68
+ msgstr ""
69
+
70
+ #: classes/class-cartflows-ca-settings.php:101
71
+ msgid "Send Reply Emails to"
72
+ msgstr ""
73
+
74
+ #: classes/class-cartflows-ca-settings.php:128
75
+ msgid "Enable Webhook"
76
+ msgstr ""
77
+
78
+ #: classes/class-cartflows-ca-settings.php:132
79
+ msgid ""
80
+ "Allows you to trigger webhooks automatically upon cart abandonment and "
81
+ "recovery."
82
+ msgstr ""
83
+
84
+ #: classes/class-cartflows-ca-settings.php:137
85
+ msgid "Webhook URL"
86
+ msgstr ""
87
+
88
+ #: classes/class-cartflows-ca-settings.php:156
89
+ msgid "Coupon Code Settings"
90
+ msgstr ""
91
+
92
+ #: classes/class-cartflows-ca-settings.php:163
93
+ msgid "Create Coupon Code"
94
+ msgstr ""
95
+
96
+ #: classes/class-cartflows-ca-settings.php:167
97
+ msgid ""
98
+ "Auto-create the special coupon for the abandoned cart to send over the "
99
+ "emails."
100
+ msgstr ""
101
+
102
+ #: classes/class-cartflows-ca-settings.php:172
103
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:491
104
+ msgid "Discount Type"
105
+ msgstr ""
106
+
107
+ #: classes/class-cartflows-ca-settings.php:181
108
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:523
109
+ msgid "Coupon Amount"
110
+ msgstr ""
111
+
112
+ #: classes/class-cartflows-ca-settings.php:190
113
+ msgid "Coupon Expires After"
114
+ msgstr ""
115
+
116
+ #: classes/class-cartflows-ca-settings.php:225
117
+ msgid "Webhook Settings"
118
+ msgstr ""
119
+
120
+ #: classes/class-cartflows-ca-settings.php:234
121
+ msgid "GDPR Settings"
122
+ msgstr ""
123
+
124
+ #: classes/class-cartflows-ca-settings.php:241
125
+ msgid "Enable GDPR integration"
126
+ msgstr ""
127
+
128
+ #: classes/class-cartflows-ca-settings.php:245
129
+ msgid ""
130
+ "Ask confirmation from the user before tracking data. <br/><br/> <span "
131
+ "class=\"description\"><strong>Note:</strong> By checking this, it will show "
132
+ "up confirmation text below the email id on checkout page.</span>"
133
+ msgstr ""
134
+
135
+ #: classes/class-cartflows-ca-settings.php:250
136
+ msgid "GDPR Message"
137
+ msgstr ""
138
+
139
+ #: classes/class-cartflows-ca-settings.php:421
140
+ msgid "Coupon code should be numeric and has to be greater than or equals to 1."
141
+ msgstr ""
142
+
143
+ #: classes/class-cartflows-ca-settings.php:531
144
+ msgid "Invalid email \"From\" address field"
145
+ msgstr ""
146
+
147
+ #: classes/class-cartflows-ca-settings.php:549
148
+ msgid "Invalid email \"Reply\" address field"
149
+ msgstr ""
150
+
151
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:65
152
+ msgid "View"
153
+ msgstr ""
154
+
155
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:66
156
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:122
157
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:85
158
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:119
159
+ msgid "Delete"
160
+ msgstr ""
161
+
162
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:70
163
+ msgid "Unsubscribe"
164
+ msgstr ""
165
+
166
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:188
167
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1510
168
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1572
169
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:112
170
+ msgid "Name"
171
+ msgstr ""
172
+
173
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:189
174
+ msgid "Email"
175
+ msgstr ""
176
+
177
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:190
178
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1530
179
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1594
180
+ msgid "Cart Total"
181
+ msgstr ""
182
+
183
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:191
184
+ msgid "Order Status"
185
+ msgstr ""
186
+
187
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:192
188
+ msgid "Time"
189
+ msgstr ""
190
+
191
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:97
192
+ msgid "Mail has been sent successfully!"
193
+ msgstr ""
194
+
195
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:99
196
+ msgid "Mail sending failed!"
197
+ msgstr ""
198
+
199
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:132
200
+ msgid "Every Fifteen Minutes"
201
+ msgstr ""
202
+
203
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
204
+ msgid "You have successfully unsubscribed from our email list."
205
+ msgstr ""
206
+
207
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:197
208
+ msgid "Unsubscribed"
209
+ msgstr ""
210
+
211
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:345
212
+ msgid "No Thanks"
213
+ msgstr ""
214
+
215
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:739
216
+ msgid "CartFlows says: This order was abandoned & subsequently recovered."
217
+ msgstr ""
218
+
219
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:851
220
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:852
221
+ msgid "Cart Abandonment"
222
+ msgstr ""
223
+
224
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:885
225
+ msgid "Items deleted: %d"
226
+ msgstr ""
227
+
228
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:902
229
+ msgid "User unsubscribed successfully!"
230
+ msgstr ""
231
+
232
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1097
233
+ msgid "Report"
234
+ msgstr ""
235
+
236
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1113
237
+ msgid "Emails"
238
+ msgstr ""
239
+
240
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1129
241
+ msgid "Settings"
242
+ msgstr ""
243
+
244
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1509
245
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1571
246
+ msgid "Item"
247
+ msgstr ""
248
+
249
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1511
250
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1573
251
+ msgid "Quantity"
252
+ msgstr ""
253
+
254
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1512
255
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1574
256
+ msgid "Price"
257
+ msgstr ""
258
+
259
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1513
260
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1575
261
+ msgid "Line Subtotal"
262
+ msgstr ""
263
+
264
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1517
265
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1581
266
+ msgid "Discount"
267
+ msgstr ""
268
+
269
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1521
270
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1585
271
+ msgid "Other"
272
+ msgstr ""
273
+
274
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1526
275
+ #: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1590
276
+ msgid "Shipping"
277
+ msgstr ""
278
+
279
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:73
280
+ msgid "Edit"
281
+ msgstr ""
282
+
283
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:97
284
+ msgid "Clone"
285
+ msgstr ""
286
+
287
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:183
288
+ msgid "Template Name"
289
+ msgstr ""
290
+
291
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:184
292
+ msgid "Email Subject"
293
+ msgstr ""
294
+
295
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:185
296
+ msgid "Trigger After"
297
+ msgstr ""
298
+
299
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:186
300
+ msgid "Is Activated?"
301
+ msgstr ""
302
+
303
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:187
304
+ msgid "The Email Template has been successfully added."
305
+ msgstr ""
306
+
307
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:197
308
+ msgid "The Email Template has been cloned successfully."
309
+ msgstr ""
310
+
311
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:207
312
+ msgid "The Email Template has been successfully deleted."
313
+ msgstr ""
314
+
315
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:216
316
+ msgid "The Email Template has been successfully updated."
317
+ msgstr ""
318
+
319
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:226
320
+ msgid "Default Email Templates has been restored successfully."
321
+ msgstr ""
322
+
323
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:392
324
+ msgid "Activate Template now?"
325
+ msgstr ""
326
+
327
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:412
328
+ msgid "Template Name:"
329
+ msgstr ""
330
+
331
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:427
332
+ msgid "Email Subject:"
333
+ msgstr ""
334
+
335
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:442
336
+ msgid "Email Body:"
337
+ msgstr ""
338
+
339
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:471
340
+ msgid "Create Coupon"
341
+ msgstr ""
342
+
343
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:541
344
+ msgid "Coupon expiry date"
345
+ msgstr ""
346
+
347
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:578
348
+ msgid "Send This Email"
349
+ msgstr ""
350
+
351
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:611
352
+ msgid "after cart is abandoned."
353
+ msgstr ""
354
+
355
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:621
356
+ msgid "Send Test Email To:"
357
+ msgstr ""
358
+
359
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:935
360
+ msgid "Create New Template"
361
+ msgstr ""
362
+
363
+ #: modules/cart-abandonment/class-cartflows-ca-email-templates.php:938
364
+ msgid " Restore Default Templates"
365
+ msgstr ""
366
+
367
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:36
368
+ msgid "Email Details:"
369
+ msgstr ""
370
+
371
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:38
372
+ msgid " No Email Scheduled."
373
+ msgstr ""
374
+
375
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:74
376
+ msgid "The email has unsubscribed and won't be sent further."
377
+ msgstr ""
378
+
379
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:77
380
+ msgid "The email has been sent."
381
+ msgstr ""
382
+
383
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:80
384
+ msgid "Email is in the queue and will be sent at the scheduled time."
385
+ msgstr ""
386
+
387
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:108
388
+ msgid "User Address Details:"
389
+ msgstr ""
390
+
391
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:111
392
+ msgid "Billing Address"
393
+ msgstr ""
394
+
395
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:115
396
+ msgid "Email address"
397
+ msgstr ""
398
+
399
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:120
400
+ msgid "Phone"
401
+ msgstr ""
402
+
403
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:125
404
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:145
405
+ msgid "Address 1:"
406
+ msgstr ""
407
+
408
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:128
409
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:148
410
+ msgid "Address 2:"
411
+ msgstr ""
412
+
413
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:131
414
+ msgid "Country, City:"
415
+ msgstr ""
416
+
417
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:134
418
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:154
419
+ msgid "State:"
420
+ msgstr ""
421
+
422
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:138
423
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:160
424
+ msgid "Postcode:"
425
+ msgstr ""
426
+
427
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:143
428
+ msgid "Shipping Address"
429
+ msgstr ""
430
+
431
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:151
432
+ msgid "City:"
433
+ msgstr ""
434
+
435
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:157
436
+ msgid "Country:"
437
+ msgstr ""
438
+
439
+ #: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:173
440
+ msgid "User Order Details:"
441
+ msgstr ""
442
+
443
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:46
444
+ msgid "Recoverable Orders"
445
+ msgstr ""
446
+
447
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:50
448
+ msgid "Total Recoverable Orders."
449
+ msgstr ""
450
+
451
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:55
452
+ msgid "Recovered Orders"
453
+ msgstr ""
454
+
455
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:57
456
+ msgid "Total Recovered Orders."
457
+ msgstr ""
458
+
459
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:62
460
+ msgid "Lost Orders"
461
+ msgstr ""
462
+
463
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:65
464
+ msgid "Total Lost Orders."
465
+ msgstr ""
466
+
467
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:74
468
+ msgid "Recoverable Revenue"
469
+ msgstr ""
470
+
471
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:79
472
+ msgid "Total Recoverable Revenue."
473
+ msgstr ""
474
+
475
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:84
476
+ msgid "Recovered Revenue"
477
+ msgstr ""
478
+
479
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:90
480
+ msgid "Total Recovered Revenue."
481
+ msgstr ""
482
+
483
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:95
484
+ msgid "Recovery Rate"
485
+ msgstr ""
486
+
487
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:97
488
+ msgid "Total Percentage Of Recovered Orders After Abandonment."
489
+ msgstr ""
490
+
491
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php:135
492
+ msgid "No Orders Found."
493
+ msgstr ""
494
+
495
+ #: modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php:10
496
+ msgid "Woocommerce Cart Abandonment Recovery "
497
+ msgstr ""
498
+
499
+ #. Plugin Name of the plugin/theme
500
+ msgid "WooCommerce Cart Abandonment Recovery"
501
+ msgstr ""
502
+
503
+ #. Author URI of the plugin/theme
504
+ msgid "https://cartflows.com/"
505
+ msgstr ""
506
+
507
+ #. Description of the plugin/theme
508
+ msgid ""
509
+ "Recover your lost revenue. Capture email address of users on the checkout "
510
+ "page and send follow up emails if they don't complete the purchase."
511
+ msgstr ""
512
+
513
+ #. Author of the plugin/theme
514
+ msgid "CartFlows Inc"
515
  msgstr ""
modules/cart-abandonment/class-cartflows-ca-cart-abandonment-db.php CHANGED
@@ -164,71 +164,77 @@ class Cartflows_Ca_Cart_Abandonment_Db {
164
  $cart_abandonment_template_db = $wpdb->prefix . CARTFLOWS_CA_EMAIL_TEMPLATE_TABLE;
165
  $cart_abandonment_template_meta_db = $wpdb->prefix . CARTFLOWS_CA_EMAIL_TEMPLATE_META_TABLE;
166
 
167
- $email_templates = array(
168
- array(
169
- 'template_name' => 'Sample Email Template 1',
170
- 'subject' => 'Purchase issue?',
171
- 'body' => "<p>Hi {{customer.firstname}}!</p><p>We\'re having trouble processing your recent purchase. Would you mind completing it?</p><p>Here\'s a link to continue where you left off:</p><p><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'> Continue Your Purchase Now </a></p><p>Kindly,<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
172
- 'frequency' => 30,
173
- 'frequency_unit' => 'MINUTE',
174
- ),
175
- array(
176
- 'template_name' => 'Sample Email Template 2',
177
- 'subject' => 'Need help?',
178
- 'body' => "<p>Hi {{customer.firstname}}!</p><p>I'm {{admin.firstname}}, and I help handle customer issues at {{admin.company}}.</p><p>I just noticed that you tried to make a purchase, but unfortunately, there was some trouble. Is there anything I can do to help?</p><p>You should be able to complete your checkout in less than a minute:<br /><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'> Click here to continue your purchase </a><p><p>Thanks!<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
179
- 'frequency' => 1,
180
- 'frequency_unit' => 'DAY',
181
- ),
182
- array(
183
- 'template_name' => 'Sample Email Template 3',
184
- 'subject' => 'Exclusive discount for you. Let\'s get things started!',
185
- 'body' => "<p>Few days back you left {{cart.product.names}} in your cart.</p><p>To help make up your mind, we have added an exclusive 10% discount coupon {{cart.coupon_code}} to your cart.</p><p><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'>Complete Your Purchase Now &gt;&gt;</a></p><p>Hurry! This is a onetime offer and will expire in 24 Hours.</p><p>In case you couldn\'t finish your order due to technical difficulties or because you need some help, just reply to this email we will be happy to help.</p><p>Kind Regards,<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
186
- 'frequency' => 3,
187
- 'frequency_unit' => 'DAY',
188
- ),
189
- );
190
-
191
- // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
192
- $template_index = 1;
193
- $template_meta_index = 1;
194
- foreach ( $email_templates as $email_template ) {
195
- $wpdb->query(
196
- $wpdb->prepare(
197
- "INSERT INTO $cart_abandonment_template_db (`id`, `template_name`, `email_subject`, `email_body`, `frequency`, `frequency_unit`)
198
- VALUES ( %d, %s, %s, %s, %d, %s ) ON DUPLICATE KEY UPDATE id = id",
199
- $force_restore ? null : $template_index++,
200
- $email_template['template_name'],
201
- $email_template['subject'],
202
- $email_template['body'],
203
- $email_template['frequency'],
204
- $email_template['frequency_unit']
205
- )
206
  );
207
 
208
- $meta_data = array(
209
- 'override_global_coupon' => false,
210
- 'discount_type' => 'percent',
211
- 'coupon_amount' => 10,
212
- 'coupon_expiry_date' => '',
213
- 'coupon_expiry_unit' => 'hours',
214
- );
215
-
216
- $email_tmpl_id = $wpdb->insert_id;
217
-
218
- foreach ( $meta_data as $meta_key => $meta_value ) {
219
  $wpdb->query(
220
  $wpdb->prepare(
221
- "INSERT INTO $cart_abandonment_template_meta_db ( `id`, `email_template_id`, `meta_key`, `meta_value` )
222
- VALUES ( %d, %d, %s, %s ) ON DUPLICATE KEY UPDATE id = id",
223
- $force_restore ? null : $template_meta_index++,
224
- $email_tmpl_id,
225
- $meta_key,
226
- $meta_value
 
 
227
  )
228
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
 
230
  }
231
- // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
232
  }
233
  }
234
 
164
  $cart_abandonment_template_db = $wpdb->prefix . CARTFLOWS_CA_EMAIL_TEMPLATE_TABLE;
165
  $cart_abandonment_template_meta_db = $wpdb->prefix . CARTFLOWS_CA_EMAIL_TEMPLATE_META_TABLE;
166
 
167
+ $email_template_count = $wpdb->get_var( "SELECT COUNT(*) FROM $cart_abandonment_template_db" ); // phpcs:ignore
168
+
169
+ if ( ( ! $email_template_count ) || $force_restore ) {
170
+
171
+ $email_templates = array(
172
+ array(
173
+ 'template_name' => 'Sample Email Template 1',
174
+ 'subject' => 'Purchase issue?',
175
+ 'body' => "<p>Hi {{customer.firstname}}!</p><p>We\'re having trouble processing your recent purchase. Would you mind completing it?</p><p>Here\'s a link to continue where you left off:</p><p><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'> Continue Your Purchase Now </a></p><p>Kindly,<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
176
+ 'frequency' => 30,
177
+ 'frequency_unit' => 'MINUTE',
178
+ ),
179
+ array(
180
+ 'template_name' => 'Sample Email Template 2',
181
+ 'subject' => 'Need help?',
182
+ 'body' => "<p>Hi {{customer.firstname}}!</p><p>I'm {{admin.firstname}}, and I help handle customer issues at {{admin.company}}.</p><p>I just noticed that you tried to make a purchase, but unfortunately, there was some trouble. Is there anything I can do to help?</p><p>You should be able to complete your checkout in less than a minute:<br /><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'> Click here to continue your purchase </a><p><p>Thanks!<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
183
+ 'frequency' => 1,
184
+ 'frequency_unit' => 'DAY',
185
+ ),
186
+ array(
187
+ 'template_name' => 'Sample Email Template 3',
188
+ 'subject' => 'Exclusive discount for you. Let\'s get things started!',
189
+ 'body' => "<p>Few days back you left {{cart.product.names}} in your cart.</p><p>To help make up your mind, we have added an exclusive 10% discount coupon {{cart.coupon_code}} to your cart.</p><p><a href='{{cart.checkout_url}}' target='_blank' rel='noopener'>Complete Your Purchase Now &gt;&gt;</a></p><p>Hurry! This is a onetime offer and will expire in 24 Hours.</p><p>In case you couldn\'t finish your order due to technical difficulties or because you need some help, just reply to this email we will be happy to help.</p><p>Kind Regards,<br />{{admin.firstname}}<br />{{admin.company}}</p><p>{{cart.unsubscribe}}</p>",
190
+ 'frequency' => 3,
191
+ 'frequency_unit' => 'DAY',
192
+ ),
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  );
194
 
195
+ // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
196
+ $template_index = 1;
197
+ $template_meta_index = 1;
198
+ foreach ( $email_templates as $email_template ) {
 
 
 
 
 
 
 
199
  $wpdb->query(
200
  $wpdb->prepare(
201
+ "INSERT INTO $cart_abandonment_template_db (`id`, `template_name`, `email_subject`, `email_body`, `frequency`, `frequency_unit`)
202
+ VALUES ( %d, %s, %s, %s, %d, %s )",
203
+ $force_restore ? null : $template_index++,
204
+ $email_template['template_name'],
205
+ $email_template['subject'],
206
+ $email_template['body'],
207
+ $email_template['frequency'],
208
+ $email_template['frequency_unit']
209
  )
210
  );
211
+
212
+ $meta_data = array(
213
+ 'override_global_coupon' => false,
214
+ 'discount_type' => 'percent',
215
+ 'coupon_amount' => 10,
216
+ 'coupon_expiry_date' => '',
217
+ 'coupon_expiry_unit' => 'hours',
218
+ );
219
+
220
+ $email_tmpl_id = $wpdb->insert_id;
221
+
222
+ foreach ( $meta_data as $meta_key => $meta_value ) {
223
+ $wpdb->query(
224
+ $wpdb->prepare(
225
+ "INSERT INTO $cart_abandonment_template_meta_db ( `id`, `email_template_id`, `meta_key`, `meta_value` )
226
+ VALUES ( %d, %d, %s, %s )",
227
+ $force_restore ? null : $template_meta_index++,
228
+ $email_tmpl_id,
229
+ $meta_key,
230
+ $meta_value
231
+ )
232
+ );
233
+ }
234
  }
235
+ // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
236
  }
237
+
238
  }
239
  }
240
 
modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php CHANGED
@@ -51,7 +51,18 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
51
 
52
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
53
 
 
 
 
 
 
 
 
 
 
 
54
  $actions = array(
 
55
  'delete' => sprintf( '<a onclick="return confirm(\'Are you sure to delete this order?\');" href="?page=%s&action=delete&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Delete', 'cartflows-ca' ) ),
56
  );
57
 
@@ -61,26 +72,14 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
61
  }
62
 
63
  return sprintf(
64
- '<span class="dashicons dashicons-admin-users"></span> %s %s %s',
 
65
  esc_html( $item_details['wcf_first_name'] ),
66
  esc_html( $item_details['wcf_last_name'] ),
67
  $this->row_actions( $actions )
68
  );
69
  }
70
 
71
- /**
72
- * Rendering Email field
73
- *
74
- * @param object $item - row (key, value array).
75
- * @return HTML
76
- */
77
- function column_email( $item ) {
78
- return sprintf(
79
- '<a href="mailto:%1$s" title="">%1$s</a>',
80
- esc_html( $item['email'] )
81
- );
82
- }
83
-
84
  /**
85
  * Render date column
86
  *
51
 
52
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
53
 
54
+ $view_url = add_query_arg(
55
+ array(
56
+ 'page' => WCF_CA_PAGE_NAME,
57
+ 'action' => WCF_ACTION_REPORTS,
58
+ 'sub_action' => WCF_SUB_ACTION_REPORTS_VIEW,
59
+ 'session_id' => sanitize_text_field( $item['session_id'] ),
60
+ ),
61
+ admin_url( '/admin.php' )
62
+ );
63
+
64
  $actions = array(
65
+ 'view' => sprintf( '<a href="%s">%s</a>', esc_url( $view_url ), __( 'View', 'cartflows-ca' ) ),
66
  'delete' => sprintf( '<a onclick="return confirm(\'Are you sure to delete this order?\');" href="?page=%s&action=delete&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Delete', 'cartflows-ca' ) ),
67
  );
68
 
72
  }
73
 
74
  return sprintf(
75
+ '<a href="%s"><span class="dashicons dashicons-admin-users"></span> %s %s %s </a>',
76
+ esc_url( $view_url ),
77
  esc_html( $item_details['wcf_first_name'] ),
78
  esc_html( $item_details['wcf_last_name'] ),
79
  $this->row_actions( $actions )
80
  );
81
  }
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  /**
84
  * Render date column
85
  *
modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php CHANGED
@@ -241,6 +241,8 @@ class Cartflows_Ca_Cart_Abandonment {
241
  define( 'WCF_ACTION_SETTINGS', 'settings' );
242
  define( 'WCF_ACTION_REPORTS', 'reports' );
243
 
 
 
244
  define( 'WCF_DEFAULT_CUT_OFF_TIME', 15 );
245
  define( 'WCF_DEFAULT_COUPON_AMOUNT', 10 );
246
 
@@ -932,7 +934,7 @@ class Cartflows_Ca_Cart_Abandonment {
932
 
933
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
934
 
935
- if ( ! WCF_CA_PAGE_NAME === $page ) {
936
  return;
937
  }
938
 
@@ -1077,7 +1079,7 @@ class Cartflows_Ca_Cart_Abandonment {
1077
  ?>
1078
 
1079
 
1080
- <h2 class="nav-tab-wrapper woo-nav-tab-wrapper">
1081
 
1082
  <?php
1083
  $url = add_query_arg( array(
@@ -1127,7 +1129,7 @@ class Cartflows_Ca_Cart_Abandonment {
1127
  <?php _e( 'Settings', 'cartflows-ca' ); ?>
1128
  </a>
1129
 
1130
- </h2>
1131
  <?php
1132
  // phpcs:enable
1133
  }
@@ -1210,7 +1212,25 @@ class Cartflows_Ca_Cart_Abandonment {
1210
  global $woocommerce;
1211
  $conversion_rate = number_format_i18n( $conversion_rate, 2 );
1212
  $currency_symbol = get_woocommerce_currency_symbol();
1213
- include_once CARTFLOWS_CART_ABANDONMENT_TRACKING_DIR . 'includes/admin/cartflows-cart-abandonment-reports.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1214
  }
1215
 
1216
  /**
@@ -1324,6 +1344,7 @@ class Cartflows_Ca_Cart_Abandonment {
1324
  WC()->cart->add_to_cart( $random_product->ID );
1325
  }
1326
  }
 
1327
  $email_data->cart_contents = serialize( WC()->cart->get_cart() );
1328
  $email_data->time = current_time( WCF_CA_DATETIME_FORMAT );
1329
  return $email_data;
@@ -1356,7 +1377,7 @@ class Cartflows_Ca_Cart_Abandonment {
1356
  $user_last_name = ucfirst( $other_fields['wcf_last_name'] );
1357
  $user_full_name = trim( $user_first_name . ' ' . $user_last_name );
1358
 
1359
- $subject_email_preview = stripslashes( $email_data->email_subject );
1360
  $subject_email_preview = convert_smilies( $subject_email_preview );
1361
  $subject_email_preview = str_replace( '{{customer.firstname}}', $user_first_name, $subject_email_preview );
1362
  $body_email_preview = convert_smilies( $email_data->email_body );
@@ -1403,7 +1424,7 @@ class Cartflows_Ca_Cart_Abandonment {
1403
  $headers = 'From: ' . $from_email_name . ' <' . $from_email_preview . '>' . "\r\n";
1404
  $headers .= 'Content-Type: text/html' . "\r\n";
1405
  $headers .= 'Reply-To: ' . $reply_name_preview . ' ' . "\r\n";
1406
- $var = $this->get_email_product_block( $email_data->cart_contents );
1407
 
1408
  $body_email_preview = str_replace( '{{cart.product.table}}', $var, $body_email_preview );
1409
  $mail_result = wp_mail( $email_data->email, $subject_email_preview, stripslashes( $body_email_preview ), $headers );
@@ -1455,41 +1476,126 @@ class Cartflows_Ca_Cart_Abandonment {
1455
  * Generate the view for email product cart block.
1456
  *
1457
  * @param object $cart_contents user cart contents details.
 
1458
  * @return string
1459
  */
1460
- function get_email_product_block( $cart_contents ) {
1461
 
1462
  $cart_items = unserialize( $cart_contents );
1463
  $currency_symbol = get_woocommerce_currency_symbol();
1464
  $tr = '';
1465
  $total = 0;
 
 
 
 
1466
  foreach ( $cart_items as $cart_item ) {
1467
 
1468
- $total = $total + $cart_item['line_subtotal'];
1469
- $tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
1470
- <td style="color: #636363; border: 1px solid #e5e5e5; "><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $cart_item['product_id'] ) ) . ' "/></td>
1471
- <td style="color: #636363; border: 1px solid #e5e5e5; ">' . $cart_item['data']->get_title() . '</td>
1472
- <td style="color: #636363; border: 1px solid #e5e5e5; "> ' . $cart_item['quantity'] . ' </td>
1473
- <td style="color: #636363; border: 1px solid #e5e5e5; ">' . $currency_symbol . $cart_item['line_total'] . '</td>
1474
- <td style="color: #636363; border: 1px solid #e5e5e5; " >' . $currency_symbol . $cart_item['line_subtotal'] . '</td>
1475
- </tr> ';
 
 
 
1476
  }
1477
 
1478
- return '<h3>' . __( 'Your Shopping Cart', 'cartflows-ca' ) . '</h3>
1479
- <table align="left" cellpadding="20" cellspacing="0" style="float: none; border: 1px solid #e5e5e5;">
1480
- <tr align="center">
1481
- <th style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Item', 'cartflows-ca' ) . '</th>
1482
- <th style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Name', 'cartflows-ca' ) . '</th>
1483
- <th style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Quantity', 'cartflows-ca' ) . '</th>
1484
- <th style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Price', 'cartflows-ca' ) . '</th>
1485
- <th style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Line Subtotal', 'cartflows-ca' ) . '</th>
1486
- </tr> ' . $tr . '
1487
- <tr align="center">
1488
- <td colspan="4" style="color: #636363; border: 1px solid #e5e5e5; ">' . __( 'Cart Total', 'cartflows-ca' ) . '</td>
1489
- <td style="color: #636363; border: 1px solid #e5e5e5; ">' . $currency_symbol . $total . '</td>
1490
- </tr>
1491
- </table>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1492
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1493
  }
1494
 
1495
  /**
@@ -1634,6 +1740,23 @@ class Cartflows_Ca_Cart_Abandonment {
1634
  }
1635
  }
1636
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1637
  }
1638
 
1639
  Cartflows_Ca_Cart_Abandonment::get_instance();
241
  define( 'WCF_ACTION_SETTINGS', 'settings' );
242
  define( 'WCF_ACTION_REPORTS', 'reports' );
243
 
244
+ define( 'WCF_SUB_ACTION_REPORTS_VIEW', 'view' );
245
+
246
  define( 'WCF_DEFAULT_CUT_OFF_TIME', 15 );
247
  define( 'WCF_DEFAULT_COUPON_AMOUNT', 10 );
248
 
934
 
935
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
936
 
937
+ if ( ! ( WCF_CA_PAGE_NAME === $page ) ) {
938
  return;
939
  }
940
 
1079
  ?>
1080
 
1081
 
1082
+ <div class="nav-tab-wrapper woo-nav-tab-wrapper">
1083
 
1084
  <?php
1085
  $url = add_query_arg( array(
1129
  <?php _e( 'Settings', 'cartflows-ca' ); ?>
1130
  </a>
1131
 
1132
+ </div>
1133
  <?php
1134
  // phpcs:enable
1135
  }
1212
  global $woocommerce;
1213
  $conversion_rate = number_format_i18n( $conversion_rate, 2 );
1214
  $currency_symbol = get_woocommerce_currency_symbol();
1215
+ require_once CARTFLOWS_CART_ABANDONMENT_TRACKING_DIR . 'includes/admin/cartflows-cart-abandonment-reports.php';
1216
+ }
1217
+
1218
+
1219
+ /**
1220
+ * Show report details for specific order.
1221
+ */
1222
+ function wcf_display_report_details() {
1223
+
1224
+ $sesson_id = filter_input( INPUT_GET, 'session_id', FILTER_SANITIZE_STRING );
1225
+
1226
+ if ( $sesson_id ) {
1227
+ $details = $this->get_checkout_details( $sesson_id );
1228
+ $user_details = (object) unserialize( $details->other_fields );
1229
+ $scheduled_emails = $this->fetch_scheduled_emails( $sesson_id );
1230
+
1231
+ require_once CARTFLOWS_CART_ABANDONMENT_TRACKING_DIR . 'includes/admin/cartflows-ca-single-report-details.php';
1232
+ }
1233
+
1234
  }
1235
 
1236
  /**
1344
  WC()->cart->add_to_cart( $random_product->ID );
1345
  }
1346
  }
1347
+ $email_data->cart_total = WC()->cart->total + WC()->cart->get_cart_shipping_total();
1348
  $email_data->cart_contents = serialize( WC()->cart->get_cart() );
1349
  $email_data->time = current_time( WCF_CA_DATETIME_FORMAT );
1350
  return $email_data;
1377
  $user_last_name = ucfirst( $other_fields['wcf_last_name'] );
1378
  $user_full_name = trim( $user_first_name . ' ' . $user_last_name );
1379
 
1380
+ $subject_email_preview = stripslashes( html_entity_decode( $email_data->email_subject, ENT_QUOTES ) );
1381
  $subject_email_preview = convert_smilies( $subject_email_preview );
1382
  $subject_email_preview = str_replace( '{{customer.firstname}}', $user_first_name, $subject_email_preview );
1383
  $body_email_preview = convert_smilies( $email_data->email_body );
1424
  $headers = 'From: ' . $from_email_name . ' <' . $from_email_preview . '>' . "\r\n";
1425
  $headers .= 'Content-Type: text/html' . "\r\n";
1426
  $headers .= 'Reply-To: ' . $reply_name_preview . ' ' . "\r\n";
1427
+ $var = $this->get_email_product_block( $email_data->cart_contents, $email_data->cart_total );
1428
 
1429
  $body_email_preview = str_replace( '{{cart.product.table}}', $var, $body_email_preview );
1430
  $mail_result = wp_mail( $email_data->email, $subject_email_preview, stripslashes( $body_email_preview ), $headers );
1476
  * Generate the view for email product cart block.
1477
  *
1478
  * @param object $cart_contents user cart contents details.
1479
+ * @param float $cart_total user cart total.
1480
  * @return string
1481
  */
1482
+ function get_email_product_block( $cart_contents, $cart_total ) {
1483
 
1484
  $cart_items = unserialize( $cart_contents );
1485
  $currency_symbol = get_woocommerce_currency_symbol();
1486
  $tr = '';
1487
  $total = 0;
1488
+ $discount = 0;
1489
+ $tax = 0;
1490
+ $style = 'style="color: #636363; border: 1px solid #e5e5e5; "';
1491
+
1492
  foreach ( $cart_items as $cart_item ) {
1493
 
1494
+ $discount = number_format_i18n( $discount + ( $cart_item['line_subtotal'] - $cart_item['line_total'] ), 2 );
1495
+ $total = number_format_i18n( $total + $cart_item['line_subtotal'], 2 );
1496
+ $tax = number_format_i18n( $tax + $cart_item['line_tax'], 2 );
1497
+
1498
+ $tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
1499
+ <td ' . $style . '><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $cart_item['product_id'] ) ) . ' "/></td>
1500
+ <td ' . $style . '>' . $cart_item['data']->get_title() . '</td>
1501
+ <td ' . $style . '> ' . $cart_item['quantity'] . ' </td>
1502
+ <td ' . $style . '>' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1503
+ <td ' . $style . ' >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1504
+ </tr> ';
1505
  }
1506
 
1507
+ return '<table align="left" cellpadding="10" cellspacing="0" style="float: none; border: 1px solid #e5e5e5;">
1508
+ <tr align="center">
1509
+ <th ' . $style . '>' . __( 'Item', 'cartflows-ca' ) . '</th>
1510
+ <th ' . $style . '>' . __( 'Name', 'cartflows-ca' ) . '</th>
1511
+ <th ' . $style . '>' . __( 'Quantity', 'cartflows-ca' ) . '</th>
1512
+ <th ' . $style . '>' . __( 'Price', 'cartflows-ca' ) . '</th>
1513
+ <th ' . $style . '>' . __( 'Line Subtotal', 'cartflows-ca' ) . '</th>
1514
+ </tr> ' . $tr . '
1515
+
1516
+ <tr align="center">
1517
+ <td colspan="4" ' . $style . '>' . __( 'Discount', 'cartflows-ca' ) . '</td>
1518
+ <td ' . $style . '>' . $currency_symbol . ( $discount ) . '</td>
1519
+ </tr>
1520
+ <tr align="center">
1521
+ <td colspan="4" ' . $style . '>' . __( 'Other', 'cartflows-ca' ) . '</td>
1522
+ <td ' . $style . '>' . $currency_symbol . ( $tax ) . '</td>
1523
+ </tr>
1524
+
1525
+ <tr align="center">
1526
+ <td colspan="4" ' . $style . '>' . __( 'Shipping', 'cartflows-ca' ) . '</td>
1527
+ <td ' . $style . '>' . $currency_symbol . number_format_i18n( $discount + ( $cart_total - $total ) - $tax, 2 ) . '</td>
1528
+ </tr>
1529
+ <tr align="center">
1530
+ <td colspan="4" ' . $style . '>' . __( 'Cart Total', 'cartflows-ca' ) . '</td>
1531
+ <td ' . $style . '>' . $currency_symbol . $cart_total . '</td>
1532
+ </tr>
1533
+ </table>';
1534
+
1535
+ }
1536
+
1537
+ /**
1538
+ * Generate the view for admin product cart block.
1539
+ *
1540
+ * @param object $cart_contents user cart contents details.
1541
+ * @param float $cart_total user cart total.
1542
+ * @return string
1543
+ */
1544
+ function get_admin_product_block( $cart_contents, $cart_total ) {
1545
+
1546
+ $cart_items = unserialize( $cart_contents );
1547
+ $currency_symbol = get_woocommerce_currency_symbol();
1548
+ $tr = '';
1549
+ $total = 0;
1550
+ $discount = 0;
1551
+ $tax = 0;
1552
+
1553
+ foreach ( $cart_items as $cart_item ) {
1554
+
1555
+ $discount = number_format_i18n( $discount + ( $cart_item['line_subtotal'] - $cart_item['line_total'] ), 2 );
1556
+ $total = number_format_i18n( $total + $cart_item['line_subtotal'], 2 );
1557
+ $tax = number_format_i18n( $tax + $cart_item['line_tax'], 2 );
1558
+
1559
+ $tr = $tr . '<tr align="center">
1560
+ <td ><img class="demo_img" width="42" height="42" src=" ' . esc_url( get_the_post_thumbnail_url( $cart_item['product_id'] ) ) . ' "/></td>
1561
+ <td >' . $cart_item['data']->get_title() . '</td>
1562
+ <td > ' . $cart_item['quantity'] . ' </td>
1563
+ <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1564
+ <td >' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
1565
+ </tr> ';
1566
+ }
1567
 
1568
+ return '<table align="left" cellspacing="0" class="widefat fixed striped posts">
1569
+ <thead>
1570
+ <tr align="center">
1571
+ <th >' . __( 'Item', 'cartflows-ca' ) . '</th>
1572
+ <th >' . __( 'Name', 'cartflows-ca' ) . '</th>
1573
+ <th >' . __( 'Quantity', 'cartflows-ca' ) . '</th>
1574
+ <th >' . __( 'Price', 'cartflows-ca' ) . '</th>
1575
+ <th >' . __( 'Line Subtotal', 'cartflows-ca' ) . '</th>
1576
+ </tr>
1577
+ </thead>
1578
+ <tbody>
1579
+ ' . $tr . '
1580
+ <tr align="center" id="wcf-ca-discount">
1581
+ <td colspan="4" >' . __( 'Discount', 'cartflows-ca' ) . '</td>
1582
+ <td>' . $currency_symbol . ( $discount ) . '</td>
1583
+ </tr>
1584
+ <tr align="center" id="wcf-ca-other">
1585
+ <td colspan="4" >' . __( 'Other', 'cartflows-ca' ) . '</td>
1586
+ <td>' . $currency_symbol . ( $tax ) . '</td>
1587
+ </tr>
1588
+
1589
+ <tr align="center" id="wcf-ca-shipping">
1590
+ <td colspan="4" >' . __( 'Shipping', 'cartflows-ca' ) . '</td>
1591
+ <td>' . $currency_symbol . number_format_i18n( $discount + ( $cart_total - $total ) - $tax, 2 ) . '</td>
1592
+ </tr>
1593
+ <tr align="center" id="wcf-ca-cart-total">
1594
+ <td colspan="4" >' . __( 'Cart Total', 'cartflows-ca' ) . '</td>
1595
+ <td>' . $currency_symbol . $cart_total . '</td>
1596
+ </tr>
1597
+ </tbody>
1598
+ </table>';
1599
  }
1600
 
1601
  /**
1740
  }
1741
  }
1742
 
1743
+ /**
1744
+ * Fetch all the scheduled emails with templates for the specific session.
1745
+ *
1746
+ * @param string $session_id session id.
1747
+ * @return array|object|null
1748
+ */
1749
+ function fetch_scheduled_emails( $session_id ) {
1750
+ global $wpdb;
1751
+ $email_history_table = $wpdb->prefix . CARTFLOWS_CA_EMAIL_HISTORY_TABLE;
1752
+ $email_template_table = $wpdb->prefix . CARTFLOWS_CA_EMAIL_TEMPLATE_TABLE;
1753
+
1754
+ $result = $wpdb->get_results(
1755
+ $wpdb->prepare("SELECT * FROM $email_history_table as eht INNER JOIN $email_template_table as ett ON eht.template_id = ett.id WHERE ca_session_id = %s", sanitize_text_field($session_id)) // phpcs:ignore
1756
+ );
1757
+ return $result;
1758
+ }
1759
+
1760
  }
1761
 
1762
  Cartflows_Ca_Cart_Abandonment::get_instance();
modules/cart-abandonment/class-cartflows-ca-email-templates.php CHANGED
@@ -83,7 +83,7 @@ class Cartflows_Ca_Email_Templates {
83
 
84
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
85
 
86
- if ( ! WCF_CA_PAGE_NAME === $page ) {
87
  return;
88
  }
89
 
83
 
84
  $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
85
 
86
+ if ( ! ( WCF_CA_PAGE_NAME === $page ) ) {
87
  return;
88
  }
89
 
modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Cartflows view for single cart abandonment report details.
4
+ *
5
+ * @package Woocommerce-Cart-Abandonment-Recovery
6
+ */
7
+
8
+ ?>
9
+
10
+
11
+ <div class="wcf-ca-report-btn">
12
+ <div class="wcf-ca-left-report-field-group">
13
+ <?php
14
+ if ( wp_get_referer() ) {
15
+ $back_link = wp_get_referer();
16
+ } else {
17
+ $back_link = add_query_arg(
18
+ array(
19
+ 'page' => WCF_CA_PAGE_NAME,
20
+ 'action' => WCF_ACTION_REPORTS,
21
+ ),
22
+ admin_url( '/admin.php' )
23
+ );
24
+ }
25
+ ?>
26
+ <a href="<?php echo $back_link; ?>" class="button button-secondary back-button"><span
27
+ class="dashicons dashicons-arrow-left"></span> Back to Reports </a>
28
+ </div>
29
+ </div>
30
+
31
+ <!-- First panel Start -->
32
+ <div class="wcf-ca-panel">
33
+ <div class="wcf-ca-column wcf-ca-column-two">
34
+ <div class="wcf-ca-email-data">
35
+
36
+ <h2> <?php _e( 'Email Details:', 'cartflows-ca' ); ?> </h2>
37
+ <?php if ( empty( $scheduled_emails ) ) : ?>
38
+ <div style="text-align: center;"><strong> <?php _e( ' No Email Scheduled.', 'cartflows-ca' ); ?></strong>
39
+ </div>
40
+ <?php else : ?>
41
+ <table cellpadding="15" cellspacing="0" class="wcf-table wcf-table-striped fixed posts">
42
+ <thead>
43
+ <tr>
44
+
45
+ <th class="wcf-ca-report-table-row"> Scheduled Template</th>
46
+ <th class="wcf-ca-report-table-row"> Email Subject</th>
47
+ <th class="wcf-ca-report-table-row"> Email Coupon</th>
48
+ <th class="wcf-ca-report-table-row"> Email Sent</th>
49
+ <th class="wcf-ca-report-table-row"><span class="dashicons dashicons-clock"></span> Scheduled At
50
+ </th>
51
+
52
+ </tr>
53
+ </thead>
54
+
55
+ <tbody>
56
+ <?php foreach ( $scheduled_emails as $scheduled_email ) : ?>
57
+
58
+ <?php
59
+ $email_tmpl_url = wp_nonce_url(
60
+ add_query_arg(
61
+ array(
62
+ 'page' => WCF_CA_PAGE_NAME,
63
+ 'action' => WCF_ACTION_EMAIL_TEMPLATES,
64
+ 'sub_action' => WCF_SUB_ACTION_EDIT_EMAIL_TEMPLATES,
65
+ 'id' => $scheduled_email->template_id,
66
+ ),
67
+ admin_url( '/admin.php' )
68
+ ),
69
+ WCF_EMAIL_TEMPLATES_NONCE
70
+ );
71
+
72
+ if ( $details->unsubscribed && ! $scheduled_email->email_sent ) {
73
+ $icon = '<span class="dashicons dashicons-dismiss" title="" ></span>';
74
+ $title = __( 'The email has unsubscribed and won\'t be sent further.', 'cartflows-ca' );
75
+ } elseif ( $scheduled_email->email_sent ) {
76
+ $icon = '<span class="dashicons dashicons-yes wp-ui-text-highlight" ></span>';
77
+ $title = __( 'The email has been sent.', 'cartflows-ca' );
78
+ } else {
79
+ $icon = '<span class="dashicons dashicons-no" ></span>';
80
+ $title = __( 'Email is in the queue and will be sent at the scheduled time.', 'cartflows-ca' );
81
+ }
82
+
83
+ $scheduled_time = date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $scheduled_email->scheduled_time ) );
84
+ ?>
85
+
86
+ <tr class="wcf-ca-report-table-row">
87
+ <td class="wcf-ca-report-table-row"><a
88
+ href="<?php echo $email_tmpl_url; ?>"
89
+ class="wp-ui-text-highlight"> <?php echo( $scheduled_email->template_name ); ?> </a>
90
+ </td>
91
+ <td class="wcf-ca-report-table-row"> <?php echo( $scheduled_email->email_subject ); ?> </td>
92
+ <td class="wcf-ca-report-table-row"> <?php echo( $scheduled_email->coupon_code ? $scheduled_email->coupon_code : '--' ); ?> </td>
93
+ <td class="wcf-ca-report-table-row wcf-ca-icon-row"> <?php echo $icon; ?>
94
+ <span class="wcf-ca-tooltip-text"><?php echo $title; ?></span>
95
+ </td>
96
+ <td class="wcf-ca-report-table-row"> <?php echo( $scheduled_time ); ?> </td>
97
+ </tr>
98
+ <?php endforeach; ?>
99
+ </tbody>
100
+ </table>
101
+ <?php endif; ?>
102
+
103
+ </div>
104
+ </div>
105
+
106
+ <div class="wcf-ca-column wcf-ca-column-two">
107
+ <div class="wcf-ca-user-detail ">
108
+ <h2> <?php _e( 'User Address Details:', 'cartflows-ca' ); ?> </h2>
109
+
110
+ <div class="wcf-ca-user-address wcf-pull-left">
111
+ <h3> <?php _e( 'Billing Address', 'cartflows-ca' ); ?> </h3>
112
+ <p><strong> <?php _e( 'Name', 'cartflows-ca' ); ?> </strong>
113
+ <?php echo $user_details->wcf_first_name . ' ' . $user_details->wcf_last_name; ?> </p>
114
+ <p>
115
+ <strong> <?php _e( 'Email address', 'cartflows-ca' ); ?> </strong>
116
+ <a href="mailto:<?php echo( $details->email ); ?>"><?php echo( $details->email ); ?></a>
117
+ </p>
118
+
119
+ <p>
120
+ <strong> <?php _e( 'Phone', 'cartflows-ca' ); ?> </strong>
121
+ <a href="tel:<?php echo( $user_details->wcf_phone_number ); ?>"><?php echo( $user_details->wcf_phone_number ); ?></a>
122
+ </p>
123
+
124
+ <p>
125
+ <strong> <?php _e( 'Address 1:', 'cartflows-ca' ); ?> </strong> <?php echo $user_details->wcf_billing_address_1; ?>
126
+ </p>
127
+ <p>
128
+ <strong> <?php _e( 'Address 2:', 'cartflows-ca' ); ?> </strong> <?php echo $user_details->wcf_billing_address_2; ?>
129
+ </p>
130
+ <p>
131
+ <strong> <?php _e( 'Country, City:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_location ); ?>
132
+ </p>
133
+ <p>
134
+ <strong> <?php _e( 'State:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_billing_state ); ?>
135
+ </p>
136
+
137
+ <p>
138
+ <strong> <?php _e( 'Postcode:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_billing_postcode ); ?>
139
+ </p>
140
+ </div>
141
+
142
+ <div class="wcf-ca-user-address wcf-pull-left">
143
+ <h3> <?php _e( 'Shipping Address', 'cartflows-ca' ); ?> </h3>
144
+ <p>
145
+ <strong> <?php _e( 'Address 1:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_address_1 ); ?>
146
+ </p>
147
+ <p>
148
+ <strong> <?php _e( 'Address 2:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_address_2 ); ?>
149
+ </p>
150
+ <p>
151
+ <strong> <?php _e( 'City:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_city ); ?>
152
+ </p>
153
+ <p>
154
+ <strong> <?php _e( 'State:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_state ); ?>
155
+ </p>
156
+ <p>
157
+ <strong> <?php _e( 'Country:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_country ); ?>
158
+ </p>
159
+ <p>
160
+ <strong> <?php _e( 'Postcode:', 'cartflows-ca' ); ?> </strong> <?php echo( $user_details->wcf_shipping_postcode ); ?>
161
+ </p>
162
+ </div>
163
+
164
+ </div>
165
+ </div>
166
+ </div>
167
+ <!-- First panel closed -->
168
+
169
+ <!-- Second panel Start -->
170
+ <div class="wcf-ca-panel">
171
+ <div class="wcf-ca-column wcf-ca-column-one">
172
+ <div class="wcf-ca-user-order">
173
+ <h2> <?php _e( 'User Order Details:', 'cartflows-ca' ); ?> </h2>
174
+ <?php echo( $this->get_admin_product_block( $details->cart_contents, $details->cart_total ) ); ?>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ <!-- Second panel closed -->
modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php CHANGED
@@ -13,6 +13,7 @@
13
  $action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
14
  $sub_action = filter_input( INPUT_GET, 'sub_action', FILTER_SANITIZE_STRING );
15
 
 
16
  if ( ! $action ) {
17
  $action = WCF_ACTION_REPORTS;
18
  }
@@ -31,7 +32,22 @@
31
  <?php endif; ?>
32
 
33
  <?php if ( WCF_ACTION_REPORTS === $action ) : ?>
34
- <?php $this->wcf_display_reports(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <?php endif; ?>
36
 
37
  <?php if ( WCF_ACTION_EMAIL_TEMPLATES === $action ) : ?>
13
  $action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
14
  $sub_action = filter_input( INPUT_GET, 'sub_action', FILTER_SANITIZE_STRING );
15
 
16
+
17
  if ( ! $action ) {
18
  $action = WCF_ACTION_REPORTS;
19
  }
32
  <?php endif; ?>
33
 
34
  <?php if ( WCF_ACTION_REPORTS === $action ) : ?>
35
+
36
+ <?php
37
+
38
+ switch ( $sub_action ) {
39
+
40
+ case WCF_SUB_ACTION_REPORTS_VIEW:
41
+ $this->wcf_display_report_details();
42
+ break;
43
+ default:
44
+ $this->wcf_display_reports();
45
+ break;
46
+
47
+ }
48
+
49
+ ?>
50
+
51
  <?php endif; ?>
52
 
53
  <?php if ( WCF_ACTION_EMAIL_TEMPLATES === $action ) : ?>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.me/BrainstormForce
4
  Tags: woocommerce, cart abandonment, cart recovery
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
- Stable tag: 1.0.0
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -30,6 +30,9 @@ Yes, of course. We have built it in a way that it will work with CartFlows as we
30
 
31
  == Changelog ==
32
 
 
 
 
33
  = Version 1.0.0 - Monday, 27th May 2019 =
34
  * Initial Release
35
 
4
  Tags: woocommerce, cart abandonment, cart recovery
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
+ Stable tag: 1.1.0
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
30
 
31
  == Changelog ==
32
 
33
+ = Version 1.1.0 - Thursday, 30th May 2019 =
34
+ * Added a view for admin to check email status specific to the particular abandoned user.
35
+
36
  = Version 1.0.0 - Monday, 27th May 2019 =
37
  * Initial Release
38
 
woo-cart-abandonment-recovery.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Cart Abandonment Recovery
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
6
- * Version: 1.0.0
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows-ca
3
  * Plugin Name: WooCommerce Cart Abandonment Recovery
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
6
+ * Version: 1.1.0
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows-ca