Funnel Builder by CartFlows – Create High Converting Sales Funnels For WordPress - Version 1.1.20

Version Description

Download this release

Release Info

Developer sandesh055
Plugin Icon Funnel Builder by CartFlows – Create High Converting Sales Funnels For WordPress
Version 1.1.20
Comparing to
See all releases

Code changes from version 1.1.19 to 1.1.20

Files changed (53) hide show
  1. admin/assets/css/admin-menu-settings-rtl.css +18 -1
  2. admin/assets/css/admin-menu-settings.css +18 -1
  3. admin/assets/css/global-admin-rtl.css +4 -0
  4. admin/assets/css/global-admin.css +4 -0
  5. admin/assets/css/setup-wizard-rtl.css +136 -25
  6. admin/assets/css/setup-wizard.css +136 -25
  7. admin/assets/js/global-admin.js +13 -0
  8. admin/assets/js/setup-wizard.js +173 -33
  9. admin/meta-assets/js/admin-edit.js +4 -0
  10. assets/css/checkout-template-rtl.css +4 -0
  11. assets/css/checkout-template.css +4 -0
  12. assets/css/frontend-rtl.css +17 -6
  13. assets/css/frontend.css +17 -6
  14. assets/css/import-rtl.css +39 -12
  15. assets/css/import.css +39 -12
  16. assets/js/import.js +128 -4
  17. assets/min-css/checkout-template-rtl.min.css +1 -1
  18. assets/min-css/checkout-template.min.css +1 -1
  19. assets/min-css/frontend-rtl.min.css +1 -1
  20. assets/min-css/frontend.min.css +1 -1
  21. assets/min-css/import-rtl.min.css +1 -1
  22. assets/min-css/import.min.css +1 -1
  23. assets/min-js/import.min.js +1 -1
  24. cartflows.php +1 -1
  25. changelog.txt +13 -0
  26. classes/class-cartflows-admin.php +521 -511
  27. classes/class-cartflows-compatibility.php +2 -2
  28. classes/class-cartflows-flow-frontend.php +1 -0
  29. classes/class-cartflows-frontend.php +5 -1
  30. classes/class-cartflows-functions.php +13 -0
  31. classes/class-cartflows-importer.php +91 -32
  32. classes/class-cartflows-loader.php +575 -455
  33. classes/class-cartflows-logger.php +85 -3
  34. classes/class-cartflows-meta-fields.php +1 -1
  35. classes/class-cartflows-update.php +22 -2
  36. classes/class-cartflows-utils.php +18 -3
  37. classes/class-cartflows-wizard.php +268 -65
  38. classes/logger/class-cartflows-log-handler-file.php +442 -442
  39. classes/logger/class-cartflows-log-handler-interface.php +33 -33
  40. classes/logger/class-cartflows-log-handler.php +57 -57
  41. classes/logger/class-cartflows-log-levels.php +108 -108
  42. classes/logger/class-cartflows-logger-interface.php +139 -139
  43. classes/logger/class-cartflows-wc-logger.php +301 -301
  44. includes/admin/cartflows-error-log.php +71 -71
  45. includes/admin/cartflows-general.php +18 -9
  46. languages/cartflows.pot +1587 -1442
  47. modules/checkout/classes/class-cartflows-checkout-markup.php +1 -1
  48. modules/flow/classes/class-cartflows-flow-meta.php +6 -2
  49. modules/flow/classes/class-cartflows-step-post-type.php +50 -35
  50. modules/flow/view/meta-flow-steps.php +10 -12
  51. modules/landing/classes/class-cartflows-landing-meta.php +5 -5
  52. modules/thankyou/classes/class-cartflows-thankyou-markup.php +300 -274
  53. readme.txt +8 -2
admin/assets/css/admin-menu-settings-rtl.css CHANGED
@@ -294,4 +294,21 @@
294
 
295
  .postbox-container .form-field{
296
  border: none;
297
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
295
  .postbox-container .form-field{
296
  border: none;
297
+ }
298
+
299
+ .wcf-log-container {
300
+ word-break: break-all;
301
+ line-height: 1.5;
302
+ text-align: right;
303
+ background-color: #fff;
304
+ padding: 15px;
305
+ border-radius: 3px;
306
+ max-height: 400px;
307
+ overflow-y: scroll;
308
+ margin: 20px auto;
309
+ }
310
+
311
+ .wcf-log-container > pre {
312
+ display: contents;
313
+ white-space: pre-wrap;
314
+ }
admin/assets/css/admin-menu-settings.css CHANGED
@@ -294,4 +294,21 @@
294
 
295
  .postbox-container .form-field{
296
  border: none;
297
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
295
  .postbox-container .form-field{
296
  border: none;
297
+ }
298
+
299
+ .wcf-log-container {
300
+ word-break: break-all;
301
+ line-height: 1.5;
302
+ text-align: left;
303
+ background-color: #fff;
304
+ padding: 15px;
305
+ border-radius: 3px;
306
+ max-height: 400px;
307
+ overflow-y: scroll;
308
+ margin: 20px auto;
309
+ }
310
+
311
+ .wcf-log-container > pre {
312
+ display: contents;
313
+ white-space: pre-wrap;
314
+ }
admin/assets/css/global-admin-rtl.css CHANGED
@@ -668,6 +668,10 @@ input[type="text"].error:focus{
668
  outline: none;
669
  }
670
 
 
 
 
 
671
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="text"],
672
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="number"],
673
  .wcf-table-container .wcf-column-right .wcf-field-row select,
668
  outline: none;
669
  }
670
 
671
+ .wcf-checkout-table .select2-container--default .select2-selection--single .select2-selection__clear{
672
+ display: block;
673
+ }
674
+
675
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="text"],
676
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="number"],
677
  .wcf-table-container .wcf-column-right .wcf-field-row select,
admin/assets/css/global-admin.css CHANGED
@@ -668,6 +668,10 @@ input[type="text"].error:focus{
668
  outline: none;
669
  }
670
 
 
 
 
 
671
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="text"],
672
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="number"],
673
  .wcf-table-container .wcf-column-right .wcf-field-row select,
668
  outline: none;
669
  }
670
 
671
+ .wcf-checkout-table .select2-container--default .select2-selection--single .select2-selection__clear{
672
+ display: block;
673
+ }
674
+
675
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="text"],
676
  .wcf-table-container .wcf-column-right .wcf-field-row input[type="number"],
677
  .wcf-table-container .wcf-column-right .wcf-field-row select,
admin/assets/css/setup-wizard-rtl.css CHANGED
@@ -30,6 +30,10 @@
30
  0 0 2px 1px rgba(30, 140, 190, .8);
31
  }
32
 
 
 
 
 
33
  .ie8 a:focus {
34
  outline: #5b9dd9 solid 1px;
35
  }
@@ -49,7 +53,7 @@
49
 
50
  p, li, dd, dt {
51
  padding-bottom: 2px;
52
- font-size: 14px;
53
  line-height: 1.5;
54
  }
55
 
@@ -169,10 +173,10 @@
169
  .cartflows-setup-wizard-steps li:before,
170
  .cartflows-setup-steps li:before {
171
  content: "";
172
- border: 4px solid #ccc;
173
  border-radius: 100%;
174
- width: 4px;
175
- height: 4px;
176
  position: absolute;
177
  bottom: 0;
178
  right: 50%;
@@ -181,32 +185,61 @@
181
  background: #fff
182
  }
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  .cartflows-setup-wizard-steps li.active,
185
  .cartflows-setup-steps li.active {
186
- border-color: #0085ba;
187
- color: #0085ba
188
  }
189
 
190
  .cartflows-setup-wizard-steps li.active:before,
191
  .cartflows-setup-steps li.active:before {
192
- border-color: #0085ba
193
  }
194
 
195
  .cartflows-setup-wizard-steps li.done,
196
  .cartflows-setup-steps li.done {
197
- border-color: #0085ba;
198
- color: #0085ba
199
  }
200
 
201
  .cartflows-setup-wizard-steps li.done:before,
202
  .cartflows-setup-steps li.done:before {
203
- border-color: #0085ba;
204
- background: #0085ba
205
  }
206
 
207
  .cartflows-setup-wizard-content a,
208
  .cartflows-setup-content a {
209
- color: #0085ba
210
  }
211
 
212
  .cartflows-setup-wizard-content a:focus,
@@ -226,6 +259,33 @@
226
  zoom: 1
227
  }
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  .cartflows-setup-wizard-content h1,
230
  .cartflows-setup-content h1,
231
  .cartflows-setup-wizard-content h2,
@@ -335,8 +395,8 @@
335
  transform: rotate(0deg);
336
  }
337
  100% {
338
- -webkit-transform: rotate(359deg);
339
- transform: rotate(359deg);
340
  }
341
  }
342
 
@@ -346,8 +406,8 @@
346
  transform: rotate(0deg);
347
  }
348
  100% {
349
- -webkit-transform: rotate(359deg);
350
- transform: rotate(359deg);
351
  }
352
  }
353
 
@@ -363,12 +423,14 @@
363
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button,
364
  .cartflows-setup .cartflows-setup-actions .button {
365
  font-size: 1em;
366
- padding: .5em 1em;
367
- line-height: 1em;
368
- margin-left: .5em;
369
- margin-bottom: 2px;
370
- height: auto;
371
- border-radius: 4px
 
 
372
  }
373
 
374
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .skip-button,
@@ -376,12 +438,52 @@
376
  margin-right: 10px;
377
  margin-left: 0;
378
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary,
380
- .cartflows-setup .cartflows-setup-actions .button.button-primary {
 
 
 
 
 
 
381
  opacity: 1;
382
  height: auto;
383
- line-height: 2;
384
  padding: 0 1.2em;
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  }
386
 
387
  .aiosrs-pro-return-to-dashboard {
@@ -414,11 +516,16 @@
414
  .cartflows-setup-wizard-content input,
415
  .cartflows-setup-content input {
416
  border: 1px solid #f1f1f1;
417
- padding: 0.5em;
418
  border-radius: 3px;
419
  font-size: 14px;
420
  }
421
 
 
 
 
 
 
422
  .wp-picker-active .wp-picker-holder {
423
  position: absolute;
424
  z-index: 9;
@@ -1122,4 +1229,8 @@
1122
  position: absolute;
1123
  width: 1px;
1124
  word-wrap: normal !important;
 
 
 
 
1125
  }
30
  0 0 2px 1px rgba(30, 140, 190, .8);
31
  }
32
 
33
+ *, :after, :before {
34
+ box-sizing: border-box;
35
+ }
36
+
37
  .ie8 a:focus {
38
  outline: #5b9dd9 solid 1px;
39
  }
53
 
54
  p, li, dd, dt {
55
  padding-bottom: 2px;
56
+ font-size: 15px;
57
  line-height: 1.5;
58
  }
59
 
173
  .cartflows-setup-wizard-steps li:before,
174
  .cartflows-setup-steps li:before {
175
  content: "";
176
+ border: 7px solid #ccc;
177
  border-radius: 100%;
178
+ width: 7px;
179
+ height: 7px;
180
  position: absolute;
181
  bottom: 0;
182
  right: 50%;
185
  background: #fff
186
  }
187
 
188
+ .cartflows-setup-wizard-steps li.active:after,
189
+ .cartflows-setup-steps li.active:after {
190
+ content: "";
191
+ border: 2px solid #fff;
192
+ border-radius: 100%;
193
+ width: 2px;
194
+ height: 2px;
195
+ position: absolute;
196
+ bottom: 0;
197
+ right: 50%;
198
+ margin-right: -1px;
199
+ margin-bottom: -3px;
200
+ background: #fff;
201
+ }
202
+
203
+ .cartflows-setup-wizard-steps li.done:after,
204
+ .cartflows-setup-steps li.done:after {
205
+ content: "\f147";
206
+ width: auto;
207
+ height: auto;
208
+ position: absolute;
209
+ bottom: -12px;
210
+ color: #fff;
211
+ right: 50%;
212
+ margin-right: -7px;
213
+ font-family: dashicons;
214
+ margin-bottom: 0;
215
+ }
216
+
217
  .cartflows-setup-wizard-steps li.active,
218
  .cartflows-setup-steps li.active {
219
+ border-color: #f16334;
220
+ color: #f16334
221
  }
222
 
223
  .cartflows-setup-wizard-steps li.active:before,
224
  .cartflows-setup-steps li.active:before {
225
+ border-color: #f16334
226
  }
227
 
228
  .cartflows-setup-wizard-steps li.done,
229
  .cartflows-setup-steps li.done {
230
+ border-color: #f16334;
231
+ color: #f16334
232
  }
233
 
234
  .cartflows-setup-wizard-steps li.done:before,
235
  .cartflows-setup-steps li.done:before {
236
+ border-color: #f16334;
237
+ background: #f16334
238
  }
239
 
240
  .cartflows-setup-wizard-content a,
241
  .cartflows-setup-content a {
242
+ color: #f16334
243
  }
244
 
245
  .cartflows-setup-wizard-content a:focus,
259
  zoom: 1
260
  }
261
 
262
+ .cartflows-setup .cartflows-setup-message{
263
+ background: #f5f5f5;
264
+ padding: 25px;
265
+ }
266
+
267
+ .cartflows-setup .cartflows-setup-extra-notice
268
+ {
269
+ text-align: center;
270
+ font-size: 11px;
271
+ margin: 10px 0px 0px auto;
272
+ }
273
+
274
+ .cartflows-setup .cartflows-setup-extra-notice span,
275
+ .cartflows-setup .cartflows-setup-extra-notice a{
276
+ color: #ccc;
277
+ }
278
+
279
+ .cartflows-setup .cartflows-setup-extra-notice a{
280
+ text-decoration: underline;
281
+ }
282
+
283
+ .cartflows-setup .cartflows-setup-message .cartflows-setup-message-title {
284
+ color: #696767;
285
+ font-weight: 600;
286
+ margin: 10px auto;
287
+ }
288
+
289
  .cartflows-setup-wizard-content h1,
290
  .cartflows-setup-content h1,
291
  .cartflows-setup-wizard-content h2,
395
  transform: rotate(0deg);
396
  }
397
  100% {
398
+ -webkit-transform: rotate(-359deg);
399
+ transform: rotate(-359deg);
400
  }
401
  }
402
 
406
  transform: rotate(0deg);
407
  }
408
  100% {
409
+ -webkit-transform: rotate(-359deg);
410
+ transform: rotate(-359deg);
411
  }
412
  }
413
 
423
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button,
424
  .cartflows-setup .cartflows-setup-actions .button {
425
  font-size: 1em;
426
+ padding: .5em 1em;
427
+ line-height: 1em;
428
+ margin-left: 0;
429
+ margin-bottom: 0;
430
+ height: auto;
431
+ border-radius: 2px;
432
+ text-shadow: none;
433
+ box-shadow: none;
434
  }
435
 
436
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .skip-button,
438
  margin-right: 10px;
439
  margin-left: 0;
440
  }
441
+
442
+ .cartflows-setup .button.button-next{
443
+ margin-left: 10px;
444
+ }
445
+
446
+ .wp-core-ui.cartflows-setup .button.button-large{
447
+ border-color: #ccc;
448
+ opacity: 1;
449
+ height: auto;
450
+ line-height: 2.5;
451
+ padding: 0 1.2em;
452
+ }
453
+
454
+ .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary.disabled,
455
+ .cartflows-setup .cartflows-setup-actions .button.button-primary:disabled,
456
+ .cartflows-setup .cartflows-setup-actions .button.button-secondary [disabled]{
457
+ background: rgb(241, 99, 52, 0.8) !important;
458
+ border-color: rgb(241, 99, 52, 0.8) !important;
459
+ color: #fff !important;
460
+ }
461
+
462
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary,
463
+ .cartflows-setup .cartflows-setup-actions .button.button-primary,
464
+ .cartflows-setup .cartflows-setup-actions .button.button-secondary,
465
+ .cartflows-setup .cartflows-setup-actions .button-primary.active,
466
+ .cartflows-setup .cartflows-setup-actions .button-primary.active:hover,
467
+ .cartflows-setup .cartflows-setup-actions .button-primary.active:focus{
468
+ background: #f16334;
469
+ border-color: #f16334;
470
  opacity: 1;
471
  height: auto;
472
+ line-height: 2.5;
473
  padding: 0 1.2em;
474
+ -webkit-box-shadow: none;
475
+ -moz-box-shadow: none;
476
+ box-shadow: none;
477
+ transform: translateY(0px);
478
+ }
479
+
480
+ .wp-core-ui.cartflows-setup .button.button-primary.button-hero,
481
+ .wp-core-ui.cartflows-setup .button.button-primary.button-hero:active{
482
+ box-shadow: 0 2px 0 #f16334;
483
+ background: #f16334;
484
+ border-color: #f16334;
485
+ text-shadow: none;
486
+ transform: translate(0px);
487
  }
488
 
489
  .aiosrs-pro-return-to-dashboard {
516
  .cartflows-setup-wizard-content input,
517
  .cartflows-setup-content input {
518
  border: 1px solid #f1f1f1;
519
+ padding: 1em;
520
  border-radius: 3px;
521
  font-size: 14px;
522
  }
523
 
524
+ .cartflows-setup .cartflows-setup-message input{
525
+ width: 100%;
526
+ height: 45px;
527
+ }
528
+
529
  .wp-picker-active .wp-picker-holder {
530
  position: absolute;
531
  z-index: 9;
1229
  position: absolute;
1230
  width: 1px;
1231
  word-wrap: normal !important;
1232
+ }
1233
+
1234
+ input.wcf-error{
1235
+ border: 1px solid #ff0000;
1236
  }
admin/assets/css/setup-wizard.css CHANGED
@@ -30,6 +30,10 @@
30
  0 0 2px 1px rgba(30, 140, 190, .8);
31
  }
32
 
 
 
 
 
33
  .ie8 a:focus {
34
  outline: #5b9dd9 solid 1px;
35
  }
@@ -49,7 +53,7 @@
49
 
50
  p, li, dd, dt {
51
  padding-bottom: 2px;
52
- font-size: 14px;
53
  line-height: 1.5;
54
  }
55
 
@@ -169,10 +173,10 @@
169
  .cartflows-setup-wizard-steps li:before,
170
  .cartflows-setup-steps li:before {
171
  content: "";
172
- border: 4px solid #ccc;
173
  border-radius: 100%;
174
- width: 4px;
175
- height: 4px;
176
  position: absolute;
177
  bottom: 0;
178
  left: 50%;
@@ -181,32 +185,61 @@
181
  background: #fff
182
  }
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  .cartflows-setup-wizard-steps li.active,
185
  .cartflows-setup-steps li.active {
186
- border-color: #0085ba;
187
- color: #0085ba
188
  }
189
 
190
  .cartflows-setup-wizard-steps li.active:before,
191
  .cartflows-setup-steps li.active:before {
192
- border-color: #0085ba
193
  }
194
 
195
  .cartflows-setup-wizard-steps li.done,
196
  .cartflows-setup-steps li.done {
197
- border-color: #0085ba;
198
- color: #0085ba
199
  }
200
 
201
  .cartflows-setup-wizard-steps li.done:before,
202
  .cartflows-setup-steps li.done:before {
203
- border-color: #0085ba;
204
- background: #0085ba
205
  }
206
 
207
  .cartflows-setup-wizard-content a,
208
  .cartflows-setup-content a {
209
- color: #0085ba
210
  }
211
 
212
  .cartflows-setup-wizard-content a:focus,
@@ -226,6 +259,33 @@
226
  zoom: 1
227
  }
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  .cartflows-setup-wizard-content h1,
230
  .cartflows-setup-content h1,
231
  .cartflows-setup-wizard-content h2,
@@ -335,8 +395,8 @@
335
  transform: rotate(0deg);
336
  }
337
  100% {
338
- -webkit-transform: rotate(-359deg);
339
- transform: rotate(-359deg);
340
  }
341
  }
342
 
@@ -346,8 +406,8 @@
346
  transform: rotate(0deg);
347
  }
348
  100% {
349
- -webkit-transform: rotate(-359deg);
350
- transform: rotate(-359deg);
351
  }
352
  }
353
 
@@ -363,12 +423,14 @@
363
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button,
364
  .cartflows-setup .cartflows-setup-actions .button {
365
  font-size: 1em;
366
- padding: .5em 1em;
367
- line-height: 1em;
368
- margin-right: .5em;
369
- margin-bottom: 2px;
370
- height: auto;
371
- border-radius: 4px
 
 
372
  }
373
 
374
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .skip-button,
@@ -376,12 +438,52 @@
376
  margin-left: 10px;
377
  margin-right: 0;
378
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary,
380
- .cartflows-setup .cartflows-setup-actions .button.button-primary {
 
 
 
 
 
 
381
  opacity: 1;
382
  height: auto;
383
- line-height: 2;
384
  padding: 0 1.2em;
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  }
386
 
387
  .aiosrs-pro-return-to-dashboard {
@@ -414,11 +516,16 @@
414
  .cartflows-setup-wizard-content input,
415
  .cartflows-setup-content input {
416
  border: 1px solid #f1f1f1;
417
- padding: 0.5em;
418
  border-radius: 3px;
419
  font-size: 14px;
420
  }
421
 
 
 
 
 
 
422
  .wp-picker-active .wp-picker-holder {
423
  position: absolute;
424
  z-index: 9;
@@ -1122,4 +1229,8 @@
1122
  position: absolute;
1123
  width: 1px;
1124
  word-wrap: normal !important;
 
 
 
 
1125
  }
30
  0 0 2px 1px rgba(30, 140, 190, .8);
31
  }
32
 
33
+ *, :after, :before {
34
+ box-sizing: border-box;
35
+ }
36
+
37
  .ie8 a:focus {
38
  outline: #5b9dd9 solid 1px;
39
  }
53
 
54
  p, li, dd, dt {
55
  padding-bottom: 2px;
56
+ font-size: 15px;
57
  line-height: 1.5;
58
  }
59
 
173
  .cartflows-setup-wizard-steps li:before,
174
  .cartflows-setup-steps li:before {
175
  content: "";
176
+ border: 7px solid #ccc;
177
  border-radius: 100%;
178
+ width: 7px;
179
+ height: 7px;
180
  position: absolute;
181
  bottom: 0;
182
  left: 50%;
185
  background: #fff
186
  }
187
 
188
+ .cartflows-setup-wizard-steps li.active:after,
189
+ .cartflows-setup-steps li.active:after {
190
+ content: "";
191
+ border: 2px solid #fff;
192
+ border-radius: 100%;
193
+ width: 2px;
194
+ height: 2px;
195
+ position: absolute;
196
+ bottom: 0;
197
+ left: 50%;
198
+ margin-left: -1px;
199
+ margin-bottom: -3px;
200
+ background: #fff;
201
+ }
202
+
203
+ .cartflows-setup-wizard-steps li.done:after,
204
+ .cartflows-setup-steps li.done:after {
205
+ content: "\f147";
206
+ width: auto;
207
+ height: auto;
208
+ position: absolute;
209
+ bottom: -12px;
210
+ color: #fff;
211
+ left: 50%;
212
+ margin-left: -7px;
213
+ font-family: dashicons;
214
+ margin-bottom: 0;
215
+ }
216
+
217
  .cartflows-setup-wizard-steps li.active,
218
  .cartflows-setup-steps li.active {
219
+ border-color: #f16334;
220
+ color: #f16334
221
  }
222
 
223
  .cartflows-setup-wizard-steps li.active:before,
224
  .cartflows-setup-steps li.active:before {
225
+ border-color: #f16334
226
  }
227
 
228
  .cartflows-setup-wizard-steps li.done,
229
  .cartflows-setup-steps li.done {
230
+ border-color: #f16334;
231
+ color: #f16334
232
  }
233
 
234
  .cartflows-setup-wizard-steps li.done:before,
235
  .cartflows-setup-steps li.done:before {
236
+ border-color: #f16334;
237
+ background: #f16334
238
  }
239
 
240
  .cartflows-setup-wizard-content a,
241
  .cartflows-setup-content a {
242
+ color: #f16334
243
  }
244
 
245
  .cartflows-setup-wizard-content a:focus,
259
  zoom: 1
260
  }
261
 
262
+ .cartflows-setup .cartflows-setup-message{
263
+ background: #f5f5f5;
264
+ padding: 25px;
265
+ }
266
+
267
+ .cartflows-setup .cartflows-setup-extra-notice
268
+ {
269
+ text-align: center;
270
+ font-size: 11px;
271
+ margin: 10px auto 0px 0px;
272
+ }
273
+
274
+ .cartflows-setup .cartflows-setup-extra-notice span,
275
+ .cartflows-setup .cartflows-setup-extra-notice a{
276
+ color: #ccc;
277
+ }
278
+
279
+ .cartflows-setup .cartflows-setup-extra-notice a{
280
+ text-decoration: underline;
281
+ }
282
+
283
+ .cartflows-setup .cartflows-setup-message .cartflows-setup-message-title {
284
+ color: #696767;
285
+ font-weight: 600;
286
+ margin: 10px auto;
287
+ }
288
+
289
  .cartflows-setup-wizard-content h1,
290
  .cartflows-setup-content h1,
291
  .cartflows-setup-wizard-content h2,
395
  transform: rotate(0deg);
396
  }
397
  100% {
398
+ -webkit-transform: rotate(359deg);
399
+ transform: rotate(359deg);
400
  }
401
  }
402
 
406
  transform: rotate(0deg);
407
  }
408
  100% {
409
+ -webkit-transform: rotate(359deg);
410
+ transform: rotate(359deg);
411
  }
412
  }
413
 
423
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button,
424
  .cartflows-setup .cartflows-setup-actions .button {
425
  font-size: 1em;
426
+ padding: .5em 1em;
427
+ line-height: 1em;
428
+ margin-right: 0;
429
+ margin-bottom: 0;
430
+ height: auto;
431
+ border-radius: 2px;
432
+ text-shadow: none;
433
+ box-shadow: none;
434
  }
435
 
436
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .skip-button,
438
  margin-left: 10px;
439
  margin-right: 0;
440
  }
441
+
442
+ .cartflows-setup .button.button-next{
443
+ margin-right: 10px;
444
+ }
445
+
446
+ .wp-core-ui.cartflows-setup .button.button-large{
447
+ border-color: #ccc;
448
+ opacity: 1;
449
+ height: auto;
450
+ line-height: 2.5;
451
+ padding: 0 1.2em;
452
+ }
453
+
454
+ .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary.disabled,
455
+ .cartflows-setup .cartflows-setup-actions .button.button-primary:disabled,
456
+ .cartflows-setup .cartflows-setup-actions .button.button-secondary [disabled]{
457
+ background: rgb(241, 99, 52, 0.8) !important;
458
+ border-color: rgb(241, 99, 52, 0.8) !important;
459
+ color: #fff !important;
460
+ }
461
+
462
  .cartflows-setup-wizard .cartflows-setup-wizard-actions .button.button-primary,
463
+ .cartflows-setup .cartflows-setup-actions .button.button-primary,
464
+ .cartflows-setup .cartflows-setup-actions .button.button-secondary,
465
+ .cartflows-setup .cartflows-setup-actions .button-primary.active,
466
+ .cartflows-setup .cartflows-setup-actions .button-primary.active:hover,
467
+ .cartflows-setup .cartflows-setup-actions .button-primary.active:focus{
468
+ background: #f16334;
469
+ border-color: #f16334;
470
  opacity: 1;
471
  height: auto;
472
+ line-height: 2.5;
473
  padding: 0 1.2em;
474
+ -webkit-box-shadow: none;
475
+ -moz-box-shadow: none;
476
+ box-shadow: none;
477
+ transform: translateY(0px);
478
+ }
479
+
480
+ .wp-core-ui.cartflows-setup .button.button-primary.button-hero,
481
+ .wp-core-ui.cartflows-setup .button.button-primary.button-hero:active{
482
+ box-shadow: 0 2px 0 #f16334;
483
+ background: #f16334;
484
+ border-color: #f16334;
485
+ text-shadow: none;
486
+ transform: translate(0px);
487
  }
488
 
489
  .aiosrs-pro-return-to-dashboard {
516
  .cartflows-setup-wizard-content input,
517
  .cartflows-setup-content input {
518
  border: 1px solid #f1f1f1;
519
+ padding: 1em;
520
  border-radius: 3px;
521
  font-size: 14px;
522
  }
523
 
524
+ .cartflows-setup .cartflows-setup-message input{
525
+ width: 100%;
526
+ height: 45px;
527
+ }
528
+
529
  .wp-picker-active .wp-picker-holder {
530
  position: absolute;
531
  z-index: 9;
1229
  position: absolute;
1230
  width: 1px;
1231
  word-wrap: normal !important;
1232
+ }
1233
+
1234
+ input.wcf-error{
1235
+ border: 1px solid #ff0000;
1236
  }
admin/assets/js/global-admin.js CHANGED
@@ -100,6 +100,17 @@
100
 
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
 
103
  $( document ).ready(function() {
104
  //alert("Before Stattement");
105
  $( '#field-wcf-shortcode' ).appendTo( '#wcf-checkout-settings .hndle span' );
@@ -113,6 +124,8 @@
113
  wcf_prevent_toggle_for_shortcode();
114
 
115
  add_tool_tip_msg();
 
 
116
 
117
  });
118
 
100
 
101
  }
102
 
103
+ function wcf_toggle_post_update() {
104
+
105
+ if ( 'undefined' === typeof cartflows_woo ) {
106
+ return;
107
+ }
108
+
109
+ if( ! cartflows_woo.show_update_post ) {
110
+ $("#submitdiv").hide();
111
+ }
112
+ }
113
+
114
  $( document ).ready(function() {
115
  //alert("Before Stattement");
116
  $( '#field-wcf-shortcode' ).appendTo( '#wcf-checkout-settings .hndle span' );
124
  wcf_prevent_toggle_for_shortcode();
125
 
126
  add_tool_tip_msg();
127
+
128
+ wcf_toggle_post_update();
129
 
130
  });
131
 
admin/assets/js/setup-wizard.js CHANGED
@@ -10,10 +10,53 @@
10
  * Bind
11
  */
12
  _bind: function() {
13
- $( document ).on('click', '.wcf-install-plugins', CartFlowsWizard._installNow);
 
14
  $( document ).on('wp-plugin-installing' , CartFlowsWizard._pluginInstalling);
15
  $( document ).on('wp-plugin-install-error' , CartFlowsWizard._installError);
16
  $( document ).on('wp-plugin-install-success' , CartFlowsWizard._installSuccess);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  },
18
 
19
  /**
@@ -31,7 +74,7 @@
31
  event.preventDefault();
32
  console.log( 'Install Error!' );
33
 
34
- var redirect_link = $( '.page-builder-list' ).data('redirect-link') || '';
35
  console.log( redirect_link );
36
  if( '' !== redirect_link ) {
37
  window.location = redirect_link;
@@ -42,20 +85,29 @@
42
  /**
43
  * Install Success
44
  */
45
- _installSuccess: function(event, args) {
46
  event.preventDefault();
47
 
48
- CartFlowsWizard._activatePlugin();
49
- },
50
-
51
- _activatePlugin: function() {
52
- var plugin_slug = $( '.page-builder-list option:selected' ).data( 'slug' ) || '',
53
- plugin_init = $( '.page-builder-list option:selected' ).data( 'init' ) || '',
54
- redirect_link = $( '.page-builder-list' ).data('redirect-link') || '';
55
 
56
  console.log( plugin_slug );
57
- console.log( plugin_init );
58
- console.log( redirect_link );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  $.ajax({
61
  url : ajaxurl,
@@ -64,14 +116,13 @@
64
  action : 'page_builder_step_save',
65
  page_builder : plugin_slug,
66
  plugin_init : plugin_init,
67
- security : cartflows_admin.wcf_page_builder_step_save_nonce
 
68
  },
69
  })
70
- .done(function( data ) {
71
- console.log( data );
72
- console.log( redirect_link );
73
- if( data.success ) {
74
- if( '' !== redirect_link ) {
75
  window.location = redirect_link;
76
  }
77
  }
@@ -95,7 +146,8 @@
95
  $document = $(document),
96
  plugin_slug = $( '.page-builder-list option:selected' ).data( 'slug' ) || '',
97
  install = $( '.page-builder-list option:selected' ).data( 'install' ) || 'no',
98
- plugin_init = $( '.page-builder-list option:selected' ).data( 'init' ) || '';
 
99
 
100
  if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) {
101
  return;
@@ -104,32 +156,120 @@
104
  $button.addClass( 'updating-message' );
105
 
106
  if( 'yes' === install ) {
107
- CartFlowsWizard._activatePlugin();
 
 
 
 
 
 
108
  } else {
109
 
110
- console.log( 'plugin_slug' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
 
 
 
 
 
 
112
 
113
- if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) {
114
- wp.updates.requestFilesystemCredentials( event );
115
 
116
- $document.on( 'credential-modal-cancel', function() {
117
- var $message = $( '.install-now.updating-message' );
118
 
119
- $message
120
- .removeClass( 'updating-message' )
121
- .text( wp.updates.l10n.installNow );
122
 
123
- wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
124
- } );
125
  }
126
 
127
- wp.updates.installPlugin( {
128
- slug: plugin_slug
129
- } );
 
 
 
 
 
 
130
  }
 
131
 
 
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  },
134
  }
135
 
10
  * Bind
11
  */
12
  _bind: function() {
13
+ $( document ).on('click', '.wcf-install-plugins', CartFlowsWizard._installNow );
14
+ $( document ).on('click', '.wcf-install-wc', CartFlowsWizard._installWc );
15
  $( document ).on('wp-plugin-installing' , CartFlowsWizard._pluginInstalling);
16
  $( document ).on('wp-plugin-install-error' , CartFlowsWizard._installError);
17
  $( document ).on('wp-plugin-install-success' , CartFlowsWizard._installSuccess);
18
+ $( document ).on('click', '.mautic-form-submit', CartFlowsWizard._onMauticSubmit );
19
+ },
20
+
21
+ _onMauticSubmit: function( event ) {
22
+
23
+ event.preventDefault();
24
+ event.stopPropagation();
25
+
26
+ var form = $(this).closest('form');
27
+ var email_field = form.find('#mauticform_input_cartflowsonboarding_enter_your_email');
28
+ var submit_button = $(this);
29
+
30
+ var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,14})$/;
31
+
32
+ if ( reg.test( email_field.val() ) == false ) {
33
+ email_field.addClass('wcf-error');
34
+ return false;
35
+ } else {
36
+ email_field.removeClass('wcf-error');
37
+ }
38
+
39
+ submit_button.attr( 'disabled', 'disabled' );
40
+
41
+ $.ajax({
42
+ type: "POST",
43
+ url: form.attr('action'),
44
+ data: form.serialize(),
45
+ // async: false,
46
+ headers: {'X-Requested-With': 'XMLHttpRequest'},
47
+ success: function() {
48
+ // callback code here
49
+ console.log('in success');
50
+ var redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
51
+ window.location = redirect_link;
52
+ },
53
+ error: function( ) {
54
+ console.log('in error');
55
+ }
56
+ });
57
+
58
+ /* Do not execute anything here */
59
+
60
  },
61
 
62
  /**
74
  event.preventDefault();
75
  console.log( 'Install Error!' );
76
 
77
+ var redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
78
  console.log( redirect_link );
79
  if( '' !== redirect_link ) {
80
  window.location = redirect_link;
85
  /**
86
  * Install Success
87
  */
88
+ _installSuccess: function( event, args ) {
89
  event.preventDefault();
90
 
91
+ var plugin_init = args.slug + "/" + args.slug + ".php";
92
+ var plugin_slug = args.slug;
 
 
 
 
 
93
 
94
  console.log( plugin_slug );
95
+
96
+ if ( 'woocommerce' === plugin_slug ) {
97
+ return;
98
+ }
99
+
100
+ if( 'woo-cart-abandonment-recovery' === plugin_slug ) {
101
+ CartFlowsWizard._activateWc();
102
+ return;
103
+ }
104
+
105
+ CartFlowsWizard._activatePlugin( plugin_init, plugin_slug );
106
+ },
107
+
108
+ _activatePlugin: function( plugin_init, plugin_slug ) {
109
+ var redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
110
+ var save_builder_option = ( '1' == $( "#save-pb-option" ).val() ) || false;
111
 
112
  $.ajax({
113
  url : ajaxurl,
116
  action : 'page_builder_step_save',
117
  page_builder : plugin_slug,
118
  plugin_init : plugin_init,
119
+ save_builder_option : save_builder_option,
120
+ security : cartflows_setup_vars.wcf_page_builder_step_save_nonce
121
  },
122
  })
123
+ .done(function( response ) {
124
+ if( response.success ) {
125
+ if ( '' !== redirect_link ) {
 
 
126
  window.location = redirect_link;
127
  }
128
  }
146
  $document = $(document),
147
  plugin_slug = $( '.page-builder-list option:selected' ).data( 'slug' ) || '',
148
  install = $( '.page-builder-list option:selected' ).data( 'install' ) || 'no',
149
+ plugin_init = $( '.page-builder-list option:selected' ).data( 'init' ) || '',
150
+ redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
151
 
152
  if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) {
153
  return;
156
  $button.addClass( 'updating-message' );
157
 
158
  if( 'yes' === install ) {
159
+ CartFlowsWizard._activatePlugin( plugin_init, plugin_slug );
160
+ } else if( 'no' === install ) {
161
+
162
+ console.log( 'plugin_slug ' + plugin_slug );
163
+
164
+ CartFlowsWizard._installPlugin( plugin_slug );
165
+
166
  } else {
167
 
168
+ $.ajax({
169
+ url : ajaxurl,
170
+ method : 'POST',
171
+ data : {
172
+ action : 'page_builder_save_option',
173
+ page_builder : plugin_slug
174
+ },
175
+ })
176
+ .done(function( data ) {
177
+
178
+ if( data.success ) {
179
+ if( '' !== redirect_link ) {
180
+ window.location = redirect_link;
181
+ }
182
+ }
183
+ })
184
+ .fail(function() {
185
+ console.log("error");
186
+ })
187
+ .always(function() {
188
+ console.log("complete");
189
+ });
190
+ }
191
+ },
192
+
193
+ _installWc: function( event ) {
194
+
195
+ event.preventDefault();
196
+
197
+ var $button = $(this);
198
 
199
+ if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) {
200
+ return;
201
+ }
202
+
203
+ $button.addClass( 'updating-message' );
204
+ var redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
205
 
206
+ if( $( '.wcf-install-wc-input' ).prop( "checked" ) == true ) {
 
207
 
208
+ var woo_installed = $( '.wcf-install-wc-input' ).data('woo-install');
209
+ var wcf_ca_installed = $( '.wcf-install-wc-input' ).data('wcf-ca-install');
210
 
 
 
 
211
 
212
+ if( 'yes' === woo_installed && 'yes' === wcf_ca_installed ) {
213
+ CartFlowsWizard._activateWc();
214
  }
215
 
216
+ if( 'no' == woo_installed ) {
217
+ CartFlowsWizard._installPlugin( 'woocommerce' );
218
+ }
219
+
220
+ if( 'no' == wcf_ca_installed ) {
221
+ CartFlowsWizard._installPlugin( 'woo-cart-abandonment-recovery' );
222
+ }
223
+ } else {
224
+ window.location = redirect_link;
225
  }
226
+ },
227
 
228
+ _activateWc: function() {
229
 
230
+ var redirect_link = $( '.wcf-redirect-link' ).data('redirect-link') || '';
231
+
232
+ $.ajax({
233
+ url : ajaxurl,
234
+ method : 'POST',
235
+ data : {
236
+ action : 'wcf_activate_wc_plugins',
237
+ security : cartflows_setup_vars.wcf_wc_plugins_activate_nonce
238
+ },
239
+ })
240
+ .done(function( response ) {
241
+
242
+ if( response.success && '' !== redirect_link ) {
243
+ window.location = redirect_link;
244
+ }
245
+ })
246
+ .fail(function() {
247
+ console.log("error");
248
+ })
249
+ .always(function() {
250
+ console.log("complete");
251
+ });
252
+ },
253
+
254
+ _installPlugin: function( plugin_slug ) {
255
+
256
+ if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) {
257
+ wp.updates.requestFilesystemCredentials( event );
258
+
259
+ $document.on( 'credential-modal-cancel', function() {
260
+ var $message = $( '.install-now.updating-message' );
261
+
262
+ $message
263
+ .removeClass( 'updating-message' )
264
+ .text( wp.updates.l10n.installNow );
265
+
266
+ wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
267
+ } );
268
+ }
269
+
270
+ wp.updates.installPlugin( {
271
+ slug: plugin_slug
272
+ } );
273
  },
274
  }
275
 
admin/meta-assets/js/admin-edit.js CHANGED
@@ -34,6 +34,10 @@
34
 
35
  _set_font_weigths: function() {
36
 
 
 
 
 
37
  $('.wcf-field-font-family').select2();
38
 
39
  var google_url = '';
34
 
35
  _set_font_weigths: function() {
36
 
37
+ if ( 'function' !== typeof $('.wcf-field-font-family').select2 ){
38
+ return;
39
+ }
40
+
41
  $('.wcf-field-font-family').select2();
42
 
43
  var google_url = '';
assets/css/checkout-template-rtl.css CHANGED
@@ -625,6 +625,10 @@
625
  position: relative;
626
  }
627
 
 
 
 
 
628
  .wcf-embed-checkout-form table.shop_table {
629
  border:none;
630
  border-bottom: 0;
625
  position: relative;
626
  }
627
 
628
+ .wcf-embed-checkout-form .woocommerce form .woocommerce-account-fields .form-row{
629
+ padding: 0px;
630
+ }
631
+
632
  .wcf-embed-checkout-form table.shop_table {
633
  border:none;
634
  border-bottom: 0;
assets/css/checkout-template.css CHANGED
@@ -625,6 +625,10 @@
625
  position: relative;
626
  }
627
 
 
 
 
 
628
  .wcf-embed-checkout-form table.shop_table {
629
  border:none;
630
  border-bottom: 0;
625
  position: relative;
626
  }
627
 
628
+ .wcf-embed-checkout-form .woocommerce form .woocommerce-account-fields .form-row{
629
+ padding: 0px;
630
+ }
631
+
632
  .wcf-embed-checkout-form table.shop_table {
633
  border:none;
634
  border-bottom: 0;
assets/css/frontend-rtl.css CHANGED
@@ -885,25 +885,34 @@ body.cartflows-default {
885
 
886
  .woocommerce-order ul.order_details,
887
  .woocommerce-order .woocommerce-customer-details,
888
- .woocommerce-order .woocommerce-order-details {
 
 
889
  margin: 0 0 2em;
890
  -webkit-border-radius: 3px;
891
  border-radius: 3px;
892
  width: 100%;
893
  display: block;
894
  }
 
 
 
895
 
896
  /* Section Background & Padding */
897
  .woocommerce-order ul.order_details,
898
  .woocommerce-order .woocommerce-customer-details,
899
- .woocommerce-order .woocommerce-order-details {
 
 
900
  background: #f1f1f1;
901
  padding: 1.5em 2.5em;
902
  }
903
 
904
  .woocommerce-order h2.woocommerce-column__title,
905
  .woocommerce-order h2.woocommerce-order-details__title,
906
- .woocommerce-order .woocommerce-thankyou-order-received {
 
 
907
  padding: 0.8em 0;
908
  margin: 0 0 0.5em;
909
  font-size: 1.5em;
@@ -918,7 +927,8 @@ body.cartflows-default {
918
  }
919
 
920
  /* Order Details Form */
921
- .woocommerce-order-details table.shop_table {
 
922
  border:none;
923
  border-bottom: 0;
924
  background-color: inherit;
@@ -936,9 +946,10 @@ body.cartflows-default {
936
  padding: 0;
937
  list-style: none;
938
  }
939
- .woocommerce-order-details table.shop_table th{
 
940
  border: none;
941
- font-weight: 400;
942
  padding: 9px 0px;
943
  line-height: 1.2em;
944
  }
885
 
886
  .woocommerce-order ul.order_details,
887
  .woocommerce-order .woocommerce-customer-details,
888
+ .woocommerce-order .woocommerce-order-details,
889
+ .woocommerce-order .woocommerce-order-downloads,
890
+ .woocommerce-order .woocommerce-bacs-bank-details {
891
  margin: 0 0 2em;
892
  -webkit-border-radius: 3px;
893
  border-radius: 3px;
894
  width: 100%;
895
  display: block;
896
  }
897
+ .woocommerce-order .woocommerce-bacs-bank-details ul.bacs_details{
898
+ padding: 0px;
899
+ }
900
 
901
  /* Section Background & Padding */
902
  .woocommerce-order ul.order_details,
903
  .woocommerce-order .woocommerce-customer-details,
904
+ .woocommerce-order .woocommerce-order-details,
905
+ .woocommerce-order .woocommerce-order-downloads,
906
+ .woocommerce-order .woocommerce-bacs-bank-details {
907
  background: #f1f1f1;
908
  padding: 1.5em 2.5em;
909
  }
910
 
911
  .woocommerce-order h2.woocommerce-column__title,
912
  .woocommerce-order h2.woocommerce-order-details__title,
913
+ .woocommerce-order .woocommerce-thankyou-order-received,
914
+ .woocommerce-order .woocommerce-order-downloads__title,
915
+ .woocommerce-order h2.wc-bacs-bank-details-heading {
916
  padding: 0.8em 0;
917
  margin: 0 0 0.5em;
918
  font-size: 1.5em;
927
  }
928
 
929
  /* Order Details Form */
930
+ .woocommerce-order-details table.shop_table,
931
+ .woocommerce-order-downloads table.shop_table {
932
  border:none;
933
  border-bottom: 0;
934
  background-color: inherit;
946
  padding: 0;
947
  list-style: none;
948
  }
949
+ .woocommerce-order-details table.shop_table th,
950
+ .woocommerce-order-downloads table.shop_table th{
951
  border: none;
952
+ font-weight: 600;
953
  padding: 9px 0px;
954
  line-height: 1.2em;
955
  }
assets/css/frontend.css CHANGED
@@ -885,25 +885,34 @@ body.cartflows-default {
885
 
886
  .woocommerce-order ul.order_details,
887
  .woocommerce-order .woocommerce-customer-details,
888
- .woocommerce-order .woocommerce-order-details {
 
 
889
  margin: 0 0 2em;
890
  -webkit-border-radius: 3px;
891
  border-radius: 3px;
892
  width: 100%;
893
  display: block;
894
  }
 
 
 
895
 
896
  /* Section Background & Padding */
897
  .woocommerce-order ul.order_details,
898
  .woocommerce-order .woocommerce-customer-details,
899
- .woocommerce-order .woocommerce-order-details {
 
 
900
  background: #f1f1f1;
901
  padding: 1.5em 2.5em;
902
  }
903
 
904
  .woocommerce-order h2.woocommerce-column__title,
905
  .woocommerce-order h2.woocommerce-order-details__title,
906
- .woocommerce-order .woocommerce-thankyou-order-received {
 
 
907
  padding: 0.8em 0;
908
  margin: 0 0 0.5em;
909
  font-size: 1.5em;
@@ -918,7 +927,8 @@ body.cartflows-default {
918
  }
919
 
920
  /* Order Details Form */
921
- .woocommerce-order-details table.shop_table {
 
922
  border:none;
923
  border-bottom: 0;
924
  background-color: inherit;
@@ -936,9 +946,10 @@ body.cartflows-default {
936
  padding: 0;
937
  list-style: none;
938
  }
939
- .woocommerce-order-details table.shop_table th{
 
940
  border: none;
941
- font-weight: 400;
942
  padding: 9px 0px;
943
  line-height: 1.2em;
944
  }
885
 
886
  .woocommerce-order ul.order_details,
887
  .woocommerce-order .woocommerce-customer-details,
888
+ .woocommerce-order .woocommerce-order-details,
889
+ .woocommerce-order .woocommerce-order-downloads,
890
+ .woocommerce-order .woocommerce-bacs-bank-details {
891
  margin: 0 0 2em;
892
  -webkit-border-radius: 3px;
893
  border-radius: 3px;
894
  width: 100%;
895
  display: block;
896
  }
897
+ .woocommerce-order .woocommerce-bacs-bank-details ul.bacs_details{
898
+ padding: 0px;
899
+ }
900
 
901
  /* Section Background & Padding */
902
  .woocommerce-order ul.order_details,
903
  .woocommerce-order .woocommerce-customer-details,
904
+ .woocommerce-order .woocommerce-order-details,
905
+ .woocommerce-order .woocommerce-order-downloads,
906
+ .woocommerce-order .woocommerce-bacs-bank-details {
907
  background: #f1f1f1;
908
  padding: 1.5em 2.5em;
909
  }
910
 
911
  .woocommerce-order h2.woocommerce-column__title,
912
  .woocommerce-order h2.woocommerce-order-details__title,
913
+ .woocommerce-order .woocommerce-thankyou-order-received,
914
+ .woocommerce-order .woocommerce-order-downloads__title,
915
+ .woocommerce-order h2.wc-bacs-bank-details-heading {
916
  padding: 0.8em 0;
917
  margin: 0 0 0.5em;
918
  font-size: 1.5em;
927
  }
928
 
929
  /* Order Details Form */
930
+ .woocommerce-order-details table.shop_table,
931
+ .woocommerce-order-downloads table.shop_table {
932
  border:none;
933
  border-bottom: 0;
934
  background-color: inherit;
946
  padding: 0;
947
  list-style: none;
948
  }
949
+ .woocommerce-order-details table.shop_table th,
950
+ .woocommerce-order-downloads table.shop_table th{
951
  border: none;
952
+ font-weight: 600;
953
  padding: 9px 0px;
954
  line-height: 1.2em;
955
  }
assets/css/import-rtl.css CHANGED
@@ -47,29 +47,40 @@
47
  }
48
 
49
  .template .notice {
50
- padding: .5em;
51
- background: rgba(0,0,0,.7);
52
  color: #fff;
53
- font-weight: normal;
54
- border: navajowhite;
55
- font-size: 11px;
56
  text-decoration: none;
57
  position: absolute;
58
  width: 100%;
59
  /* height: 100%; */
60
  vertical-align: middle;
61
- top: 50%;
62
- -webkit-transform: translateY(-60%);
63
- -ms-transform: translateY(-60%);
64
- transform: translateY(-60%);
 
65
  left: 0%;
66
  right: 0%;
67
  z-index: 4;
68
  text-align: center;
69
  -webkit-border-radius: 3px;
70
- border-radius: 3px;
71
  -webkit-transition: opacity .1s ease-in-out;
72
  transition: opacity .1s ease-in-out;
 
 
 
 
 
 
 
 
 
 
73
  }
74
 
75
  #wcf_create_notice{
@@ -551,8 +562,6 @@ div#TB_window {
551
  float: none;
552
  position: absolute;
553
  top: 40%;
554
- /*left: 50%;
555
- transform: translate(-50%,-40%);*/
556
  }
557
  #wcf-scratch-steps-categories {
558
  display: inline-block;
@@ -1051,3 +1060,21 @@ html.wcf-popup-open{
1051
  .cartflows-website-unreachable {
1052
  padding: 1em 2em;
1053
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  }
48
 
49
  .template .notice {
50
+ padding: .6em;
51
+ background: rgba(0,0,0,.8);
52
  color: #fff;
53
+ font-weight: 400;
54
+ border: none;
55
+ font-size: 13px;
56
  text-decoration: none;
57
  position: absolute;
58
  width: 100%;
59
  /* height: 100%; */
60
  vertical-align: middle;
61
+ bottom: 0%;
62
+ margin: 0px;
63
+ -webkit-transform: translateY(0%);
64
+ -ms-transform: translateY(0%);
65
+ transform: translateY(0%);
66
  left: 0%;
67
  right: 0%;
68
  z-index: 4;
69
  text-align: center;
70
  -webkit-border-radius: 3px;
71
+ border-radius: 0px;
72
  -webkit-transition: opacity .1s ease-in-out;
73
  transition: opacity .1s ease-in-out;
74
+ -webkit-font-smoothing: antialiased;
75
+ }
76
+
77
+ .template .notice a{
78
+ color: #f16334;
79
+ }
80
+
81
+ .template .notice p{
82
+ padding: 0px;
83
+ margin: 0px;
84
  }
85
 
86
  #wcf_create_notice{
562
  float: none;
563
  position: absolute;
564
  top: 40%;
 
 
565
  }
566
  #wcf-scratch-steps-categories {
567
  display: inline-block;
1060
  .cartflows-website-unreachable {
1061
  padding: 1em 2em;
1062
  }
1063
+ .wcf-notice-wrap{
1064
+ margin-top: 20px;
1065
+ font-size: 15px;
1066
+ color: #ff0000;
1067
+ }
1068
+
1069
+ .wcf-activate-wc{
1070
+ text-decoration: none;
1071
+ }
1072
+ .wcf-activate-wc.button{
1073
+ border: none;
1074
+ -webkit-box-shadow: none;
1075
+ box-shadow: none;
1076
+ }
1077
+
1078
+ .wcf-hidden{
1079
+ display: none;
1080
+ }
assets/css/import.css CHANGED
@@ -47,29 +47,40 @@
47
  }
48
 
49
  .template .notice {
50
- padding: .5em;
51
- background: rgba(0,0,0,.7);
52
  color: #fff;
53
- font-weight: normal;
54
- border: navajowhite;
55
- font-size: 11px;
56
  text-decoration: none;
57
  position: absolute;
58
  width: 100%;
59
  /* height: 100%; */
60
  vertical-align: middle;
61
- top: 50%;
62
- -webkit-transform: translateY(-60%);
63
- -ms-transform: translateY(-60%);
64
- transform: translateY(-60%);
 
65
  right: 0%;
66
  left: 0%;
67
  z-index: 4;
68
  text-align: center;
69
  -webkit-border-radius: 3px;
70
- border-radius: 3px;
71
  -webkit-transition: opacity .1s ease-in-out;
72
  transition: opacity .1s ease-in-out;
 
 
 
 
 
 
 
 
 
 
73
  }
74
 
75
  #wcf_create_notice{
@@ -551,8 +562,6 @@ div#TB_window {
551
  float: none;
552
  position: absolute;
553
  top: 40%;
554
- /*left: 50%;
555
- transform: translate(-50%,-40%);*/
556
  }
557
  #wcf-scratch-steps-categories {
558
  display: inline-block;
@@ -1051,3 +1060,21 @@ html.wcf-popup-open{
1051
  .cartflows-website-unreachable {
1052
  padding: 1em 2em;
1053
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  }
48
 
49
  .template .notice {
50
+ padding: .6em;
51
+ background: rgba(0,0,0,.8);
52
  color: #fff;
53
+ font-weight: 400;
54
+ border: none;
55
+ font-size: 13px;
56
  text-decoration: none;
57
  position: absolute;
58
  width: 100%;
59
  /* height: 100%; */
60
  vertical-align: middle;
61
+ bottom: 0%;
62
+ margin: 0px;
63
+ -webkit-transform: translateY(0%);
64
+ -ms-transform: translateY(0%);
65
+ transform: translateY(0%);
66
  right: 0%;
67
  left: 0%;
68
  z-index: 4;
69
  text-align: center;
70
  -webkit-border-radius: 3px;
71
+ border-radius: 0px;
72
  -webkit-transition: opacity .1s ease-in-out;
73
  transition: opacity .1s ease-in-out;
74
+ -webkit-font-smoothing: antialiased;
75
+ }
76
+
77
+ .template .notice a{
78
+ color: #f16334;
79
+ }
80
+
81
+ .template .notice p{
82
+ padding: 0px;
83
+ margin: 0px;
84
  }
85
 
86
  #wcf_create_notice{
562
  float: none;
563
  position: absolute;
564
  top: 40%;
 
 
565
  }
566
  #wcf-scratch-steps-categories {
567
  display: inline-block;
1060
  .cartflows-website-unreachable {
1061
  padding: 1em 2em;
1062
  }
1063
+ .wcf-notice-wrap{
1064
+ margin-top: 20px;
1065
+ font-size: 15px;
1066
+ color: #ff0000;
1067
+ }
1068
+
1069
+ .wcf-activate-wc{
1070
+ text-decoration: none;
1071
+ }
1072
+ .wcf-activate-wc.button{
1073
+ border: none;
1074
+ -webkit-box-shadow: none;
1075
+ box-shadow: none;
1076
+ }
1077
+
1078
+ .wcf-hidden{
1079
+ display: none;
1080
+ }
assets/js/import.js CHANGED
@@ -95,6 +95,15 @@ var CartFlowsAjaxQueue = (function() {
95
  remaining_steps : 0,
96
  remaining_install_plugins : 0,
97
  remaining_active_plugins : 0,
 
 
 
 
 
 
 
 
 
98
 
99
  /**
100
  * Init
@@ -167,6 +176,7 @@ var CartFlowsAjaxQueue = (function() {
167
  self.doc.on('click', '#wcf-remote-flow-importer .wcf-page-builder-links a', self._filterFlowPageBuilderClick);
168
  self.doc.on('click', '#wcf-remote-step-importer #wcf-categories .step-type-filter-links a', self._filterBlankStepCategoryClick );
169
  self.doc.on('change', '#wcf-remote-step-importer #wcf-scratch-steps-categories .step-type-filter-links', self._filterBlankStepCategoryChange );
 
170
  self.doc.on('click', '#wcf-remote-step-importer .wcf-page-builder-links a', self._filterStepPageBuilderClick );
171
 
172
  self.doc.on('click' , '.cartflows-step-import-blank:not(.get-pro)', self._create_blank_step);
@@ -191,6 +201,8 @@ var CartFlowsAjaxQueue = (function() {
191
  $( document ).on( 'click', '.wcf-popup-close-wrap .close-icon', self._close_template_popup );
192
 
193
  $( document ).on('wp-plugin-install-success' , self._installSuccess);
 
 
194
  },
195
 
196
  _install_plugin: function( event ) {
@@ -302,6 +314,11 @@ var CartFlowsAjaxQueue = (function() {
302
 
303
  event.preventDefault();
304
 
 
 
 
 
 
305
  var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins'];
306
 
307
  $.each( page_builder_plugins, function( index, plugin ) {
@@ -324,7 +341,7 @@ var CartFlowsAjaxQueue = (function() {
324
  }
325
  });
326
  }
327
- });
328
 
329
  },
330
 
@@ -494,9 +511,12 @@ var CartFlowsAjaxQueue = (function() {
494
  },
495
 
496
  _filterBlankStepCategoryChange: function( event ) {
 
497
  event.preventDefault();
 
 
498
 
499
- var val = $(this).find('option:selected').val() || '';
500
  if( val ) {
501
  $('.step-type-filter-links').val( val );
502
  $('.step-type-filter-links').find('a').removeClass('current');
@@ -506,7 +526,14 @@ var CartFlowsAjaxQueue = (function() {
506
  $('.step-type-filter-links').find('option').removeClass('current');
507
  $('.step-type-filter-links').find('option:selected').addClass('current');
508
 
509
- $step_type = $(this).find('option:selected').data('slug');
 
 
 
 
 
 
 
510
 
511
  if ( 'upsell' === $step_type || 'downsell' === $step_type ) {
512
  $( '.wcf-template-notice' ).show();
@@ -566,6 +593,16 @@ var CartFlowsAjaxQueue = (function() {
566
 
567
  data.current_step_type = step_type;
568
 
 
 
 
 
 
 
 
 
 
 
569
  var template = wp.template('cartflows-steps-list');
570
  if( parseInt( data.items_count ) ) {
571
  $('#wcf-remote-step-list').html( template( data ) );
@@ -743,6 +780,21 @@ var CartFlowsAjaxQueue = (function() {
743
 
744
  },
745
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
746
  _cache_remote_steps: function() {
747
 
748
  var self = CartFlowsImport;
@@ -788,6 +840,7 @@ var CartFlowsAjaxQueue = (function() {
788
 
789
  CartFlowsAPI._api_request( api_post, function( data ) {
790
 
 
791
  var step_type_response_data = data;
792
  var step_types_count = data.items_count;
793
 
@@ -795,6 +848,9 @@ var CartFlowsAjaxQueue = (function() {
795
  if( data.items ) {
796
  for ( key in data.items ) {
797
 
 
 
 
798
  // Add Params for API request.
799
  var api_params = {
800
  licence_args : CartFlowsImportVars.licence_args,
@@ -1044,6 +1100,18 @@ var CartFlowsAjaxQueue = (function() {
1044
 
1045
  CartFlowsAPI._api_request( api_post, function( data ) {
1046
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  var template = wp.template('cartflows-flows-list');
1048
  if( parseInt( data.items_count ) ) {
1049
  $('#wcf-remote-flow-list').html( template( data ) );
@@ -1252,7 +1320,7 @@ var CartFlowsAjaxQueue = (function() {
1252
  step_count = $('.wcf-step-wrap[data-term-slug="'+step_slug+'"]').length || 1,
1253
  step_custom_title = step_title + ' ' + ( parseInt( step_count ) + 1 );
1254
 
1255
- $('#wcf-start-from-scratch .wcf-notice-wrap').remove();
1256
 
1257
  if( '' === step_type ) {
1258
  $('#wcf-start-from-scratch .inner').append( '<div class="wcf-notice-wrap"><div class="notice notice-info"><p>Please select the step type.</p></div></div>' );
@@ -1458,8 +1526,64 @@ var CartFlowsAjaxQueue = (function() {
1458
  .addClass('notice notice-warning')
1459
  .removeClass('preview')
1460
  .text( jqXHR.responseText );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1461
  }
1462
 
 
1463
  };
1464
 
1465
  /**
95
  remaining_steps : 0,
96
  remaining_install_plugins : 0,
97
  remaining_active_plugins : 0,
98
+ woo_required_steps: [ 'checkout', 'upsell', 'downsell', 'thankyou' ],
99
+ step_order: [ 'landing', 'checkout', 'upsell', 'downsell', 'thankyou' ],
100
+ new_step_names: {
101
+ 'landing': 'Landing',
102
+ 'checkout': 'Checkout (Woo)',
103
+ 'upsell': 'Upsell (Woo)',
104
+ 'downsell': 'Downsell (Woo)',
105
+ 'thankyou': 'Thank You (Woo)',
106
+ },
107
 
108
  /**
109
  * Init
176
  self.doc.on('click', '#wcf-remote-flow-importer .wcf-page-builder-links a', self._filterFlowPageBuilderClick);
177
  self.doc.on('click', '#wcf-remote-step-importer #wcf-categories .step-type-filter-links a', self._filterBlankStepCategoryClick );
178
  self.doc.on('change', '#wcf-remote-step-importer #wcf-scratch-steps-categories .step-type-filter-links', self._filterBlankStepCategoryChange );
179
+ self.doc.on('click', '#wcf-get-started-steps', self._filterBlankStepCategoryChange );
180
  self.doc.on('click', '#wcf-remote-step-importer .wcf-page-builder-links a', self._filterStepPageBuilderClick );
181
 
182
  self.doc.on('click' , '.cartflows-step-import-blank:not(.get-pro)', self._create_blank_step);
201
  $( document ).on( 'click', '.wcf-popup-close-wrap .close-icon', self._close_template_popup );
202
 
203
  $( document ).on('wp-plugin-install-success' , self._installSuccess);
204
+
205
+ $( document ).on( 'click', '.wcf-activate-wc', self._installWc );
206
  },
207
 
208
  _install_plugin: function( event ) {
314
 
315
  event.preventDefault();
316
 
317
+ if( 'no' === CartFlowsImportVars.is_wc_activated ) {
318
+ CartFlowsImport._activateWc();
319
+ }
320
+
321
+
322
  var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins'];
323
 
324
  $.each( page_builder_plugins, function( index, plugin ) {
341
  }
342
  });
343
  }
344
+ });
345
 
346
  },
347
 
511
  },
512
 
513
  _filterBlankStepCategoryChange: function( event ) {
514
+
515
  event.preventDefault();
516
+ $(".wcf-notice-wrap").remove();
517
+ $('.cartflows-step-import-blank').css('pointer-events', 'auto').removeClass('disabled');
518
 
519
+ var val = $('.step-type-filter-links').find('option:selected').val() || '';
520
  if( val ) {
521
  $('.step-type-filter-links').val( val );
522
  $('.step-type-filter-links').find('a').removeClass('current');
526
  $('.step-type-filter-links').find('option').removeClass('current');
527
  $('.step-type-filter-links').find('option:selected').addClass('current');
528
 
529
+ $step_type = $('.step-type-filter-links').find('option:selected').data('slug');
530
+
531
+ if ( ( 'no' === CartFlowsImportVars.is_wc_installed || 'no' === CartFlowsImportVars.is_wc_activated ) && ( 'upsell' === $step_type || 'downsell' === $step_type || 'checkout' === $step_type || 'thankyou' === $step_type)) {
532
+ $(".cartflows-step-import-blank").after("<p class='wcf-notice-wrap' style='text-align: center'>You need WooCommerce plugin installed and actived to use this product flow. <br/><br/> <a href='#' class='wcf-activate-wc button-secondary'> Click here to install and activate WooCommerce </a> </p>");
533
+ $('.cartflows-step-import-blank').addClass('disabled').css('pointer-events', 'none');
534
+ return;
535
+ }
536
+
537
 
538
  if ( 'upsell' === $step_type || 'downsell' === $step_type ) {
539
  $( '.wcf-template-notice' ).show();
593
 
594
  data.current_step_type = step_type;
595
 
596
+ if ('yes' !== CartFlowsImportVars.is_wc_activated) {
597
+ $.each(data.items, function (index, value) {
598
+ data.items[index].woo_required = false;
599
+ if ($.inArray(value.step_type.slug, CartFlowsImport.woo_required_steps) >= 0) {
600
+ data.items[index].woo_required = true;
601
+ return;
602
+ }
603
+ });
604
+ }
605
+
606
  var template = wp.template('cartflows-steps-list');
607
  if( parseInt( data.items_count ) ) {
608
  $('#wcf-remote-step-list').html( template( data ) );
780
 
781
  },
782
 
783
+ mapOrder: function (array, order, key) {
784
+
785
+ array.sort(function (a, b) {
786
+ var A = a[key], B = b[key];
787
+
788
+ if (order.indexOf(A) > order.indexOf(B)) {
789
+ return 1;
790
+ } else {
791
+ return -1;
792
+ }
793
+
794
+ });
795
+ return array;
796
+ },
797
+
798
  _cache_remote_steps: function() {
799
 
800
  var self = CartFlowsImport;
840
 
841
  CartFlowsAPI._api_request( api_post, function( data ) {
842
 
843
+ data.items = CartFlowsImport.mapOrder( data.items, CartFlowsImport.step_order, 'slug' )
844
  var step_type_response_data = data;
845
  var step_types_count = data.items_count;
846
 
848
  if( data.items ) {
849
  for ( key in data.items ) {
850
 
851
+ // Rename Step names on UI.
852
+ data.items[ key ].name = CartFlowsImport.new_step_names[ data.items[ key ].slug ];
853
+
854
  // Add Params for API request.
855
  var api_params = {
856
  licence_args : CartFlowsImportVars.licence_args,
1100
 
1101
  CartFlowsAPI._api_request( api_post, function( data ) {
1102
 
1103
+ if ('yes' !== CartFlowsImportVars.is_wc_activated) {
1104
+ $.each(data.items, function (index, value) {
1105
+ data.items[index].woo_required = false;
1106
+ $.each(value.flow_steps, function (key, value) {
1107
+ if ($.inArray(value.type, CartFlowsImport.woo_required_steps) >= 0) {
1108
+ data.items[index].woo_required = true;
1109
+ return;
1110
+ }
1111
+ });
1112
+ });
1113
+ }
1114
+
1115
  var template = wp.template('cartflows-flows-list');
1116
  if( parseInt( data.items_count ) ) {
1117
  $('#wcf-remote-flow-list').html( template( data ) );
1320
  step_count = $('.wcf-step-wrap[data-term-slug="'+step_slug+'"]').length || 1,
1321
  step_custom_title = step_title + ' ' + ( parseInt( step_count ) + 1 );
1322
 
1323
+ $('#wcf-start-from-scratch .wcf-notice-wrap ').remove();
1324
 
1325
  if( '' === step_type ) {
1326
  $('#wcf-start-from-scratch .inner').append( '<div class="wcf-notice-wrap"><div class="notice notice-info"><p>Please select the step type.</p></div></div>' );
1526
  .addClass('notice notice-warning')
1527
  .removeClass('preview')
1528
  .text( jqXHR.responseText );
1529
+ },
1530
+
1531
+ _activateWc: function( event ) {
1532
+
1533
+ $.ajax({
1534
+ url : ajaxurl,
1535
+ type : 'POST',
1536
+ data : {
1537
+ action : 'cartflows_activate_plugin',
1538
+ plugin_init : 'woocommerce/woocommerce.php'
1539
+ },
1540
+ })
1541
+ .done(function( request, status, XHR )
1542
+ {
1543
+ $(".wcf-notice-wrap").addClass('wcf-hidden');
1544
+ $(".cartflows-template-selector").removeAttr( 'disabled' );
1545
+ CartFlowsImport.wc_installed = true;
1546
+ CartFlowsImportVars.is_wc_installed = 'yes';
1547
+ CartFlowsImportVars.is_wc_activated = 'yes';
1548
+ location.reload(true);
1549
+ window.location.search += '&add-new-flow';
1550
+ });
1551
+
1552
+ },
1553
+
1554
+
1555
+ _installWc: function( event ) {
1556
+
1557
+ var plugin_slug = 'woocommerce';
1558
+
1559
+ $(this).addClass('updating-message button');
1560
+ $(this).text( cartflows_admin.wc_activating_message );
1561
+
1562
+ if( false == cartflows_admin.wc_status.installed ) {
1563
+
1564
+ if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) {
1565
+ wp.updates.requestFilesystemCredentials( event );
1566
+
1567
+ $document.on( 'credential-modal-cancel', function() {
1568
+ var $message = $( '.install-now.updating-message' );
1569
+
1570
+ $message
1571
+ .removeClass( 'updating-message' )
1572
+ .text( wp.updates.l10n.installNow );
1573
+
1574
+ wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
1575
+ } );
1576
+ }
1577
+
1578
+ wp.updates.installPlugin( {
1579
+ slug: plugin_slug
1580
+ } );
1581
+ } else {
1582
+ CartFlowsImport._activateWc();
1583
+ }
1584
  }
1585
 
1586
+
1587
  };
1588
 
1589
  /**
assets/min-css/checkout-template-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .cartflows-container .wcf-embed-checkout-form,.cartflows-container .wcf-embed-checkout-form *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wcf-embed-checkout-form .wc-backward{display:none!important}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:50%;display:block}.wcf-embed-checkout-form .woocommerce form .form-row-full,.wcf-embed-checkout-form .woocommerce-page form .form-row-full{width:100%;clear:both}.wcf-embed-checkout-form form .form-row-wide{width:100%}.wcf-embed-checkout-form form .wcf-column-33{width:33.33%}.wcf-embed-checkout-form .woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:right;clear:right}.wcf-embed-checkout-form .woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:left;clear:left}.wcf-embed-checkout-form .woocommerce form .form-row .required{color:red;font-weight:700;border:0!important;text-decoration:none}.wcf-embed-checkout-form form .form-row-first.form-row-one{clear:both}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login{display:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row{margin-bottom:15px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .clear{clear:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label{margin:0;line-height:1em;padding-top:0;position:relative;top:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .login-form-actions{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .remember_me{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-ms-flex:1;flex:1;font-family:inherit;font-size:13px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me label{margin-bottom:0;vertical-align:text-top}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me input,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me span{vertical-align:middle}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password{text-align:left;margin-top:0;margin-bottom:0}.wcf-embed-checkout-form .woocommerce .blockUI.blockOverlay{font-size:15px}.mt20{margin-top:20px!important}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid select{border-width:1px;border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated select{border-width:1px}.wcf-embed-checkout-form .select2-container--default.field-required .select2-selection--single,.wcf-embed-checkout-form .woocommerce #order_review .input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row textarea.input-text.field-required{border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row input.field-validated{border-right-width:2px;border-right-color:#69bf29}.wcf-embed-checkout-form .wcf-checkout-header-image{text-align:center}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{content:"\e600";margin:0;color:#f16334}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox],.wcf-embed-checkout-form .woocommerce #payment input[type=radio],.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox],.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:focus{border-color:#f16334;-webkit-box-shadow:0 0 2px rgba(241,99,52,.8);box-shadow:0 0 2px rgba(241,99,52,.8)}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{background-color:#f16334;-webkit-border-radius:50px;border-radius:50px;content:"\2022";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{display:inline-block;float:right;font:normal 15px/1 cartflows-icon;speak:none;vertical-align:middle;width:6px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li input[type=checkbox]{min-width:16px}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2{float:none;width:100%;max-width:100%;padding:0;-webkit-border-radius:0;border-radius:0;border:none;border-color:none;margin-bottom:0}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-family:inherit;font-weight:600;font-size:20px;text-transform:capitalize;margin:0 0 25px 0;padding:3px}.wcf-embed-checkout-form .woocommerce-checkout #payment{background:unset;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row{margin:0;padding:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row label.checkbox{display:block;margin-bottom:1.1em}.wcf-embed-checkout-form .woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:none;margin-right:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 .5em}.wcf-embed-checkout-form .woocommerce-checkout #payment fieldset .form-row .wcf-embed-checkout-form .woocommerce-checkout #payment fieldset p{margin-bottom:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{background-color:#eaeaea;font-family:inherit;font-weight:inherit;margin-bottom:.5em}.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;border-bottom-color:#eaeaea;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single{display:block;width:100%;min-height:34px;height:auto;padding:11px 12px;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered{color:#666;line-height:19px;min-height:19px;overflow:visible;padding-right:0}.select2-results__option[data-selected],.wcf-embed-checkout-form .select2-results__option[aria-selected]{font-size:14px}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.select2-dropdown{border:1px solid #d4d4d4}.wcf-embed-checkout-form .woocommerce #order_review .input-text,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row select,.wcf-embed-checkout-form .woocommerce form .form-row textarea{display:block;width:100%;min-height:34px;padding:11px 12px;font-family:inherit;font-weight:inherit;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:auto}.wcf-embed-checkout-form #order_review{padding:3px;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message{padding:0 2em 1.2em 2em;background-color:transparent;border:none;margin:0;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{list-style:none!important;margin:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message::before{top:0;right:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before{content:'\e016'}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{margin:0 8px 0 0}.wcf-embed-checkout-form .woocommerce #order_review .wcf-custom-coupon-field input[type=text]{font-weight:400}.wcf-embed-checkout-form .wcf-custom-coupon-field{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:15px;margin-top:25px;border-top:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;padding-top:25px;padding-bottom:25px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.wcf-embed-checkout-form #order_review .wcf-coupon-col-1{width:70%;display:inline-block;padding-left:20px}.wcf-embed-checkout-form #order_review .wcf-coupon-col-2{width:30%}.wcf-embed-checkout-form .select2-container--open,.wcf-embed-checkout-form input[type=email]:focus,.wcf-embed-checkout-form input[type=password]:focus,.wcf-embed-checkout-form input[type=tel]:focus,.wcf-embed-checkout-form input[type=text]:focus,.wcf-embed-checkout-form textarea:focus{border-color:#b3b3b3;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form button:focus{outline:0;outline-color:none;outline-style:none;outline-width:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,.wcf-embed-checkout-form form.checkout_coupon .button{display:block;clear:both;border:none;font-size:15px;font-family:inherit;font-weight:inherit;background-color:#f16334;line-height:9px;padding:18px;margin-bottom:10px;width:100%;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button{border:1px solid;border-color:#f16334;background-color:#f16334;font-family:inherit;font-weight:inherit;font-size:18px;letter-spacing:.5px;width:100%;padding:16px 24px;font-size:16px;line-height:1.5;-webkit-border-radius:3px;border-radius:3px;color:#fff;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small{padding:8px 6px;background-color:#c8c8c8;border:1px #c8c8c8 solid}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{border-color:#f16334;background-color:#f16334}.wcf-embed-checkout-form .woocommerce #payment #place_order:hover{background-color:#f16334;border-color:#f16334;color:#fff}.wcf-embed-checkout-form .woocommerce-checkout{display:inline-block;width:100%}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:inline-block;width:55%;float:right;padding-left:40px;margin:20px 0 0}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-billing-fields .woocommerce-billing-fields__field-wrapper,.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper{margin:0 -7px;-ms-flex-wrap:wrap;flex-wrap:wrap;-js-display:flex;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-additional-fields .woocommerce-additional-fields__field-wrapper{margin:0 -7px}.wcf-embed-checkout-form-two-column .woocommerce-checkout .wcf-order-wrap{display:inline-block;float:none;width:45%;border:none;background-color:inherit;padding:0 10px;-webkit-border-radius:3px;border-radius:3px}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{display:inline-block;font-family:inherit;font-weight:600;width:100%;margin:20px 0 0;padding:3px 3px 20px;border:none;border-bottom:none}.wcf-embed-checkout-form .woocommerce-checkout #payment{background-color:inherit;border:none;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{padding:1em 0}.wcf-embed-checkout-form #add_payment_method #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-cart #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{border:none}.wcf-embed-checkout-form .woocommerce form .form-row{display:block;margin-bottom:1.1em;padding:3px 7px;position:relative}.wcf-embed-checkout-form table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:right}.wcf-embed-checkout-form table.shop_table td strong.product-quantity{font-weight:400}.wcf-embed-checkout-form table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.wcf-embed-checkout-form table.shop_table #shipping_method .amount{font-weight:400}.wcf-embed-checkout-form table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.wcf-embed-checkout-form table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.wcf-embed-checkout-form table.shop_table td,.wcf-embed-checkout-form table.shop_table td dl dd,.wcf-embed-checkout-form table.shop_table td dl dt,.wcf-embed-checkout-form table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.wcf-embed-checkout-form table.shop_table td dl dd p{margin-top:0}.wcf-embed-checkout-form table.shop_table tbody th,.wcf-embed-checkout-form table.shop_table tfoot td,.wcf-embed-checkout-form table.shop_table tfoot th{border:none;font-weight:400;width:50%}.wcf-embed-checkout-form table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table th.product-name,.wcf-embed-checkout-form table.shop_table th.product-total{font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) td,.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total td,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total th,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(1){width:70%}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(2){width:30%}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label,.wcf-embed-checkout-form .woocommerce-checkout .form-row label{font-size:13px;line-height:1em;letter-spacing:.3px;font-family:inherit;font-weight:inherit;text-transform:capitalize;margin-bottom:8px}.wcf-embed-checkout-form .woocommerce .woocommerce-terms-and-conditions-wrapper .woocommerce-terms-and-conditions-checkbox-text{line-height:20px;text-transform:initial}.wcf-embed-checkout-form #payment .woocommerce-privacy-policy-text p{font-family:inherit;font-weight:inherit;font-size:11px;color:#777;margin-top:0;text-align:justify}.wcf-embed-checkout-form #payment .wc_payment_methods .payment_box p{margin:0}.wcf-embed-checkout-form .woocommerce a{color:#f16334;text-decoration:none}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-info,.wcf-embed-checkout-form .woocommerce .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{padding:1em 2em .4em 2em;border-top:none;background-color:inherit;font-size:14px;font-weight:500;margin:0}.wcf-embed-checkout-form .woocommerce-info::before,.wcf-embed-checkout-form .woocommerce-message::before{right:.1em;color:#f16334}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-error{background-color:#fff6f6;border:dashed 1px #a00;padding:25px 25px 20px;color:#a00;margin:1rem 0 1rem;font-size:14px;width:100%}.wcf-embed-checkout-form .woocommerce .woocommerce-error::before{content:''}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before{display:inline}.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{margin:1em 0 1em}.wcf-embed-checkout-form .woocommerce .woocommerce-error li{list-style:disc inside!important;margin:0 0 8px}.wcf-embed-checkout-form .woocommerce .woocommerce-error li strong{font-weight:400}.wcf-embed-checkout-form .woocommerce form.checkout_coupon{border:1px solid #d3ced2;padding:30px 20px 20px;margin:2em 0;text-align:right;-webkit-border-radius:5px;border-radius:5px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-size:14px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-family:inherit;font-weight:500;margin-top:0;margin-bottom:10px}@media only screen and (max-width:768px){.wcf-embed-checkout-form form .wcf-column-33{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review{width:100%}.wcf-embed-checkout-form .woocommerce-checkout .wcf-order-wrap{width:100%}.wcf-embed-checkout-form .woocommerce-checkout{display:block}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:block;width:100%;padding-left:0;margin:20px 0 0}.wcf-embed-checkout-form form.checkout_coupon .button{font-size:12px}.wcf-bump-order-field-wrap .wcf-bump-order-label{font-size:16px;text-transform:capitalize}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce .wcf-order-wrap,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .wcf-order-wrap{padding:15px 18px}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:100%}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-size:1em}}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_social_icon a.icon:before,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,.woocommerce #content input.button.alt:after,.woocommerce #content input.button:after,.woocommerce #respond input#submit.alt:after,.woocommerce #respond input#submit:after,.woocommerce a.button.alt:after,.woocommerce button.button.alt:after,.woocommerce button.button:after,.woocommerce button.single_add_to_cart_button.button:after,.woocommerce input.button.alt:after,.woocommerce input.button:after,.woocommerce-page #content input.button.alt:after,.woocommerce-page #content input.button:after,.woocommerce-page #respond input#submit.alt:after,.woocommerce-page #respond input#submit:after,.woocommerce-page a.button.alt:after,.woocommerce-page a.button:after,.woocommerce-page button.button.alt:after,.woocommerce-page button.button:after,.woocommerce-page input.button.alt:after,.woocommerce-page input.button:after,a.et_pb_more_button:after{text-shadow:0 0;font-family:none;font-weight:400;font-style:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-transform:none;speak:none}.comment-reply-link:hover:after,.woocommerce #content input.button.alt:hover:after,.woocommerce #content input.button:hover:after,.woocommerce #respond input#submit.alt:hover:after,.woocommerce #respond input#submit:hover:after,.woocommerce a.button.alt:hover:after,.woocommerce a.button:hover:after,.woocommerce button.button.alt:hover:after,.woocommerce button.button:hover:after,.woocommerce input.button.alt:hover:after,.woocommerce input.button:hover:after,.woocommerce-page #content input.button.alt:hover:after,.woocommerce-page #content input.button:hover:after,.woocommerce-page #respond input#submit.alt:hover:after,.woocommerce-page #respond input#submit:hover:after,.woocommerce-page a.button.alt:hover:after,.woocommerce-page a.button:hover:after,.woocommerce-page button.button.alt:hover:after,.woocommerce-page button.button:hover:after,.woocommerce-page input.button.alt:hover:after,.woocommerce-page input.button:hover:after{opacity:0}.thrv_wrapper .wcf-embed-checkout-form div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
1
+ .cartflows-container .wcf-embed-checkout-form,.cartflows-container .wcf-embed-checkout-form *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wcf-embed-checkout-form .wc-backward{display:none!important}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:50%;display:block}.wcf-embed-checkout-form .woocommerce form .form-row-full,.wcf-embed-checkout-form .woocommerce-page form .form-row-full{width:100%;clear:both}.wcf-embed-checkout-form form .form-row-wide{width:100%}.wcf-embed-checkout-form form .wcf-column-33{width:33.33%}.wcf-embed-checkout-form .woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:right;clear:right}.wcf-embed-checkout-form .woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:left;clear:left}.wcf-embed-checkout-form .woocommerce form .form-row .required{color:red;font-weight:700;border:0!important;text-decoration:none}.wcf-embed-checkout-form form .form-row-first.form-row-one{clear:both}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login{display:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row{margin-bottom:15px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .clear{clear:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label{margin:0;line-height:1em;padding-top:0;position:relative;top:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .login-form-actions{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .remember_me{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-ms-flex:1;flex:1;font-family:inherit;font-size:13px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me label{margin-bottom:0;vertical-align:text-top}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me input,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me span{vertical-align:middle}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password{text-align:left;margin-top:0;margin-bottom:0}.wcf-embed-checkout-form .woocommerce .blockUI.blockOverlay{font-size:15px}.mt20{margin-top:20px!important}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid select{border-width:1px;border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated select{border-width:1px}.wcf-embed-checkout-form .select2-container--default.field-required .select2-selection--single,.wcf-embed-checkout-form .woocommerce #order_review .input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row textarea.input-text.field-required{border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row input.field-validated{border-right-width:2px;border-right-color:#69bf29}.wcf-embed-checkout-form .wcf-checkout-header-image{text-align:center}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{content:"\e600";margin:0;color:#f16334}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox],.wcf-embed-checkout-form .woocommerce #payment input[type=radio],.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox],.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:focus{border-color:#f16334;-webkit-box-shadow:0 0 2px rgba(241,99,52,.8);box-shadow:0 0 2px rgba(241,99,52,.8)}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{background-color:#f16334;-webkit-border-radius:50px;border-radius:50px;content:"\2022";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{display:inline-block;float:right;font:normal 15px/1 cartflows-icon;speak:none;vertical-align:middle;width:6px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li input[type=checkbox]{min-width:16px}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2{float:none;width:100%;max-width:100%;padding:0;-webkit-border-radius:0;border-radius:0;border:none;border-color:none;margin-bottom:0}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-family:inherit;font-weight:600;font-size:20px;text-transform:capitalize;margin:0 0 25px 0;padding:3px}.wcf-embed-checkout-form .woocommerce-checkout #payment{background:unset;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row{margin:0;padding:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row label.checkbox{display:block;margin-bottom:1.1em}.wcf-embed-checkout-form .woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:none;margin-right:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 .5em}.wcf-embed-checkout-form .woocommerce-checkout #payment fieldset .form-row .wcf-embed-checkout-form .woocommerce-checkout #payment fieldset p{margin-bottom:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{background-color:#eaeaea;font-family:inherit;font-weight:inherit;margin-bottom:.5em}.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;border-bottom-color:#eaeaea;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single{display:block;width:100%;min-height:34px;height:auto;padding:11px 12px;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered{color:#666;line-height:19px;min-height:19px;overflow:visible;padding-right:0}.select2-results__option[data-selected],.wcf-embed-checkout-form .select2-results__option[aria-selected]{font-size:14px}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.select2-dropdown{border:1px solid #d4d4d4}.wcf-embed-checkout-form .woocommerce #order_review .input-text,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row select,.wcf-embed-checkout-form .woocommerce form .form-row textarea{display:block;width:100%;min-height:34px;padding:11px 12px;font-family:inherit;font-weight:inherit;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:auto}.wcf-embed-checkout-form #order_review{padding:3px;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message{padding:0 2em 1.2em 2em;background-color:transparent;border:none;margin:0;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{list-style:none!important;margin:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message::before{top:0;right:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before{content:'\e016'}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{margin:0 8px 0 0}.wcf-embed-checkout-form .woocommerce #order_review .wcf-custom-coupon-field input[type=text]{font-weight:400}.wcf-embed-checkout-form .wcf-custom-coupon-field{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:15px;margin-top:25px;border-top:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;padding-top:25px;padding-bottom:25px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.wcf-embed-checkout-form #order_review .wcf-coupon-col-1{width:70%;display:inline-block;padding-left:20px}.wcf-embed-checkout-form #order_review .wcf-coupon-col-2{width:30%}.wcf-embed-checkout-form .select2-container--open,.wcf-embed-checkout-form input[type=email]:focus,.wcf-embed-checkout-form input[type=password]:focus,.wcf-embed-checkout-form input[type=tel]:focus,.wcf-embed-checkout-form input[type=text]:focus,.wcf-embed-checkout-form textarea:focus{border-color:#b3b3b3;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form button:focus{outline:0;outline-color:none;outline-style:none;outline-width:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,.wcf-embed-checkout-form form.checkout_coupon .button{display:block;clear:both;border:none;font-size:15px;font-family:inherit;font-weight:inherit;background-color:#f16334;line-height:9px;padding:18px;margin-bottom:10px;width:100%;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button{border:1px solid;border-color:#f16334;background-color:#f16334;font-family:inherit;font-weight:inherit;font-size:18px;letter-spacing:.5px;width:100%;padding:16px 24px;font-size:16px;line-height:1.5;-webkit-border-radius:3px;border-radius:3px;color:#fff;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small{padding:8px 6px;background-color:#c8c8c8;border:1px #c8c8c8 solid}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{border-color:#f16334;background-color:#f16334}.wcf-embed-checkout-form .woocommerce #payment #place_order:hover{background-color:#f16334;border-color:#f16334;color:#fff}.wcf-embed-checkout-form .woocommerce-checkout{display:inline-block;width:100%}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:inline-block;width:55%;float:right;padding-left:40px;margin:20px 0 0}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-billing-fields .woocommerce-billing-fields__field-wrapper,.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper{margin:0 -7px;-ms-flex-wrap:wrap;flex-wrap:wrap;-js-display:flex;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-additional-fields .woocommerce-additional-fields__field-wrapper{margin:0 -7px}.wcf-embed-checkout-form-two-column .woocommerce-checkout .wcf-order-wrap{display:inline-block;float:none;width:45%;border:none;background-color:inherit;padding:0 10px;-webkit-border-radius:3px;border-radius:3px}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{display:inline-block;font-family:inherit;font-weight:600;width:100%;margin:20px 0 0;padding:3px 3px 20px;border:none;border-bottom:none}.wcf-embed-checkout-form .woocommerce-checkout #payment{background-color:inherit;border:none;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{padding:1em 0}.wcf-embed-checkout-form #add_payment_method #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-cart #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{border:none}.wcf-embed-checkout-form .woocommerce form .form-row{display:block;margin-bottom:1.1em;padding:3px 7px;position:relative}.wcf-embed-checkout-form .woocommerce form .woocommerce-account-fields .form-row{padding:0}.wcf-embed-checkout-form table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:right}.wcf-embed-checkout-form table.shop_table td strong.product-quantity{font-weight:400}.wcf-embed-checkout-form table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.wcf-embed-checkout-form table.shop_table #shipping_method .amount{font-weight:400}.wcf-embed-checkout-form table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.wcf-embed-checkout-form table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.wcf-embed-checkout-form table.shop_table td,.wcf-embed-checkout-form table.shop_table td dl dd,.wcf-embed-checkout-form table.shop_table td dl dt,.wcf-embed-checkout-form table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.wcf-embed-checkout-form table.shop_table td dl dd p{margin-top:0}.wcf-embed-checkout-form table.shop_table tbody th,.wcf-embed-checkout-form table.shop_table tfoot td,.wcf-embed-checkout-form table.shop_table tfoot th{border:none;font-weight:400;width:50%}.wcf-embed-checkout-form table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table th.product-name,.wcf-embed-checkout-form table.shop_table th.product-total{font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) td,.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total td,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total th,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(1){width:70%}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(2){width:30%}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label,.wcf-embed-checkout-form .woocommerce-checkout .form-row label{font-size:13px;line-height:1em;letter-spacing:.3px;font-family:inherit;font-weight:inherit;text-transform:capitalize;margin-bottom:8px}.wcf-embed-checkout-form .woocommerce .woocommerce-terms-and-conditions-wrapper .woocommerce-terms-and-conditions-checkbox-text{line-height:20px;text-transform:initial}.wcf-embed-checkout-form #payment .woocommerce-privacy-policy-text p{font-family:inherit;font-weight:inherit;font-size:11px;color:#777;margin-top:0;text-align:justify}.wcf-embed-checkout-form #payment .wc_payment_methods .payment_box p{margin:0}.wcf-embed-checkout-form .woocommerce a{color:#f16334;text-decoration:none}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-info,.wcf-embed-checkout-form .woocommerce .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{padding:1em 2em .4em 2em;border-top:none;background-color:inherit;font-size:14px;font-weight:500;margin:0}.wcf-embed-checkout-form .woocommerce-info::before,.wcf-embed-checkout-form .woocommerce-message::before{right:.1em;color:#f16334}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-error{background-color:#fff6f6;border:dashed 1px #a00;padding:25px 25px 20px;color:#a00;margin:1rem 0 1rem;font-size:14px;width:100%}.wcf-embed-checkout-form .woocommerce .woocommerce-error::before{content:''}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before{display:inline}.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{margin:1em 0 1em}.wcf-embed-checkout-form .woocommerce .woocommerce-error li{list-style:disc inside!important;margin:0 0 8px}.wcf-embed-checkout-form .woocommerce .woocommerce-error li strong{font-weight:400}.wcf-embed-checkout-form .woocommerce form.checkout_coupon{border:1px solid #d3ced2;padding:30px 20px 20px;margin:2em 0;text-align:right;-webkit-border-radius:5px;border-radius:5px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-size:14px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-family:inherit;font-weight:500;margin-top:0;margin-bottom:10px}@media only screen and (max-width:768px){.wcf-embed-checkout-form form .wcf-column-33{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review{width:100%}.wcf-embed-checkout-form .woocommerce-checkout .wcf-order-wrap{width:100%}.wcf-embed-checkout-form .woocommerce-checkout{display:block}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:block;width:100%;padding-left:0;margin:20px 0 0}.wcf-embed-checkout-form form.checkout_coupon .button{font-size:12px}.wcf-bump-order-field-wrap .wcf-bump-order-label{font-size:16px;text-transform:capitalize}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce .wcf-order-wrap,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .wcf-order-wrap{padding:15px 18px}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:100%}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-size:1em}}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_social_icon a.icon:before,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,.woocommerce #content input.button.alt:after,.woocommerce #content input.button:after,.woocommerce #respond input#submit.alt:after,.woocommerce #respond input#submit:after,.woocommerce a.button.alt:after,.woocommerce button.button.alt:after,.woocommerce button.button:after,.woocommerce button.single_add_to_cart_button.button:after,.woocommerce input.button.alt:after,.woocommerce input.button:after,.woocommerce-page #content input.button.alt:after,.woocommerce-page #content input.button:after,.woocommerce-page #respond input#submit.alt:after,.woocommerce-page #respond input#submit:after,.woocommerce-page a.button.alt:after,.woocommerce-page a.button:after,.woocommerce-page button.button.alt:after,.woocommerce-page button.button:after,.woocommerce-page input.button.alt:after,.woocommerce-page input.button:after,a.et_pb_more_button:after{text-shadow:0 0;font-family:none;font-weight:400;font-style:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-transform:none;speak:none}.comment-reply-link:hover:after,.woocommerce #content input.button.alt:hover:after,.woocommerce #content input.button:hover:after,.woocommerce #respond input#submit.alt:hover:after,.woocommerce #respond input#submit:hover:after,.woocommerce a.button.alt:hover:after,.woocommerce a.button:hover:after,.woocommerce button.button.alt:hover:after,.woocommerce button.button:hover:after,.woocommerce input.button.alt:hover:after,.woocommerce input.button:hover:after,.woocommerce-page #content input.button.alt:hover:after,.woocommerce-page #content input.button:hover:after,.woocommerce-page #respond input#submit.alt:hover:after,.woocommerce-page #respond input#submit:hover:after,.woocommerce-page a.button.alt:hover:after,.woocommerce-page a.button:hover:after,.woocommerce-page button.button.alt:hover:after,.woocommerce-page button.button:hover:after,.woocommerce-page input.button.alt:hover:after,.woocommerce-page input.button:hover:after{opacity:0}.thrv_wrapper .wcf-embed-checkout-form div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
assets/min-css/checkout-template.min.css CHANGED
@@ -1 +1 @@
1
- .cartflows-container .wcf-embed-checkout-form,.cartflows-container .wcf-embed-checkout-form *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wcf-embed-checkout-form .wc-backward{display:none!important}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:50%;display:block}.wcf-embed-checkout-form .woocommerce form .form-row-full,.wcf-embed-checkout-form .woocommerce-page form .form-row-full{width:100%;clear:both}.wcf-embed-checkout-form form .form-row-wide{width:100%}.wcf-embed-checkout-form form .wcf-column-33{width:33.33%}.wcf-embed-checkout-form .woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:left;clear:left}.wcf-embed-checkout-form .woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right;clear:right}.wcf-embed-checkout-form .woocommerce form .form-row .required{color:red;font-weight:700;border:0!important;text-decoration:none}.wcf-embed-checkout-form form .form-row-first.form-row-one{clear:both}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login{display:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row{margin-bottom:15px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .clear{clear:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label{margin:0;line-height:1em;padding-top:0;position:relative;top:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .login-form-actions{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .remember_me{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-ms-flex:1;flex:1;font-family:inherit;font-size:13px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me label{margin-bottom:0;vertical-align:text-top}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me input,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me span{vertical-align:middle}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password{text-align:right;margin-top:0;margin-bottom:0}.wcf-embed-checkout-form .woocommerce .blockUI.blockOverlay{font-size:15px}.mt20{margin-top:20px!important}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid select{border-width:1px;border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated select{border-width:1px}.wcf-embed-checkout-form .select2-container--default.field-required .select2-selection--single,.wcf-embed-checkout-form .woocommerce #order_review .input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row textarea.input-text.field-required{border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row input.field-validated{border-left-width:2px;border-left-color:#69bf29}.wcf-embed-checkout-form .wcf-checkout-header-image{text-align:center}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{content:"\e600";margin:0;color:#f16334}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox],.wcf-embed-checkout-form .woocommerce #payment input[type=radio],.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox],.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:focus{border-color:#f16334;-webkit-box-shadow:0 0 2px rgba(241,99,52,.8);box-shadow:0 0 2px rgba(241,99,52,.8)}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{background-color:#f16334;-webkit-border-radius:50px;border-radius:50px;content:"\2022";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{display:inline-block;float:left;font:normal 15px/1 cartflows-icon;speak:none;vertical-align:middle;width:6px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li input[type=checkbox]{min-width:16px}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2{float:none;width:100%;max-width:100%;padding:0;-webkit-border-radius:0;border-radius:0;border:none;border-color:none;margin-bottom:0}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-family:inherit;font-weight:600;font-size:20px;text-transform:capitalize;margin:0 0 25px 0;padding:3px}.wcf-embed-checkout-form .woocommerce-checkout #payment{background:unset;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row{margin:0;padding:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row label.checkbox{display:block;margin-bottom:1.1em}.wcf-embed-checkout-form .woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:none;margin-left:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 .5em}.wcf-embed-checkout-form .woocommerce-checkout #payment fieldset .form-row .wcf-embed-checkout-form .woocommerce-checkout #payment fieldset p{margin-bottom:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{background-color:#eaeaea;font-family:inherit;font-weight:inherit;margin-bottom:.5em}.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;border-bottom-color:#eaeaea;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}.wcf-embed-checkout-form .select2-container--default .select2-selection--single{display:block;width:100%;min-height:34px;height:auto;padding:11px 12px;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered{color:#666;line-height:19px;min-height:19px;overflow:visible;padding-left:0}.select2-results__option[data-selected],.wcf-embed-checkout-form .select2-results__option[aria-selected]{font-size:14px}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.select2-dropdown{border:1px solid #d4d4d4}.wcf-embed-checkout-form .woocommerce #order_review .input-text,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row select,.wcf-embed-checkout-form .woocommerce form .form-row textarea{display:block;width:100%;min-height:34px;padding:11px 12px;font-family:inherit;font-weight:inherit;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:auto}.wcf-embed-checkout-form #order_review{padding:3px;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message{padding:0 2em 1.2em 2em;background-color:transparent;border:none;margin:0;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{list-style:none!important;margin:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message::before{top:0;left:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before{content:'\e016'}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{margin:0 0 0 8px}.wcf-embed-checkout-form .woocommerce #order_review .wcf-custom-coupon-field input[type=text]{font-weight:400}.wcf-embed-checkout-form .wcf-custom-coupon-field{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:15px;margin-top:25px;border-top:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;padding-top:25px;padding-bottom:25px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.wcf-embed-checkout-form #order_review .wcf-coupon-col-1{width:70%;display:inline-block;padding-right:20px}.wcf-embed-checkout-form #order_review .wcf-coupon-col-2{width:30%}.wcf-embed-checkout-form .select2-container--open,.wcf-embed-checkout-form input[type=email]:focus,.wcf-embed-checkout-form input[type=password]:focus,.wcf-embed-checkout-form input[type=tel]:focus,.wcf-embed-checkout-form input[type=text]:focus,.wcf-embed-checkout-form textarea:focus{border-color:#b3b3b3;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form button:focus{outline:0;outline-color:none;outline-style:none;outline-width:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,.wcf-embed-checkout-form form.checkout_coupon .button{display:block;clear:both;border:none;font-size:15px;font-family:inherit;font-weight:inherit;background-color:#f16334;line-height:9px;padding:18px;margin-bottom:10px;width:100%;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button{border:1px solid;border-color:#f16334;background-color:#f16334;font-family:inherit;font-weight:inherit;font-size:18px;letter-spacing:.5px;width:100%;padding:16px 24px;font-size:16px;line-height:1.5;-webkit-border-radius:3px;border-radius:3px;color:#fff;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small{padding:8px 6px;background-color:#c8c8c8;border:1px #c8c8c8 solid}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{border-color:#f16334;background-color:#f16334}.wcf-embed-checkout-form .woocommerce #payment #place_order:hover{background-color:#f16334;border-color:#f16334;color:#fff}.wcf-embed-checkout-form .woocommerce-checkout{display:inline-block;width:100%}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:inline-block;width:55%;float:left;padding-right:40px;margin:20px 0 0}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-billing-fields .woocommerce-billing-fields__field-wrapper,.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper{margin:0 -7px;-ms-flex-wrap:wrap;flex-wrap:wrap;-js-display:flex;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-additional-fields .woocommerce-additional-fields__field-wrapper{margin:0 -7px}.wcf-embed-checkout-form-two-column .woocommerce-checkout .wcf-order-wrap{display:inline-block;float:none;width:45%;border:none;background-color:inherit;padding:0 10px;-webkit-border-radius:3px;border-radius:3px}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{display:inline-block;font-family:inherit;font-weight:600;width:100%;margin:20px 0 0;padding:3px 3px 20px;border:none;border-bottom:none}.wcf-embed-checkout-form .woocommerce-checkout #payment{background-color:inherit;border:none;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{padding:1em 0}.wcf-embed-checkout-form #add_payment_method #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-cart #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{border:none}.wcf-embed-checkout-form .woocommerce form .form-row{display:block;margin-bottom:1.1em;padding:3px 7px;position:relative}.wcf-embed-checkout-form table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:left}.wcf-embed-checkout-form table.shop_table td strong.product-quantity{font-weight:400}.wcf-embed-checkout-form table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.wcf-embed-checkout-form table.shop_table #shipping_method .amount{font-weight:400}.wcf-embed-checkout-form table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.wcf-embed-checkout-form table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.wcf-embed-checkout-form table.shop_table td,.wcf-embed-checkout-form table.shop_table td dl dd,.wcf-embed-checkout-form table.shop_table td dl dt,.wcf-embed-checkout-form table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.wcf-embed-checkout-form table.shop_table td dl dd p{margin-top:0}.wcf-embed-checkout-form table.shop_table tbody th,.wcf-embed-checkout-form table.shop_table tfoot td,.wcf-embed-checkout-form table.shop_table tfoot th{border:none;font-weight:400;width:50%}.wcf-embed-checkout-form table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table th.product-name,.wcf-embed-checkout-form table.shop_table th.product-total{font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) td,.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total td,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total th,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(1){width:70%}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(2){width:30%}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label,.wcf-embed-checkout-form .woocommerce-checkout .form-row label{font-size:13px;line-height:1em;letter-spacing:.3px;font-family:inherit;font-weight:inherit;text-transform:capitalize;margin-bottom:8px}.wcf-embed-checkout-form .woocommerce .woocommerce-terms-and-conditions-wrapper .woocommerce-terms-and-conditions-checkbox-text{line-height:20px;text-transform:initial}.wcf-embed-checkout-form #payment .woocommerce-privacy-policy-text p{font-family:inherit;font-weight:inherit;font-size:11px;color:#777;margin-top:0;text-align:justify}.wcf-embed-checkout-form #payment .wc_payment_methods .payment_box p{margin:0}.wcf-embed-checkout-form .woocommerce a{color:#f16334;text-decoration:none}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-info,.wcf-embed-checkout-form .woocommerce .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{padding:1em 2em .4em 2em;border-top:none;background-color:inherit;font-size:14px;font-weight:500;margin:0}.wcf-embed-checkout-form .woocommerce-info::before,.wcf-embed-checkout-form .woocommerce-message::before{left:.1em;color:#f16334}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-error{background-color:#fff6f6;border:dashed 1px #a00;padding:25px 25px 20px;color:#a00;margin:1rem 0 1rem;font-size:14px;width:100%}.wcf-embed-checkout-form .woocommerce .woocommerce-error::before{content:''}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before{display:inline}.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{margin:1em 0 1em}.wcf-embed-checkout-form .woocommerce .woocommerce-error li{list-style:disc inside!important;margin:0 0 8px}.wcf-embed-checkout-form .woocommerce .woocommerce-error li strong{font-weight:400}.wcf-embed-checkout-form .woocommerce form.checkout_coupon{border:1px solid #d3ced2;padding:30px 20px 20px;margin:2em 0;text-align:left;-webkit-border-radius:5px;border-radius:5px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-size:14px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-family:inherit;font-weight:500;margin-top:0;margin-bottom:10px}@media only screen and (max-width:768px){.wcf-embed-checkout-form form .wcf-column-33{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review{width:100%}.wcf-embed-checkout-form .woocommerce-checkout .wcf-order-wrap{width:100%}.wcf-embed-checkout-form .woocommerce-checkout{display:block}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:block;width:100%;padding-right:0;margin:20px 0 0}.wcf-embed-checkout-form form.checkout_coupon .button{font-size:12px}.wcf-bump-order-field-wrap .wcf-bump-order-label{font-size:16px;text-transform:capitalize}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce .wcf-order-wrap,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .wcf-order-wrap{padding:15px 18px}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:100%}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-size:1em}}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_social_icon a.icon:before,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,.woocommerce #content input.button.alt:after,.woocommerce #content input.button:after,.woocommerce #respond input#submit.alt:after,.woocommerce #respond input#submit:after,.woocommerce a.button.alt:after,.woocommerce button.button.alt:after,.woocommerce button.button:after,.woocommerce button.single_add_to_cart_button.button:after,.woocommerce input.button.alt:after,.woocommerce input.button:after,.woocommerce-page #content input.button.alt:after,.woocommerce-page #content input.button:after,.woocommerce-page #respond input#submit.alt:after,.woocommerce-page #respond input#submit:after,.woocommerce-page a.button.alt:after,.woocommerce-page a.button:after,.woocommerce-page button.button.alt:after,.woocommerce-page button.button:after,.woocommerce-page input.button.alt:after,.woocommerce-page input.button:after,a.et_pb_more_button:after{text-shadow:0 0;font-family:none;font-weight:400;font-style:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-transform:none;speak:none}.comment-reply-link:hover:after,.woocommerce #content input.button.alt:hover:after,.woocommerce #content input.button:hover:after,.woocommerce #respond input#submit.alt:hover:after,.woocommerce #respond input#submit:hover:after,.woocommerce a.button.alt:hover:after,.woocommerce a.button:hover:after,.woocommerce button.button.alt:hover:after,.woocommerce button.button:hover:after,.woocommerce input.button.alt:hover:after,.woocommerce input.button:hover:after,.woocommerce-page #content input.button.alt:hover:after,.woocommerce-page #content input.button:hover:after,.woocommerce-page #respond input#submit.alt:hover:after,.woocommerce-page #respond input#submit:hover:after,.woocommerce-page a.button.alt:hover:after,.woocommerce-page a.button:hover:after,.woocommerce-page button.button.alt:hover:after,.woocommerce-page button.button:hover:after,.woocommerce-page input.button.alt:hover:after,.woocommerce-page input.button:hover:after{opacity:0}.thrv_wrapper .wcf-embed-checkout-form div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
1
+ .cartflows-container .wcf-embed-checkout-form,.cartflows-container .wcf-embed-checkout-form *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wcf-embed-checkout-form .wc-backward{display:none!important}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:50%;display:block}.wcf-embed-checkout-form .woocommerce form .form-row-full,.wcf-embed-checkout-form .woocommerce-page form .form-row-full{width:100%;clear:both}.wcf-embed-checkout-form form .form-row-wide{width:100%}.wcf-embed-checkout-form form .wcf-column-33{width:33.33%}.wcf-embed-checkout-form .woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:left;clear:left}.wcf-embed-checkout-form .woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right;clear:right}.wcf-embed-checkout-form .woocommerce form .form-row .required{color:red;font-weight:700;border:0!important;text-decoration:none}.wcf-embed-checkout-form form .form-row-first.form-row-one{clear:both}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login{display:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row{margin-bottom:15px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .clear{clear:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label{margin:0;line-height:1em;padding-top:0;position:relative;top:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .login-form-actions{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:0}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .remember_me{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-ms-flex:1;flex:1;font-family:inherit;font-size:13px}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me label{margin-bottom:0;vertical-align:text-top}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me input,.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row .remember_me span{vertical-align:middle}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .lost_password{text-align:right;margin-top:0;margin-bottom:0}.wcf-embed-checkout-form .woocommerce .blockUI.blockOverlay{font-size:15px}.mt20{margin-top:20px!important}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-invalid select{border-width:1px;border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated .select2-container,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row.woocommerce-validated select{border-width:1px}.wcf-embed-checkout-form .select2-container--default.field-required .select2-selection--single,.wcf-embed-checkout-form .woocommerce #order_review .input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text.field-required,.wcf-embed-checkout-form .woocommerce form .form-row textarea.input-text.field-required{border-color:#e2401c}.wcf-embed-checkout-form .woocommerce form .form-row input.field-validated{border-left-width:2px;border-left-color:#69bf29}.wcf-embed-checkout-form .wcf-checkout-header-image{text-align:center}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{content:"\e600";margin:0;color:#f16334}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox],.wcf-embed-checkout-form .woocommerce #payment input[type=radio],.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox],.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:focus,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:focus{border-color:#f16334;-webkit-box-shadow:0 0 2px rgba(241,99,52,.8);box-shadow:0 0 2px rgba(241,99,52,.8)}.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{background-color:#f16334;-webkit-border-radius:50px;border-radius:50px;content:"\2022";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-billing-fields [type=checkbox]:checked:before,.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type=checkbox]:checked:before{display:inline-block;float:left;font:normal 15px/1 cartflows-icon;speak:none;vertical-align:middle;width:6px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li input[type=checkbox]{min-width:16px}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2{float:none;width:100%;max-width:100%;padding:0;-webkit-border-radius:0;border-radius:0;border:none;border-color:none;margin-bottom:0}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-family:inherit;font-weight:600;font-size:20px;text-transform:capitalize;margin:0 0 25px 0;padding:3px}.wcf-embed-checkout-form .woocommerce-checkout #payment{background:unset;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row{margin:0;padding:0}.wcf-embed-checkout-form .woocommerce-checkout #payment .form-row label.checkbox{display:block;margin-bottom:1.1em}.wcf-embed-checkout-form .woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:none;margin-left:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 .5em}.wcf-embed-checkout-form .woocommerce-checkout #payment fieldset .form-row .wcf-embed-checkout-form .woocommerce-checkout #payment fieldset p{margin-bottom:10px}.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{background-color:#eaeaea;font-family:inherit;font-weight:inherit;margin-bottom:.5em}.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;border-bottom-color:#eaeaea;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}.wcf-embed-checkout-form .select2-container--default .select2-selection--single{display:block;width:100%;min-height:34px;height:auto;padding:11px 12px;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered{color:#666;line-height:19px;min-height:19px;overflow:visible;padding-left:0}.select2-results__option[data-selected],.wcf-embed-checkout-form .select2-results__option[aria-selected]{font-size:14px}.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.select2-dropdown{border:1px solid #d4d4d4}.wcf-embed-checkout-form .woocommerce #order_review .input-text,.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,.wcf-embed-checkout-form .woocommerce form .form-row select,.wcf-embed-checkout-form .woocommerce form .form-row textarea{display:block;width:100%;min-height:34px;padding:11px 12px;font-family:inherit;font-weight:inherit;font-size:14px;line-height:1.42857143!important;color:#555;background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:auto}.wcf-embed-checkout-form #order_review{padding:3px;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message{padding:0 2em 1.2em 2em;background-color:transparent;border:none;margin:0;width:100%}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{list-style:none!important;margin:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before,.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-message::before{top:0;left:0}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error::before{content:'\e016'}.wcf-embed-checkout-form .woocommerce .wcf-custom-coupon-field .woocommerce-error li{margin:0 0 0 8px}.wcf-embed-checkout-form .woocommerce #order_review .wcf-custom-coupon-field input[type=text]{font-weight:400}.wcf-embed-checkout-form .wcf-custom-coupon-field{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;margin-bottom:15px;margin-top:25px;border-top:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;padding-top:25px;padding-bottom:25px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.wcf-embed-checkout-form #order_review .wcf-coupon-col-1{width:70%;display:inline-block;padding-right:20px}.wcf-embed-checkout-form #order_review .wcf-coupon-col-2{width:30%}.wcf-embed-checkout-form .select2-container--open,.wcf-embed-checkout-form input[type=email]:focus,.wcf-embed-checkout-form input[type=password]:focus,.wcf-embed-checkout-form input[type=tel]:focus,.wcf-embed-checkout-form input[type=text]:focus,.wcf-embed-checkout-form textarea:focus{border-color:#b3b3b3;-webkit-box-shadow:none;box-shadow:none;outline:0}.wcf-embed-checkout-form button:focus{outline:0;outline-color:none;outline-style:none;outline-width:none}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,.wcf-embed-checkout-form form.checkout_coupon .button{display:block;clear:both;border:none;font-size:15px;font-family:inherit;font-weight:inherit;background-color:#f16334;line-height:9px;padding:18px;margin-bottom:10px;width:100%;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button{border:1px solid;border-color:#f16334;background-color:#f16334;font-family:inherit;font-weight:inherit;font-size:18px;letter-spacing:.5px;width:100%;padding:16px 24px;font-size:16px;line-height:1.5;-webkit-border-radius:3px;border-radius:3px;color:#fff;text-transform:uppercase}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small{padding:8px 6px;background-color:#c8c8c8;border:1px #c8c8c8 solid}.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{border-color:#f16334;background-color:#f16334}.wcf-embed-checkout-form .woocommerce #payment #place_order:hover{background-color:#f16334;border-color:#f16334;color:#fff}.wcf-embed-checkout-form .woocommerce-checkout{display:inline-block;width:100%}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:inline-block;width:55%;float:left;padding-right:40px;margin:20px 0 0}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-billing-fields .woocommerce-billing-fields__field-wrapper,.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper{margin:0 -7px;-ms-flex-wrap:wrap;flex-wrap:wrap;-js-display:flex;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap}.wcf-embed-checkout-form .woocommerce-checkout .col2-set .woocommerce-additional-fields .woocommerce-additional-fields__field-wrapper{margin:0 -7px}.wcf-embed-checkout-form-two-column .woocommerce-checkout .wcf-order-wrap{display:inline-block;float:none;width:45%;border:none;background-color:inherit;padding:0 10px;-webkit-border-radius:3px;border-radius:3px}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{display:inline-block;font-family:inherit;font-weight:600;width:100%;margin:20px 0 0;padding:3px 3px 20px;border:none;border-bottom:none}.wcf-embed-checkout-form .woocommerce-checkout #payment{background-color:inherit;border:none;-webkit-border-radius:0;border-radius:0}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{padding:1em 0}.wcf-embed-checkout-form #add_payment_method #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-cart #payment ul.payment_methods,.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods{border:none}.wcf-embed-checkout-form .woocommerce form .form-row{display:block;margin-bottom:1.1em;padding:3px 7px;position:relative}.wcf-embed-checkout-form .woocommerce form .woocommerce-account-fields .form-row{padding:0}.wcf-embed-checkout-form table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:left}.wcf-embed-checkout-form table.shop_table td strong.product-quantity{font-weight:400}.wcf-embed-checkout-form table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.wcf-embed-checkout-form table.shop_table #shipping_method .amount{font-weight:400}.wcf-embed-checkout-form table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.wcf-embed-checkout-form table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.wcf-embed-checkout-form table.shop_table td,.wcf-embed-checkout-form table.shop_table td dl dd,.wcf-embed-checkout-form table.shop_table td dl dt,.wcf-embed-checkout-form table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.wcf-embed-checkout-form table.shop_table td dl dd p{margin-top:0}.wcf-embed-checkout-form table.shop_table tbody th,.wcf-embed-checkout-form table.shop_table tfoot td,.wcf-embed-checkout-form table.shop_table tfoot th{border:none;font-weight:400;width:50%}.wcf-embed-checkout-form table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table th.product-name,.wcf-embed-checkout-form table.shop_table th.product-total{font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) td,.wcf-embed-checkout-form table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total td,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-total th,.wcf-embed-checkout-form table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(1),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(1){width:70%}.wcf-embed-checkout-form table.shop_table tbody tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table tfoot tr td:nth-child(2),.wcf-embed-checkout-form table.shop_table thead tr th:nth-child(2){width:30%}.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row label,.wcf-embed-checkout-form .woocommerce-checkout .form-row label{font-size:13px;line-height:1em;letter-spacing:.3px;font-family:inherit;font-weight:inherit;text-transform:capitalize;margin-bottom:8px}.wcf-embed-checkout-form .woocommerce .woocommerce-terms-and-conditions-wrapper .woocommerce-terms-and-conditions-checkbox-text{line-height:20px;text-transform:initial}.wcf-embed-checkout-form #payment .woocommerce-privacy-policy-text p{font-family:inherit;font-weight:inherit;font-size:11px;color:#777;margin-top:0;text-align:justify}.wcf-embed-checkout-form #payment .wc_payment_methods .payment_box p{margin:0}.wcf-embed-checkout-form .woocommerce a{color:#f16334;text-decoration:none}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-info,.wcf-embed-checkout-form .woocommerce .woocommerce-message,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{padding:1em 2em .4em 2em;border-top:none;background-color:inherit;font-size:14px;font-weight:500;margin:0}.wcf-embed-checkout-form .woocommerce-info::before,.wcf-embed-checkout-form .woocommerce-message::before{left:.1em;color:#f16334}.wcf-embed-checkout-form .woocommerce .woocommerce-NoticeGroup .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-error,.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-error{background-color:#fff6f6;border:dashed 1px #a00;padding:25px 25px 20px;color:#a00;margin:1rem 0 1rem;font-size:14px;width:100%}.wcf-embed-checkout-form .woocommerce .woocommerce-error::before{content:''}.wcf-embed-checkout-form .woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before{display:inline}.wcf-embed-checkout-form .woocommerce .woocommerce-notices-wrapper .woocommerce-message{margin:1em 0 1em}.wcf-embed-checkout-form .woocommerce .woocommerce-error li{list-style:disc inside!important;margin:0 0 8px}.wcf-embed-checkout-form .woocommerce .woocommerce-error li strong{font-weight:400}.wcf-embed-checkout-form .woocommerce form.checkout_coupon{border:1px solid #d3ced2;padding:30px 20px 20px;margin:2em 0;text-align:left;-webkit-border-radius:5px;border-radius:5px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-size:14px}.wcf-embed-checkout-form .woocommerce .checkout_coupon p{font-family:inherit;font-weight:500;margin-top:0;margin-bottom:10px}@media only screen and (max-width:768px){.wcf-embed-checkout-form form .wcf-column-33{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{width:100%}.wcf-embed-checkout-form .woocommerce-checkout #order_review{width:100%}.wcf-embed-checkout-form .woocommerce-checkout .wcf-order-wrap{width:100%}.wcf-embed-checkout-form .woocommerce-checkout{display:block}.wcf-embed-checkout-form .woocommerce-checkout .col2-set{display:block;width:100%;padding-right:0;margin:20px 0 0}.wcf-embed-checkout-form form.checkout_coupon .button{font-size:12px}.wcf-bump-order-field-wrap .wcf-bump-order-label{font-size:16px;text-transform:capitalize}.wcf-embed-checkout-form .woocommerce .col2-set .col-1,.wcf-embed-checkout-form .woocommerce .col2-set .col-2,.wcf-embed-checkout-form .woocommerce .wcf-order-wrap,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-1,.wcf-embed-checkout-form .woocommerce-page .col2-set .col-2,.wcf-embed-checkout-form .woocommerce-page .wcf-order-wrap{padding:15px 18px}.wcf-embed-checkout-form .woocommerce form .form-row-first,.wcf-embed-checkout-form .woocommerce form .form-row-last,.wcf-embed-checkout-form .woocommerce-page form .form-row-first,.wcf-embed-checkout-form .woocommerce-page form .form-row-last{width:100%}.wcf-embed-checkout-form #order_review_heading,.wcf-embed-checkout-form .woocommerce #ship-to-different-address,.wcf-embed-checkout-form .woocommerce-additional-fields>h3,.wcf-embed-checkout-form .woocommerce-billing-fields>h3{font-size:1em}}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_social_icon a.icon:before,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,.woocommerce #content input.button.alt:after,.woocommerce #content input.button:after,.woocommerce #respond input#submit.alt:after,.woocommerce #respond input#submit:after,.woocommerce a.button.alt:after,.woocommerce button.button.alt:after,.woocommerce button.button:after,.woocommerce button.single_add_to_cart_button.button:after,.woocommerce input.button.alt:after,.woocommerce input.button:after,.woocommerce-page #content input.button.alt:after,.woocommerce-page #content input.button:after,.woocommerce-page #respond input#submit.alt:after,.woocommerce-page #respond input#submit:after,.woocommerce-page a.button.alt:after,.woocommerce-page a.button:after,.woocommerce-page button.button.alt:after,.woocommerce-page button.button:after,.woocommerce-page input.button.alt:after,.woocommerce-page input.button:after,a.et_pb_more_button:after{text-shadow:0 0;font-family:none;font-weight:400;font-style:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-transform:none;speak:none}.comment-reply-link:hover:after,.woocommerce #content input.button.alt:hover:after,.woocommerce #content input.button:hover:after,.woocommerce #respond input#submit.alt:hover:after,.woocommerce #respond input#submit:hover:after,.woocommerce a.button.alt:hover:after,.woocommerce a.button:hover:after,.woocommerce button.button.alt:hover:after,.woocommerce button.button:hover:after,.woocommerce input.button.alt:hover:after,.woocommerce input.button:hover:after,.woocommerce-page #content input.button.alt:hover:after,.woocommerce-page #content input.button:hover:after,.woocommerce-page #respond input#submit.alt:hover:after,.woocommerce-page #respond input#submit:hover:after,.woocommerce-page a.button.alt:hover:after,.woocommerce-page a.button:hover:after,.woocommerce-page button.button.alt:hover:after,.woocommerce-page button.button:hover:after,.woocommerce-page input.button.alt:hover:after,.woocommerce-page input.button:hover:after{opacity:0}.thrv_wrapper .wcf-embed-checkout-form div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
assets/min-css/frontend-rtl.min.css CHANGED
@@ -1 +1 @@
1
- html{line-height:1.15;-webkit-text-size-adjust:100%}@font-face{font-family:cartflows-icon;src:url(../fonts/cartflows-icon.eot?81m15v);src:url(../fonts/cartflows-icon.eot?81m15v#iefix) format('embedded-opentype'),url(../fonts/cartflows-icon.ttf?81m15v) format('truetype'),url(../fonts/cartflows-icon.woff?81m15v) format('woff'),url(../fonts/cartflows-icon.svg?81m15v#cartflows-icon) format('svg');font-weight:400;font-style:normal}.cartflows-icon{font-family:cartflows-icon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cartflows-icon-close:before{content:"\e602";font-family:cartflows-icon}.cartflows-icon-cross:before{content:"\e601"}.cartflows-icon-check:before{content:"\e600"}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body,button,input,optgroup,select,textarea{color:#404040;font-family:sans-serif;font-size:16px;font-size:1rem;line-height:1.5}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{background:#eee;font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;font-size:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}code,kbd,tt,var{font-family:Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace;font-size:15px;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}body{background:#fff}hr{background-color:#ccc;border:0;height:1px;margin-bottom:1.5em}ol,ul{margin:0 3em 1.5em 0}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-right:1.5em}dt{font-weight:700}dd{margin:0 1.5em 1.5em}img{height:auto;max-width:100%}figure{margin:1em 0}table{margin:0 0 1.5em;width:100%}button,input[type=button],input[type=reset],input[type=submit]{border:1px solid;border-color:#ccc #ccc #bbb;-webkit-border-radius:3px;border-radius:3px;background:#e6e6e6;color:rgba(0,0,0,.8);font-size:12px;font-size:.75rem;line-height:1;padding:.6em 1em .4em}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#ccc #bbb #aaa}button:active,button:focus,input[type=button]:active,input[type=button]:focus,input[type=reset]:active,input[type=reset]:focus,input[type=submit]:active,input[type=submit]:focus{border-color:#aaa #bbb #bbb}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{color:#666;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;padding:3px}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=range]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{color:#111}select{border:1px solid #ccc}textarea{width:100%}a{color:#4169e1}a:active,a:hover{outline:0}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#f1f1f1;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content[tabindex="-1"]:focus{outline:0}.alignleft{display:inline;float:right;margin-left:1.5em}.alignright{display:inline;float:left;margin-right:1.5em}.aligncenter{clear:both;display:block;margin-right:auto;margin-left:auto}.clear:after,.clear:before{content:"";display:table;table-layout:fixed}.clear:after{clear:both}.widget{margin:0 0 1.5em}.widget select{max-width:100%}embed,iframe,object{max-width:100%}.wcf-button{display:inline-block;padding:12px 24px;background:#ccc;text-decoration:none;margin:5px}body.cartflows-default{background-color:#f5f5f5}.cartflows-default .cartflows-container{max-width:1200px;width:100%;padding:0 20px;margin:60px auto}.cartflows-default .cartflows-primary{background-color:#fff;padding:70px;overflow:hidden;max-width:100%}@media (max-width:768px){.cartflows-default .cartflows-container{padding:0;margin:0}.cartflows-default .cartflows-primary{padding:20px 30px}}@media (max-width:544px){.cartflows-default .cartflows-primary{padding:20px 15px}}.wcf-preview-mode{background:#f16334;position:fixed;bottom:0;right:0;width:100%;height:2.6em;color:#fff;text-align:center;font-size:14px;line-height:2.6em;pointer-events:none;z-index:9999999}@media only screen and (max-width:768px){.wcf-preview-mode{font-size:13px;line-height:18px;padding:4px 10px;height:auto}}.wcf-footer-primary .wcf-footer-content p{margin:1.5em 0;text-align:center}.wcf-thankyou-wrap{padding:0;margin:0 auto;width:100%;max-width:55em;font-size:13px}.wcf-thankyou-wrap a{color:#404040}.woocommerce-order ul.order_details::after,.woocommerce-order ul.order_details::before{content:' ';display:table}.woocommerce-order ul.order_details::after{clear:both}.woocommerce-order ul.order_details,.woocommerce-order ul.order_details li{list-style:none;line-height:1}.woocommerce-order ul.order_details li{display:inline-block;border-left:1px dashed #ccc;padding:.5em 0 .5em 1em;margin:.5em 0 .5em .5em;list-style-type:none}.woocommerce-order ul.order_details li:first-child{padding-right:0}.woocommerce-order ul.order_details li:last-child{border-left:0;padding-left:0}.woocommerce-order ul.order_details li strong{display:block;margin-top:.7em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{margin:0 0 2em;-webkit-border-radius:3px;border-radius:3px;width:100%;display:block}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{background:#f1f1f1;padding:1.5em 2.5em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.8em 0;margin:0 0 .5em;font-size:1.5em;font-weight:600;color:#404040}.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1.5em;padding:0 .5em;text-align:center}.woocommerce-order-details table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:right}.woocommerce-order-details table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.woocommerce-order-details table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.woocommerce-order-details table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.woocommerce-order-details table.shop_table td,.woocommerce-order-details table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.woocommerce-order-details table.shop_table tbody th,.woocommerce-order-details table.shop_table tfoot td,.woocommerce-order-details table.shop_table tfoot th{font-weight:400;border:none}.woocommerce-order-details table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.woocommerce-order-details table.shop_table th.product-name,.woocommerce-order-details table.shop_table th.product-total{font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) td,.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.recurring-total td,.woocommerce-order-details table.shop_table tfoot tr.recurring-total th,.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.woocommerce-order .col2-set{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.woocommerce-order .col2-set .col-1{margin-left:2%}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:49%;display:inline-block}.woocommerce-order .woocommerce-customer-details address{border-left-width:1px;border-bottom-width:1px;-webkit-border-radius:0;border-radius:0;font-style:normal}.woocommerce-order .woocommerce-customer-details address p{margin:0}@media only screen and (max-width:768px){.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.5em 0;font-size:1.5em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{padding:1.5em 2em}.woocommerce-order ul.order_details li{display:block;width:100%;border-left:none;padding:.5em 0 1em 1em;border-bottom:1px dashed #ccc}.woocommerce-order ul.order_details li:last-child{border:none}.woocommerce-order .col2-set{display:block}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:100%;display:block}}
1
+ html{line-height:1.15;-webkit-text-size-adjust:100%}@font-face{font-family:cartflows-icon;src:url(../fonts/cartflows-icon.eot?81m15v);src:url(../fonts/cartflows-icon.eot?81m15v#iefix) format('embedded-opentype'),url(../fonts/cartflows-icon.ttf?81m15v) format('truetype'),url(../fonts/cartflows-icon.woff?81m15v) format('woff'),url(../fonts/cartflows-icon.svg?81m15v#cartflows-icon) format('svg');font-weight:400;font-style:normal}.cartflows-icon{font-family:cartflows-icon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cartflows-icon-close:before{content:"\e602";font-family:cartflows-icon}.cartflows-icon-cross:before{content:"\e601"}.cartflows-icon-check:before{content:"\e600"}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body,button,input,optgroup,select,textarea{color:#404040;font-family:sans-serif;font-size:16px;font-size:1rem;line-height:1.5}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{background:#eee;font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;font-size:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}code,kbd,tt,var{font-family:Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace;font-size:15px;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}body{background:#fff}hr{background-color:#ccc;border:0;height:1px;margin-bottom:1.5em}ol,ul{margin:0 3em 1.5em 0}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-right:1.5em}dt{font-weight:700}dd{margin:0 1.5em 1.5em}img{height:auto;max-width:100%}figure{margin:1em 0}table{margin:0 0 1.5em;width:100%}button,input[type=button],input[type=reset],input[type=submit]{border:1px solid;border-color:#ccc #ccc #bbb;-webkit-border-radius:3px;border-radius:3px;background:#e6e6e6;color:rgba(0,0,0,.8);font-size:12px;font-size:.75rem;line-height:1;padding:.6em 1em .4em}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#ccc #bbb #aaa}button:active,button:focus,input[type=button]:active,input[type=button]:focus,input[type=reset]:active,input[type=reset]:focus,input[type=submit]:active,input[type=submit]:focus{border-color:#aaa #bbb #bbb}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{color:#666;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;padding:3px}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=range]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{color:#111}select{border:1px solid #ccc}textarea{width:100%}a{color:#4169e1}a:active,a:hover{outline:0}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#f1f1f1;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content[tabindex="-1"]:focus{outline:0}.alignleft{display:inline;float:right;margin-left:1.5em}.alignright{display:inline;float:left;margin-right:1.5em}.aligncenter{clear:both;display:block;margin-right:auto;margin-left:auto}.clear:after,.clear:before{content:"";display:table;table-layout:fixed}.clear:after{clear:both}.widget{margin:0 0 1.5em}.widget select{max-width:100%}embed,iframe,object{max-width:100%}.wcf-button{display:inline-block;padding:12px 24px;background:#ccc;text-decoration:none;margin:5px}body.cartflows-default{background-color:#f5f5f5}.cartflows-default .cartflows-container{max-width:1200px;width:100%;padding:0 20px;margin:60px auto}.cartflows-default .cartflows-primary{background-color:#fff;padding:70px;overflow:hidden;max-width:100%}@media (max-width:768px){.cartflows-default .cartflows-container{padding:0;margin:0}.cartflows-default .cartflows-primary{padding:20px 30px}}@media (max-width:544px){.cartflows-default .cartflows-primary{padding:20px 15px}}.wcf-preview-mode{background:#f16334;position:fixed;bottom:0;right:0;width:100%;height:2.6em;color:#fff;text-align:center;font-size:14px;line-height:2.6em;pointer-events:none;z-index:9999999}@media only screen and (max-width:768px){.wcf-preview-mode{font-size:13px;line-height:18px;padding:4px 10px;height:auto}}.wcf-footer-primary .wcf-footer-content p{margin:1.5em 0;text-align:center}.wcf-thankyou-wrap{padding:0;margin:0 auto;width:100%;max-width:55em;font-size:13px}.wcf-thankyou-wrap a{color:#404040}.woocommerce-order ul.order_details::after,.woocommerce-order ul.order_details::before{content:' ';display:table}.woocommerce-order ul.order_details::after{clear:both}.woocommerce-order ul.order_details,.woocommerce-order ul.order_details li{list-style:none;line-height:1}.woocommerce-order ul.order_details li{display:inline-block;border-left:1px dashed #ccc;padding:.5em 0 .5em 1em;margin:.5em 0 .5em .5em;list-style-type:none}.woocommerce-order ul.order_details li:first-child{padding-right:0}.woocommerce-order ul.order_details li:last-child{border-left:0;padding-left:0}.woocommerce-order ul.order_details li strong{display:block;margin-top:.7em}.woocommerce-order .woocommerce-bacs-bank-details,.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order .woocommerce-order-downloads,.woocommerce-order ul.order_details{margin:0 0 2em;-webkit-border-radius:3px;border-radius:3px;width:100%;display:block}.woocommerce-order .woocommerce-bacs-bank-details ul.bacs_details{padding:0}.woocommerce-order .woocommerce-bacs-bank-details,.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order .woocommerce-order-downloads,.woocommerce-order ul.order_details{background:#f1f1f1;padding:1.5em 2.5em}.woocommerce-order .woocommerce-order-downloads__title,.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.wc-bacs-bank-details-heading,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.8em 0;margin:0 0 .5em;font-size:1.5em;font-weight:600;color:#404040}.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1.5em;padding:0 .5em;text-align:center}.woocommerce-order-details table.shop_table,.woocommerce-order-downloads table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:right}.woocommerce-order-details table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.woocommerce-order-details table.shop_table th,.woocommerce-order-downloads table.shop_table th{border:none;font-weight:600;padding:9px 0;line-height:1.2em}.woocommerce-order-details table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.woocommerce-order-details table.shop_table td,.woocommerce-order-details table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.woocommerce-order-details table.shop_table tbody th,.woocommerce-order-details table.shop_table tfoot td,.woocommerce-order-details table.shop_table tfoot th{font-weight:400;border:none}.woocommerce-order-details table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.woocommerce-order-details table.shop_table th.product-name,.woocommerce-order-details table.shop_table th.product-total{font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) td,.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.recurring-total td,.woocommerce-order-details table.shop_table tfoot tr.recurring-total th,.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.woocommerce-order .col2-set{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.woocommerce-order .col2-set .col-1{margin-left:2%}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:49%;display:inline-block}.woocommerce-order .woocommerce-customer-details address{border-left-width:1px;border-bottom-width:1px;-webkit-border-radius:0;border-radius:0;font-style:normal}.woocommerce-order .woocommerce-customer-details address p{margin:0}@media only screen and (max-width:768px){.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.5em 0;font-size:1.5em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{padding:1.5em 2em}.woocommerce-order ul.order_details li{display:block;width:100%;border-left:none;padding:.5em 0 1em 1em;border-bottom:1px dashed #ccc}.woocommerce-order ul.order_details li:last-child{border:none}.woocommerce-order .col2-set{display:block}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:100%;display:block}}
assets/min-css/frontend.min.css CHANGED
@@ -1 +1 @@
1
- html{line-height:1.15;-webkit-text-size-adjust:100%}@font-face{font-family:cartflows-icon;src:url(../fonts/cartflows-icon.eot?81m15v);src:url(../fonts/cartflows-icon.eot?81m15v#iefix) format('embedded-opentype'),url(../fonts/cartflows-icon.ttf?81m15v) format('truetype'),url(../fonts/cartflows-icon.woff?81m15v) format('woff'),url(../fonts/cartflows-icon.svg?81m15v#cartflows-icon) format('svg');font-weight:400;font-style:normal}.cartflows-icon{font-family:cartflows-icon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cartflows-icon-close:before{content:"\e602";font-family:cartflows-icon}.cartflows-icon-cross:before{content:"\e601"}.cartflows-icon-check:before{content:"\e600"}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body,button,input,optgroup,select,textarea{color:#404040;font-family:sans-serif;font-size:16px;font-size:1rem;line-height:1.5}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{background:#eee;font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;font-size:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}code,kbd,tt,var{font-family:Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace;font-size:15px;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}body{background:#fff}hr{background-color:#ccc;border:0;height:1px;margin-bottom:1.5em}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dt{font-weight:700}dd{margin:0 1.5em 1.5em}img{height:auto;max-width:100%}figure{margin:1em 0}table{margin:0 0 1.5em;width:100%}button,input[type=button],input[type=reset],input[type=submit]{border:1px solid;border-color:#ccc #ccc #bbb;-webkit-border-radius:3px;border-radius:3px;background:#e6e6e6;color:rgba(0,0,0,.8);font-size:12px;font-size:.75rem;line-height:1;padding:.6em 1em .4em}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#ccc #bbb #aaa}button:active,button:focus,input[type=button]:active,input[type=button]:focus,input[type=reset]:active,input[type=reset]:focus,input[type=submit]:active,input[type=submit]:focus{border-color:#aaa #bbb #bbb}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{color:#666;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;padding:3px}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=range]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{color:#111}select{border:1px solid #ccc}textarea{width:100%}a{color:#4169e1}a:active,a:hover{outline:0}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#f1f1f1;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content[tabindex="-1"]:focus{outline:0}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}.clear:after,.clear:before{content:"";display:table;table-layout:fixed}.clear:after{clear:both}.widget{margin:0 0 1.5em}.widget select{max-width:100%}embed,iframe,object{max-width:100%}.wcf-button{display:inline-block;padding:12px 24px;background:#ccc;text-decoration:none;margin:5px}body.cartflows-default{background-color:#f5f5f5}.cartflows-default .cartflows-container{max-width:1200px;width:100%;padding:0 20px;margin:60px auto}.cartflows-default .cartflows-primary{background-color:#fff;padding:70px;overflow:hidden;max-width:100%}@media (max-width:768px){.cartflows-default .cartflows-container{padding:0;margin:0}.cartflows-default .cartflows-primary{padding:20px 30px}}@media (max-width:544px){.cartflows-default .cartflows-primary{padding:20px 15px}}.wcf-preview-mode{background:#f16334;position:fixed;bottom:0;left:0;width:100%;height:2.6em;color:#fff;text-align:center;font-size:14px;line-height:2.6em;pointer-events:none;z-index:9999999}@media only screen and (max-width:768px){.wcf-preview-mode{font-size:13px;line-height:18px;padding:4px 10px;height:auto}}.wcf-footer-primary .wcf-footer-content p{margin:1.5em 0;text-align:center}.wcf-thankyou-wrap{padding:0;margin:0 auto;width:100%;max-width:55em;font-size:13px}.wcf-thankyou-wrap a{color:#404040}.woocommerce-order ul.order_details::after,.woocommerce-order ul.order_details::before{content:' ';display:table}.woocommerce-order ul.order_details::after{clear:both}.woocommerce-order ul.order_details,.woocommerce-order ul.order_details li{list-style:none;line-height:1}.woocommerce-order ul.order_details li{display:inline-block;border-right:1px dashed #ccc;padding:.5em 1em .5em 0;margin:.5em .5em .5em 0;list-style-type:none}.woocommerce-order ul.order_details li:first-child{padding-left:0}.woocommerce-order ul.order_details li:last-child{border-right:0;padding-right:0}.woocommerce-order ul.order_details li strong{display:block;margin-top:.7em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{margin:0 0 2em;-webkit-border-radius:3px;border-radius:3px;width:100%;display:block}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{background:#f1f1f1;padding:1.5em 2.5em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.8em 0;margin:0 0 .5em;font-size:1.5em;font-weight:600;color:#404040}.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1.5em;padding:0 .5em;text-align:center}.woocommerce-order-details table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:left}.woocommerce-order-details table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.woocommerce-order-details table.shop_table th{border:none;font-weight:400;padding:9px 0;line-height:1.2em}.woocommerce-order-details table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.woocommerce-order-details table.shop_table td,.woocommerce-order-details table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.woocommerce-order-details table.shop_table tbody th,.woocommerce-order-details table.shop_table tfoot td,.woocommerce-order-details table.shop_table tfoot th{font-weight:400;border:none}.woocommerce-order-details table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.woocommerce-order-details table.shop_table th.product-name,.woocommerce-order-details table.shop_table th.product-total{font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) td,.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.recurring-total td,.woocommerce-order-details table.shop_table tfoot tr.recurring-total th,.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.woocommerce-order .col2-set{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.woocommerce-order .col2-set .col-1{margin-right:2%}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:49%;display:inline-block}.woocommerce-order .woocommerce-customer-details address{border-right-width:1px;border-bottom-width:1px;-webkit-border-radius:0;border-radius:0;font-style:normal}.woocommerce-order .woocommerce-customer-details address p{margin:0}@media only screen and (max-width:768px){.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.5em 0;font-size:1.5em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{padding:1.5em 2em}.woocommerce-order ul.order_details li{display:block;width:100%;border-right:none;padding:.5em 1em 1em 0;border-bottom:1px dashed #ccc}.woocommerce-order ul.order_details li:last-child{border:none}.woocommerce-order .col2-set{display:block}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:100%;display:block}}
1
+ html{line-height:1.15;-webkit-text-size-adjust:100%}@font-face{font-family:cartflows-icon;src:url(../fonts/cartflows-icon.eot?81m15v);src:url(../fonts/cartflows-icon.eot?81m15v#iefix) format('embedded-opentype'),url(../fonts/cartflows-icon.ttf?81m15v) format('truetype'),url(../fonts/cartflows-icon.woff?81m15v) format('woff'),url(../fonts/cartflows-icon.svg?81m15v#cartflows-icon) format('svg');font-weight:400;font-style:normal}.cartflows-icon{font-family:cartflows-icon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cartflows-icon-close:before{content:"\e602";font-family:cartflows-icon}.cartflows-icon-cross:before{content:"\e601"}.cartflows-icon-check:before{content:"\e600"}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body,button,input,optgroup,select,textarea{color:#404040;font-family:sans-serif;font-size:16px;font-size:1rem;line-height:1.5}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{background:#eee;font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;font-size:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}code,kbd,tt,var{font-family:Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace;font-size:15px;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}body{background:#fff}hr{background-color:#ccc;border:0;height:1px;margin-bottom:1.5em}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dt{font-weight:700}dd{margin:0 1.5em 1.5em}img{height:auto;max-width:100%}figure{margin:1em 0}table{margin:0 0 1.5em;width:100%}button,input[type=button],input[type=reset],input[type=submit]{border:1px solid;border-color:#ccc #ccc #bbb;-webkit-border-radius:3px;border-radius:3px;background:#e6e6e6;color:rgba(0,0,0,.8);font-size:12px;font-size:.75rem;line-height:1;padding:.6em 1em .4em}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#ccc #bbb #aaa}button:active,button:focus,input[type=button]:active,input[type=button]:focus,input[type=reset]:active,input[type=reset]:focus,input[type=submit]:active,input[type=submit]:focus{border-color:#aaa #bbb #bbb}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{color:#666;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;padding:3px}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=range]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{color:#111}select{border:1px solid #ccc}textarea{width:100%}a{color:#4169e1}a:active,a:hover{outline:0}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#f1f1f1;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content[tabindex="-1"]:focus{outline:0}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}.clear:after,.clear:before{content:"";display:table;table-layout:fixed}.clear:after{clear:both}.widget{margin:0 0 1.5em}.widget select{max-width:100%}embed,iframe,object{max-width:100%}.wcf-button{display:inline-block;padding:12px 24px;background:#ccc;text-decoration:none;margin:5px}body.cartflows-default{background-color:#f5f5f5}.cartflows-default .cartflows-container{max-width:1200px;width:100%;padding:0 20px;margin:60px auto}.cartflows-default .cartflows-primary{background-color:#fff;padding:70px;overflow:hidden;max-width:100%}@media (max-width:768px){.cartflows-default .cartflows-container{padding:0;margin:0}.cartflows-default .cartflows-primary{padding:20px 30px}}@media (max-width:544px){.cartflows-default .cartflows-primary{padding:20px 15px}}.wcf-preview-mode{background:#f16334;position:fixed;bottom:0;left:0;width:100%;height:2.6em;color:#fff;text-align:center;font-size:14px;line-height:2.6em;pointer-events:none;z-index:9999999}@media only screen and (max-width:768px){.wcf-preview-mode{font-size:13px;line-height:18px;padding:4px 10px;height:auto}}.wcf-footer-primary .wcf-footer-content p{margin:1.5em 0;text-align:center}.wcf-thankyou-wrap{padding:0;margin:0 auto;width:100%;max-width:55em;font-size:13px}.wcf-thankyou-wrap a{color:#404040}.woocommerce-order ul.order_details::after,.woocommerce-order ul.order_details::before{content:' ';display:table}.woocommerce-order ul.order_details::after{clear:both}.woocommerce-order ul.order_details,.woocommerce-order ul.order_details li{list-style:none;line-height:1}.woocommerce-order ul.order_details li{display:inline-block;border-right:1px dashed #ccc;padding:.5em 1em .5em 0;margin:.5em .5em .5em 0;list-style-type:none}.woocommerce-order ul.order_details li:first-child{padding-left:0}.woocommerce-order ul.order_details li:last-child{border-right:0;padding-right:0}.woocommerce-order ul.order_details li strong{display:block;margin-top:.7em}.woocommerce-order .woocommerce-bacs-bank-details,.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order .woocommerce-order-downloads,.woocommerce-order ul.order_details{margin:0 0 2em;-webkit-border-radius:3px;border-radius:3px;width:100%;display:block}.woocommerce-order .woocommerce-bacs-bank-details ul.bacs_details{padding:0}.woocommerce-order .woocommerce-bacs-bank-details,.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order .woocommerce-order-downloads,.woocommerce-order ul.order_details{background:#f1f1f1;padding:1.5em 2.5em}.woocommerce-order .woocommerce-order-downloads__title,.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.wc-bacs-bank-details-heading,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.8em 0;margin:0 0 .5em;font-size:1.5em;font-weight:600;color:#404040}.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1.5em;padding:0 .5em;text-align:center}.woocommerce-order-details table.shop_table,.woocommerce-order-downloads table.shop_table{border:none;border-bottom:0;background-color:inherit;-webkit-border-radius:0;border-radius:0;font-family:inherit;font-weight:inherit;font-size:.95em;margin:0!important;border-collapse:collapse;text-align:left}.woocommerce-order-details table.shop_table #shipping_method{margin:0;padding:0;list-style:none}.woocommerce-order-details table.shop_table th,.woocommerce-order-downloads table.shop_table th{border:none;font-weight:600;padding:9px 0;line-height:1.2em}.woocommerce-order-details table.shop_table tfoot tr:last-child .woocommerce-Price-amount{font-size:1em}.woocommerce-order-details table.shop_table td,.woocommerce-order-details table.shop_table th{padding:.6em 0;line-height:1.4em;border:none}.woocommerce-order-details table.shop_table tbody th,.woocommerce-order-details table.shop_table tfoot td,.woocommerce-order-details table.shop_table tfoot th{font-weight:400;border:none}.woocommerce-order-details table.shop_table tbody{border-top:1px dashed #ccc;border-bottom:1px dashed #ccc}.woocommerce-order-details table.shop_table th.product-name,.woocommerce-order-details table.shop_table th.product-total{font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) td,.woocommerce-order-details table.shop_table tfoot tr.order-total:not(.recurring-total) th{font-weight:600;border-top:1px dashed #ccc}.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{padding-top:1.8em;font-weight:600}.woocommerce-order-details table.shop_table tfoot tr.recurring-total td,.woocommerce-order-details table.shop_table tfoot tr.recurring-total th,.woocommerce-order-details table.shop_table tfoot tr.recurring-totals th{vertical-align:top}.woocommerce-order .col2-set{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.woocommerce-order .col2-set .col-1{margin-right:2%}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:49%;display:inline-block}.woocommerce-order .woocommerce-customer-details address{border-right-width:1px;border-bottom-width:1px;-webkit-border-radius:0;border-radius:0;font-style:normal}.woocommerce-order .woocommerce-customer-details address p{margin:0}@media only screen and (max-width:768px){.woocommerce-order .woocommerce-thankyou-order-received{margin:0 0 1em}.woocommerce-order .woocommerce-thankyou-order-received,.woocommerce-order h2.woocommerce-column__title,.woocommerce-order h2.woocommerce-order-details__title{padding:.5em 0;font-size:1.5em}.woocommerce-order .woocommerce-customer-details,.woocommerce-order .woocommerce-order-details,.woocommerce-order ul.order_details{padding:1.5em 2em}.woocommerce-order ul.order_details li{display:block;width:100%;border-right:none;padding:.5em 1em 1em 0;border-bottom:1px dashed #ccc}.woocommerce-order ul.order_details li:last-child{border:none}.woocommerce-order .col2-set{display:block}.woocommerce-order .col2-set .col-1,.woocommerce-order .col2-set .col-2{width:100%;display:block}}
assets/min-css/import-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .no-elementor-notice{border-right:none;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding-right:0}.no-elementor-notice span{color:#f16334;font-size:18px;vertical-align:middle}.site-preview{background:#c5c5c5;display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden}.template.importing .site-preview:after,.template:hover .site-preview:after{opacity:.3}.template.importing .site-preview,.template:hover .site-preview{background:#fff;cursor:pointer}.template .site-preview:after{content:"";background:#fff;opacity:0;top:0;content:"";display:block;top:0;position:absolute;padding-top:66.66666%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out;right:0;left:0;bottom:0}.template .notice{padding:.5em;background:rgba(0,0,0,.7);color:#fff;font-weight:400;border:#ffdead;font-size:11px;text-decoration:none;position:absolute;width:100%;vertical-align:middle;top:50%;-webkit-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);left:0;right:0;z-index:4;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}#wcf_create_notice{display:none}.preview:focus,.preview:hover{color:#fff;-webkit-box-shadow:none;box-shadow:none}.preview{text-decoration:none;opacity:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:22%;right:22%;z-index:4;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:13px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:10px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.template-id-container{font-size:15px;font-weight:600;margin:0;padding:10px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65);position:relative}.template-actions{opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;left:0;top:0;padding:5px 5px 0 5px;background:rgba(244,244,244,.7);border-right:1px solid rgba(0,0,0,.05)}.template.importing .preview,.template.importing .template-actions,.template:hover .preview,.template:hover .template-actions,.wcf-step-content .template-actions{opacity:1}.wcf-remote-list .template{position:relative;overflow:hidden}.wcf-remote-list h3{margin-bottom:1em;margin-top:0;font-size:15px;font-weight:600;margin:0;padding:0;text-align:right}.wcf-remote-list img{max-width:100%;vertical-align:middle}.wcf-remote-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cartflows-steps-list img{width:100%}#cartflows-steps-list .title{font-weight:700;color:#474747;line-height:2;background:#f7f7f7;padding:.5em 1em}#cartflows-steps-list .image-wrap{-webkit-background-size:cover;background-size:cover;overflow:hidden}#cartflows-steps .close{display:inline-block;padding:2em;cursor:pointer}.template-message-block{text-align:center;margin:0 auto;padding:4em 0}.templator #TB_ajaxContent{width:100%!important}.template-message-block .description{font-style:normal}.template-message-block .spinner{float:none;margin:0}.cartflows-steps-popup{position:fixed;right:0;left:0;top:0;bottom:0;z-index:99999;background:#fff;overflow-y:scroll}.cartflows-steps-popup .notice{max-width:700px;margin:0 auto}.cartflows-load-steps-library .dashicons{height:auto;width:auto;line-height:normal;margin:0 0 0 5px;vertical-align:initial;font-size:100%}.cartflows-load-steps .dashicons{vertical-align:text-bottom}#TB_window{width:100%!important;margin:0 auto!important;text-align:center!important;position:fixed!important;top:0!important;right:0!important;left:0!important;bottom:0!important}#TB_iframeContent{width:100%!important;height:100%!important}@media only screen and (min-device-width :320px) and (max-device-width :1024px){#TB_iframeContent-wrapper{position:fixed;left:0;bottom:50px;right:0;top:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}}#TB_window #TB_ajaxWindowTitle{font-size:1.2rem;display:inline-block;width:auto;padding:0}#TB_window #TB_closeWindowButton{position:relative}.tb-close-icon:before{vertical-align:middle}#TB_window{text-align:center}#TB_iframeContent.tablet{width:768px!important;height:1024px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.tablet.landscape{width:1024px!important}#TB_iframeContent.mobile{width:360px!important;height:640px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.mobile.landscape{width:360px!important}#TB_closeAjaxWindow{float:left}#TB_window.thickbox-loading{margin:0!important}div#TB_window{background-color:#fff}#TB_window #TB_title{color:#0a0c0d;text-align:right;bottom:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-pack:justify;-webkit-justify-content:space-between;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;padding:1em 1.5em 1em 1em}@media all and (min-width:769px){#TB_window #TB_title{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}}#TB_window.mobile,#TB_window.tablet{overflow-y:scroll}.top #TB_iframeContent-wrapper{bottom:0;top:80px}#TB_window.top #TB_title{top:0}#TB_window #TB_closeWindowButton:focus .tb-close-icon{-webkit-box-shadow:none;box-shadow:none;color:#666}@media all and (max-width:768px){#TB_closeAjaxWindow{padding-left:0}#TB_window #TB_closeWindowButton,#TB_window .tb-close-icon{width:80px}}.responsive-view .dashicons{color:#ddd}.responsive-view .active{color:#111}.responsive-view a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#TB_window.mobile #TB_iframeContent,#TB_window.tablet #TB_iframeContent{margin-bottom:50px;margin-top:50px}.responsive-view a{color:#666;cursor:pointer;display:inline-block;padding:1em;vertical-align:middle;text-decoration:none}#TB_closeAjaxWindow .tb-close-icon{position:relative}.site-loading{display:none;position:absolute;right:50%;top:50%;text-align:center;color:#555;-webkit-transform:translate(50%,-40%);-ms-transform:translate(50%,-40%);transform:translate(50%,-40%)}.top .site-loading{top:50%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.site-loading h3{font-size:33px;font-weight:600;margin:0 0 .8em 0}.site-loading p{margin:0}.cartflows-thickbox-loading .site-loading{display:block}.cartflows-thickbox-loading #TB_iframeContent,.cartflows-thickbox-loading #TB_iframeContent-wrapper{display:none}.wcf-remote-list:after,.wcf-remote-list:before{content:"";display:table}.wcf-remote-list::after{content:"";display:table;clear:both}.wcf-template-header .filter-count{line-height:normal}#wcf-page-builders{display:none}#wcf-remote-flow-filters>div,#wcf-remote-step-filters>div{display:inline-block}.wcf-template-header .filter-links{margin:0;padding:0}.wcf-template-header li:focus{outline:0}.wcf-template-header .filter-links li{margin:0;display:inline-block}.wcf-template-header .filter-links li a:focus,.wcf-template-header .filter-links li a:hove{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-template-header .filter-links li .current{color:#000;border-bottom:2px solid #f16334;font-weight:600}.wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8}.wcf-search-form{margin-left:2em;padding-left:0;text-align:left;margin-top:1em;margin-bottom:1em;position:relative}.wcf-template-notice{display:none}#wcf-start-from-scratch{text-align:center}#wcf-start-from-scratch .inner{background:0 0;-webkit-box-shadow:none;box-shadow:none;width:94%;margin:0 auto;float:none;position:absolute;top:40%}#wcf-scratch-steps-categories{display:inline-block}#wcf-scratch-steps-categories select{-webkit-border-radius:0;border-radius:0;height:29px;border:1px solid;border-color:#9e9e9e;border-width:1px;-webkit-box-shadow:none;box-shadow:none;padding:2px;line-height:29px}#wcf-start-from-scratch .description{margin-bottom:2em}#wcf-remote-step-importer .wcf-search-form{display:none}.wcf-search-form .wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8;background:0 0;border-bottom:1px solid #ccc;font-size:1em}.wcf-search-form .wcf-flow-search-input:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#ccc}.cartflows-preview-flow-steps li{display:inline-block;margin:0 1em;position:relative}.cartflows-flow-import-blank.updating-message:before{vertical-align:text-bottom}#wpwrap .cartflows-step-loading h2,#wpwrap .template-message-block h2{font-size:1.5em;margin:0 0 .5em 0;padding:8px 12px;line-height:1.4}#wpwrap .cartflows-step-loading p,#wpwrap .template-message-block p{font-size:1.2em}#wpwrap .cartflows-step-loading .spinner{vertical-align:initial}.wcf-flow-type{position:absolute;left:0;top:0;padding:3px 10px;color:#fff}.wcf-flow-type.pro{background:#f06262}.wcf-templates-popup-overlay{position:fixed;height:100%;width:100%;top:0;right:0;background:rgba(0,0,0,.7);-webkit-transition:opacity .5s;transition:opacity .5s;visibility:hidden;opacity:0;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:none;transition:none}.wcf-templates-popup-overlay.open{visibility:visible;opacity:1;z-index:9999}.wcf-templates-popup-content{max-width:1200px;background-color:#fff;position:absolute;-webkit-border-radius:3px;border-radius:3px;top:40%;right:50%;-webkit-transform:translate(50%,-35%);-ms-transform:translate(50%,-35%);transform:translate(50%,-35%);width:70%;min-height:450px;overflow:hidden}.wcf-templates-popup-content .inner{background:#fff;position:relative;padding:8px 8px 0 8px;display:block;float:right;margin:15px;text-align:center;-webkit-box-shadow:0 0 5px 1px rgba(204,204,204,.3);box-shadow:0 0 5px 1px rgba(204,204,204,.3)}@media only screen and (max-width:480px){.wcf-templates-popup-content{width:90%}.wcf-template-header{display:block!important;padding:15px 15px 0 15px!important}.wcf-popup-close-wrap{position:absolute;top:10px;left:5px}}@media only screen and (min-width:768px){.wcf-templates-popup-content .inner{width:-webkit-calc(25% - 30px);width:calc(25% - 30px)}}html.wcf-popup-open{overflow:hidden}.wcf-button-wrap{margin-top:0;position:absolute;top:10px;right:110px}.wcf-steps-loading #wcf-remote-step-list{display:none!important}#wcf-remote-content{background-color:#f5f5f5;overflow-y:auto;min-height:450px;max-height:450px;padding:20px 20px 20px 20px;clear:both}#wcf-remote-content #wcf-start-from-scratch h1{font-size:23px;font-weight:400;margin:0 0 1em 0;padding:9px 0 4px;line-height:29px}.wcf-template-list-wrap .template-name{margin:0;text-align:right;font-size:13px}.wcf-template-list-wrap img{width:100%;vertical-align:middle}.wcf-templates-popup-content .template{margin:0;position:relative;overflow:hidden}.wcf-tab.nav-tabs{overflow:hidden;margin:0}.wcf-template-header{-moz-box-align:center;align-items:center;background:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.2);box-shadow:0 0 8px rgba(0,0,0,.2);-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;-moz-box-pack:justify;justify-content:space-between;padding:0 15px;min-height:50px}.wcf-search-form:after{content:"\f179";display:inline-block;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.5em;top:.5em;color:#81868a}.wcf-template-logo-wrap{font-size:16px;font-weight:600;text-align:center}.wcf-template-logo-wrap .wcf-cartflows-logo-img{vertical-align:middle}.wcf-tab.nav-tabs:before{display:table;content:""}.wcf-tab.nav-tabs:after{clear:both}.wcf-tab.nav-tabs>li{display:inline-block;padding:15px 0;margin:0;font-weight:400}.wcf-tab.nav-tabs>li.active{border-bottom:3px solid #f16334;font-weight:600}.wcf-template-header .filter-links li>a{border-color:transparent;margin:0}.wcf-tab.nav-tabs>li:active,.wcf-tab.nav-tabs>li:focus,.wcf-tab.nav-tabs>li>a:focus,.wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li:focus .wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-tab.nav-tabs>li>a,.wcf-template-header .filter-links>li>a,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{padding:15px;color:#555;text-decoration:none}.wcf-nav-section-content{display:none}.wcf-nav-section-content.active{display:block;overflow:hidden}.wcf-popup-close-wrap{width:35px;text-align:center;border-right:1px #eee solid}.wcf-popup-close-wrap .close-icon{cursor:pointer}.wcf-popup-close-wrap .wcf-cartflow-icons{pointer-events:none;font-size:20px;height:20px;width:20px;line-height:20px;opacity:.7}.wcf-popup-close-wrap .close-icon:hover .wcf-cartflow-icons{opacity:1}.wcf-templates-popup-content .spinner{position:absolute;top:50%;right:50%;bottom:0;left:0;max-width:100%;max-height:100%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%);z-index:99999}.wcf-templates-popup-content .wcf-template-header .wcf-tab-wrapper{margin:0 auto}#wcf-upcoming-page-builders .description{font-size:1rem;margin:4em 0 0 0;text-align:center}.flow-type-filter-links{display:none}#wcf-remote-filters{padding:0 15px}#wcf-remote-filters a{text-decoration:none}#wcf-remote-filters .filter-links li:focus,#wcf-remote-filters a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-filters .filter-links li a{border-bottom:none}#wcf-remote-filters .filter-links li:first-child a{margin-right:0}#wcf-remote-filters .filter-links li:last-child a{margin-left:0}#wcf-remote-filters .filter-links li .current,#wcf-remote-filters .filter-links li a:focus,#wcf-remote-filters .filter-links li a:hover{color:#f16334}.wrap .wcf-page-builder-notice .notice{margin:5px 15px}#wcf-api-notice-block{text-align:center;margin-top:5em}.wcf-templates-popup-overlay a{-webkit-transition:none;transition:none}.wcf-notice-wrap .notice{display:inline-block}.wcf-learn-how i{font-size:1rem;vertical-align:middle}.wcf-learn-how a{text-decoration:none}#wcf-remote-content .wcf-install-plugin::focus{border-color:none;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-content .wcf-install-plugin.updating-message{background:0 0;padding:0;font-size:1rem;-webkit-box-shadow:none;box-shadow:none;border:none;margin:0 3px 0 0}.wcf-page-builder-message{margin:5em auto 0 auto;width:700px}.wcf-page-builder-message p{font-size:1rem}.wcf-page-builder-message i{font-size:1rem;vertical-align:middle}.wcf-page-builder-message a{text-decoration:none;margin:1.5em 0 0 0}.cartflows-ie .postbox{padding:1em}.cartflows-ie{padding-top:2em;padding-left:2em}.admin_page_flow_exporter .notice,.admin_page_flow_importer .notice{margin:1em 0 0 0}.cartflows-website-unreachable{padding:1em 2em}
1
+ .no-elementor-notice{border-right:none;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding-right:0}.no-elementor-notice span{color:#f16334;font-size:18px;vertical-align:middle}.site-preview{background:#c5c5c5;display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden}.template.importing .site-preview:after,.template:hover .site-preview:after{opacity:.3}.template.importing .site-preview,.template:hover .site-preview{background:#fff;cursor:pointer}.template .site-preview:after{content:"";background:#fff;opacity:0;top:0;content:"";display:block;top:0;position:absolute;padding-top:66.66666%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out;right:0;left:0;bottom:0}.template .notice{padding:.6em;background:rgba(0,0,0,.8);color:#fff;font-weight:400;border:none;font-size:13px;text-decoration:none;position:absolute;width:100%;vertical-align:middle;bottom:0;margin:0;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);left:0;right:0;z-index:4;text-align:center;-webkit-border-radius:3px;border-radius:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;-webkit-font-smoothing:antialiased}.template .notice a{color:#f16334}.template .notice p{padding:0;margin:0}#wcf_create_notice{display:none}.preview:focus,.preview:hover{color:#fff;-webkit-box-shadow:none;box-shadow:none}.preview{text-decoration:none;opacity:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:22%;right:22%;z-index:4;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:13px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:10px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.template-id-container{font-size:15px;font-weight:600;margin:0;padding:10px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65);position:relative}.template-actions{opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;left:0;top:0;padding:5px 5px 0 5px;background:rgba(244,244,244,.7);border-right:1px solid rgba(0,0,0,.05)}.template.importing .preview,.template.importing .template-actions,.template:hover .preview,.template:hover .template-actions,.wcf-step-content .template-actions{opacity:1}.wcf-remote-list .template{position:relative;overflow:hidden}.wcf-remote-list h3{margin-bottom:1em;margin-top:0;font-size:15px;font-weight:600;margin:0;padding:0;text-align:right}.wcf-remote-list img{max-width:100%;vertical-align:middle}.wcf-remote-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cartflows-steps-list img{width:100%}#cartflows-steps-list .title{font-weight:700;color:#474747;line-height:2;background:#f7f7f7;padding:.5em 1em}#cartflows-steps-list .image-wrap{-webkit-background-size:cover;background-size:cover;overflow:hidden}#cartflows-steps .close{display:inline-block;padding:2em;cursor:pointer}.template-message-block{text-align:center;margin:0 auto;padding:4em 0}.templator #TB_ajaxContent{width:100%!important}.template-message-block .description{font-style:normal}.template-message-block .spinner{float:none;margin:0}.cartflows-steps-popup{position:fixed;right:0;left:0;top:0;bottom:0;z-index:99999;background:#fff;overflow-y:scroll}.cartflows-steps-popup .notice{max-width:700px;margin:0 auto}.cartflows-load-steps-library .dashicons{height:auto;width:auto;line-height:normal;margin:0 0 0 5px;vertical-align:initial;font-size:100%}.cartflows-load-steps .dashicons{vertical-align:text-bottom}#TB_window{width:100%!important;margin:0 auto!important;text-align:center!important;position:fixed!important;top:0!important;right:0!important;left:0!important;bottom:0!important}#TB_iframeContent{width:100%!important;height:100%!important}@media only screen and (min-device-width :320px) and (max-device-width :1024px){#TB_iframeContent-wrapper{position:fixed;left:0;bottom:50px;right:0;top:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}}#TB_window #TB_ajaxWindowTitle{font-size:1.2rem;display:inline-block;width:auto;padding:0}#TB_window #TB_closeWindowButton{position:relative}.tb-close-icon:before{vertical-align:middle}#TB_window{text-align:center}#TB_iframeContent.tablet{width:768px!important;height:1024px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.tablet.landscape{width:1024px!important}#TB_iframeContent.mobile{width:360px!important;height:640px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.mobile.landscape{width:360px!important}#TB_closeAjaxWindow{float:left}#TB_window.thickbox-loading{margin:0!important}div#TB_window{background-color:#fff}#TB_window #TB_title{color:#0a0c0d;text-align:right;bottom:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-pack:justify;-webkit-justify-content:space-between;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;padding:1em 1.5em 1em 1em}@media all and (min-width:769px){#TB_window #TB_title{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}}#TB_window.mobile,#TB_window.tablet{overflow-y:scroll}.top #TB_iframeContent-wrapper{bottom:0;top:80px}#TB_window.top #TB_title{top:0}#TB_window #TB_closeWindowButton:focus .tb-close-icon{-webkit-box-shadow:none;box-shadow:none;color:#666}@media all and (max-width:768px){#TB_closeAjaxWindow{padding-left:0}#TB_window #TB_closeWindowButton,#TB_window .tb-close-icon{width:80px}}.responsive-view .dashicons{color:#ddd}.responsive-view .active{color:#111}.responsive-view a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#TB_window.mobile #TB_iframeContent,#TB_window.tablet #TB_iframeContent{margin-bottom:50px;margin-top:50px}.responsive-view a{color:#666;cursor:pointer;display:inline-block;padding:1em;vertical-align:middle;text-decoration:none}#TB_closeAjaxWindow .tb-close-icon{position:relative}.site-loading{display:none;position:absolute;right:50%;top:50%;text-align:center;color:#555;-webkit-transform:translate(50%,-40%);-ms-transform:translate(50%,-40%);transform:translate(50%,-40%)}.top .site-loading{top:50%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.site-loading h3{font-size:33px;font-weight:600;margin:0 0 .8em 0}.site-loading p{margin:0}.cartflows-thickbox-loading .site-loading{display:block}.cartflows-thickbox-loading #TB_iframeContent,.cartflows-thickbox-loading #TB_iframeContent-wrapper{display:none}.wcf-remote-list:after,.wcf-remote-list:before{content:"";display:table}.wcf-remote-list::after{content:"";display:table;clear:both}.wcf-template-header .filter-count{line-height:normal}#wcf-page-builders{display:none}#wcf-remote-flow-filters>div,#wcf-remote-step-filters>div{display:inline-block}.wcf-template-header .filter-links{margin:0;padding:0}.wcf-template-header li:focus{outline:0}.wcf-template-header .filter-links li{margin:0;display:inline-block}.wcf-template-header .filter-links li a:focus,.wcf-template-header .filter-links li a:hove{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-template-header .filter-links li .current{color:#000;border-bottom:2px solid #f16334;font-weight:600}.wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8}.wcf-search-form{margin-left:2em;padding-left:0;text-align:left;margin-top:1em;margin-bottom:1em;position:relative}.wcf-template-notice{display:none}#wcf-start-from-scratch{text-align:center}#wcf-start-from-scratch .inner{background:0 0;-webkit-box-shadow:none;box-shadow:none;width:94%;margin:0 auto;float:none;position:absolute;top:40%}#wcf-scratch-steps-categories{display:inline-block}#wcf-scratch-steps-categories select{-webkit-border-radius:0;border-radius:0;height:29px;border:1px solid;border-color:#9e9e9e;border-width:1px;-webkit-box-shadow:none;box-shadow:none;padding:2px;line-height:29px}#wcf-start-from-scratch .description{margin-bottom:2em}#wcf-remote-step-importer .wcf-search-form{display:none}.wcf-search-form .wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8;background:0 0;border-bottom:1px solid #ccc;font-size:1em}.wcf-search-form .wcf-flow-search-input:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#ccc}.cartflows-preview-flow-steps li{display:inline-block;margin:0 1em;position:relative}.cartflows-flow-import-blank.updating-message:before{vertical-align:text-bottom}#wpwrap .cartflows-step-loading h2,#wpwrap .template-message-block h2{font-size:1.5em;margin:0 0 .5em 0;padding:8px 12px;line-height:1.4}#wpwrap .cartflows-step-loading p,#wpwrap .template-message-block p{font-size:1.2em}#wpwrap .cartflows-step-loading .spinner{vertical-align:initial}.wcf-flow-type{position:absolute;left:0;top:0;padding:3px 10px;color:#fff}.wcf-flow-type.pro{background:#f06262}.wcf-templates-popup-overlay{position:fixed;height:100%;width:100%;top:0;right:0;background:rgba(0,0,0,.7);-webkit-transition:opacity .5s;transition:opacity .5s;visibility:hidden;opacity:0;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:none;transition:none}.wcf-templates-popup-overlay.open{visibility:visible;opacity:1;z-index:9999}.wcf-templates-popup-content{max-width:1200px;background-color:#fff;position:absolute;-webkit-border-radius:3px;border-radius:3px;top:40%;right:50%;-webkit-transform:translate(50%,-35%);-ms-transform:translate(50%,-35%);transform:translate(50%,-35%);width:70%;min-height:450px;overflow:hidden}.wcf-templates-popup-content .inner{background:#fff;position:relative;padding:8px 8px 0 8px;display:block;float:right;margin:15px;text-align:center;-webkit-box-shadow:0 0 5px 1px rgba(204,204,204,.3);box-shadow:0 0 5px 1px rgba(204,204,204,.3)}@media only screen and (max-width:480px){.wcf-templates-popup-content{width:90%}.wcf-template-header{display:block!important;padding:15px 15px 0 15px!important}.wcf-popup-close-wrap{position:absolute;top:10px;left:5px}}@media only screen and (min-width:768px){.wcf-templates-popup-content .inner{width:-webkit-calc(25% - 30px);width:calc(25% - 30px)}}html.wcf-popup-open{overflow:hidden}.wcf-button-wrap{margin-top:0;position:absolute;top:10px;right:110px}.wcf-steps-loading #wcf-remote-step-list{display:none!important}#wcf-remote-content{background-color:#f5f5f5;overflow-y:auto;min-height:450px;max-height:450px;padding:20px 20px 20px 20px;clear:both}#wcf-remote-content #wcf-start-from-scratch h1{font-size:23px;font-weight:400;margin:0 0 1em 0;padding:9px 0 4px;line-height:29px}.wcf-template-list-wrap .template-name{margin:0;text-align:right;font-size:13px}.wcf-template-list-wrap img{width:100%;vertical-align:middle}.wcf-templates-popup-content .template{margin:0;position:relative;overflow:hidden}.wcf-tab.nav-tabs{overflow:hidden;margin:0}.wcf-template-header{-moz-box-align:center;align-items:center;background:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.2);box-shadow:0 0 8px rgba(0,0,0,.2);-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;-moz-box-pack:justify;justify-content:space-between;padding:0 15px;min-height:50px}.wcf-search-form:after{content:"\f179";display:inline-block;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.5em;top:.5em;color:#81868a}.wcf-template-logo-wrap{font-size:16px;font-weight:600;text-align:center}.wcf-template-logo-wrap .wcf-cartflows-logo-img{vertical-align:middle}.wcf-tab.nav-tabs:before{display:table;content:""}.wcf-tab.nav-tabs:after{clear:both}.wcf-tab.nav-tabs>li{display:inline-block;padding:15px 0;margin:0;font-weight:400}.wcf-tab.nav-tabs>li.active{border-bottom:3px solid #f16334;font-weight:600}.wcf-template-header .filter-links li>a{border-color:transparent;margin:0}.wcf-tab.nav-tabs>li:active,.wcf-tab.nav-tabs>li:focus,.wcf-tab.nav-tabs>li>a:focus,.wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li:focus .wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-tab.nav-tabs>li>a,.wcf-template-header .filter-links>li>a,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{padding:15px;color:#555;text-decoration:none}.wcf-nav-section-content{display:none}.wcf-nav-section-content.active{display:block;overflow:hidden}.wcf-popup-close-wrap{width:35px;text-align:center;border-right:1px #eee solid}.wcf-popup-close-wrap .close-icon{cursor:pointer}.wcf-popup-close-wrap .wcf-cartflow-icons{pointer-events:none;font-size:20px;height:20px;width:20px;line-height:20px;opacity:.7}.wcf-popup-close-wrap .close-icon:hover .wcf-cartflow-icons{opacity:1}.wcf-templates-popup-content .spinner{position:absolute;top:50%;right:50%;bottom:0;left:0;max-width:100%;max-height:100%;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%);z-index:99999}.wcf-templates-popup-content .wcf-template-header .wcf-tab-wrapper{margin:0 auto}#wcf-upcoming-page-builders .description{font-size:1rem;margin:4em 0 0 0;text-align:center}.flow-type-filter-links{display:none}#wcf-remote-filters{padding:0 15px}#wcf-remote-filters a{text-decoration:none}#wcf-remote-filters .filter-links li:focus,#wcf-remote-filters a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-filters .filter-links li a{border-bottom:none}#wcf-remote-filters .filter-links li:first-child a{margin-right:0}#wcf-remote-filters .filter-links li:last-child a{margin-left:0}#wcf-remote-filters .filter-links li .current,#wcf-remote-filters .filter-links li a:focus,#wcf-remote-filters .filter-links li a:hover{color:#f16334}.wrap .wcf-page-builder-notice .notice{margin:5px 15px}#wcf-api-notice-block{text-align:center;margin-top:5em}.wcf-templates-popup-overlay a{-webkit-transition:none;transition:none}.wcf-notice-wrap .notice{display:inline-block}.wcf-learn-how i{font-size:1rem;vertical-align:middle}.wcf-learn-how a{text-decoration:none}#wcf-remote-content .wcf-install-plugin::focus{border-color:none;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-content .wcf-install-plugin.updating-message{background:0 0;padding:0;font-size:1rem;-webkit-box-shadow:none;box-shadow:none;border:none;margin:0 3px 0 0}.wcf-page-builder-message{margin:5em auto 0 auto;width:700px}.wcf-page-builder-message p{font-size:1rem}.wcf-page-builder-message i{font-size:1rem;vertical-align:middle}.wcf-page-builder-message a{text-decoration:none;margin:1.5em 0 0 0}.cartflows-ie .postbox{padding:1em}.cartflows-ie{padding-top:2em;padding-left:2em}.admin_page_flow_exporter .notice,.admin_page_flow_importer .notice{margin:1em 0 0 0}.cartflows-website-unreachable{padding:1em 2em}.wcf-notice-wrap{margin-top:20px;font-size:15px;color:red}.wcf-activate-wc{text-decoration:none}.wcf-activate-wc.button{border:none;-webkit-box-shadow:none;box-shadow:none}.wcf-hidden{display:none}
assets/min-css/import.min.css CHANGED
@@ -1 +1 @@
1
- .no-elementor-notice{border-left:none;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding-left:0}.no-elementor-notice span{color:#f16334;font-size:18px;vertical-align:middle}.site-preview{background:#c5c5c5;display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden}.template.importing .site-preview:after,.template:hover .site-preview:after{opacity:.3}.template.importing .site-preview,.template:hover .site-preview{background:#fff;cursor:pointer}.template .site-preview:after{content:"";background:#fff;opacity:0;top:0;content:"";display:block;top:0;position:absolute;padding-top:66.66666%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out;left:0;right:0;bottom:0}.template .notice{padding:.5em;background:rgba(0,0,0,.7);color:#fff;font-weight:400;border:#ffdead;font-size:11px;text-decoration:none;position:absolute;width:100%;vertical-align:middle;top:50%;-webkit-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);right:0;left:0;z-index:4;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}#wcf_create_notice{display:none}.preview:focus,.preview:hover{color:#fff;-webkit-box-shadow:none;box-shadow:none}.preview{text-decoration:none;opacity:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:22%;left:22%;z-index:4;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:13px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:10px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.template-id-container{font-size:15px;font-weight:600;margin:0;padding:10px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65);position:relative}.template-actions{opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;right:0;top:0;padding:5px 5px 0 5px;background:rgba(244,244,244,.7);border-left:1px solid rgba(0,0,0,.05)}.template.importing .preview,.template.importing .template-actions,.template:hover .preview,.template:hover .template-actions,.wcf-step-content .template-actions{opacity:1}.wcf-remote-list .template{position:relative;overflow:hidden}.wcf-remote-list h3{margin-bottom:1em;margin-top:0;font-size:15px;font-weight:600;margin:0;padding:0;text-align:left}.wcf-remote-list img{max-width:100%;vertical-align:middle}.wcf-remote-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cartflows-steps-list img{width:100%}#cartflows-steps-list .title{font-weight:700;color:#474747;line-height:2;background:#f7f7f7;padding:.5em 1em}#cartflows-steps-list .image-wrap{-webkit-background-size:cover;background-size:cover;overflow:hidden}#cartflows-steps .close{display:inline-block;padding:2em;cursor:pointer}.template-message-block{text-align:center;margin:0 auto;padding:4em 0}.templator #TB_ajaxContent{width:100%!important}.template-message-block .description{font-style:normal}.template-message-block .spinner{float:none;margin:0}.cartflows-steps-popup{position:fixed;left:0;right:0;top:0;bottom:0;z-index:99999;background:#fff;overflow-y:scroll}.cartflows-steps-popup .notice{max-width:700px;margin:0 auto}.cartflows-load-steps-library .dashicons{height:auto;width:auto;line-height:normal;margin:0 5px 0 0;vertical-align:initial;font-size:100%}.cartflows-load-steps .dashicons{vertical-align:text-bottom}#TB_window{width:100%!important;margin:0 auto!important;text-align:center!important;position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important}#TB_iframeContent{width:100%!important;height:100%!important}@media only screen and (min-device-width :320px) and (max-device-width :1024px){#TB_iframeContent-wrapper{position:fixed;right:0;bottom:50px;left:0;top:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}}#TB_window #TB_ajaxWindowTitle{font-size:1.2rem;display:inline-block;width:auto;padding:0}#TB_window #TB_closeWindowButton{position:relative}.tb-close-icon:before{vertical-align:middle}#TB_window{text-align:center}#TB_iframeContent.tablet{width:768px!important;height:1024px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.tablet.landscape{width:1024px!important}#TB_iframeContent.mobile{width:360px!important;height:640px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.mobile.landscape{width:360px!important}#TB_closeAjaxWindow{float:right}#TB_window.thickbox-loading{margin:0!important}div#TB_window{background-color:#fff}#TB_window #TB_title{color:#0a0c0d;text-align:left;bottom:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-pack:justify;-webkit-justify-content:space-between;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;padding:1em 1em 1em 1.5em}@media all and (min-width:769px){#TB_window #TB_title{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}}#TB_window.mobile,#TB_window.tablet{overflow-y:scroll}.top #TB_iframeContent-wrapper{bottom:0;top:80px}#TB_window.top #TB_title{top:0}#TB_window #TB_closeWindowButton:focus .tb-close-icon{-webkit-box-shadow:none;box-shadow:none;color:#666}@media all and (max-width:768px){#TB_closeAjaxWindow{padding-right:0}#TB_window #TB_closeWindowButton,#TB_window .tb-close-icon{width:80px}}.responsive-view .dashicons{color:#ddd}.responsive-view .active{color:#111}.responsive-view a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#TB_window.mobile #TB_iframeContent,#TB_window.tablet #TB_iframeContent{margin-bottom:50px;margin-top:50px}.responsive-view a{color:#666;cursor:pointer;display:inline-block;padding:1em;vertical-align:middle;text-decoration:none}#TB_closeAjaxWindow .tb-close-icon{position:relative}.site-loading{display:none;position:absolute;left:50%;top:50%;text-align:center;color:#555;-webkit-transform:translate(-50%,-40%);-ms-transform:translate(-50%,-40%);transform:translate(-50%,-40%)}.top .site-loading{top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.site-loading h3{font-size:33px;font-weight:600;margin:0 0 .8em 0}.site-loading p{margin:0}.cartflows-thickbox-loading .site-loading{display:block}.cartflows-thickbox-loading #TB_iframeContent,.cartflows-thickbox-loading #TB_iframeContent-wrapper{display:none}.wcf-remote-list:after,.wcf-remote-list:before{content:"";display:table}.wcf-remote-list::after{content:"";display:table;clear:both}.wcf-template-header .filter-count{line-height:normal}#wcf-page-builders{display:none}#wcf-remote-flow-filters>div,#wcf-remote-step-filters>div{display:inline-block}.wcf-template-header .filter-links{margin:0;padding:0}.wcf-template-header li:focus{outline:0}.wcf-template-header .filter-links li{margin:0;display:inline-block}.wcf-template-header .filter-links li a:focus,.wcf-template-header .filter-links li a:hove{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-template-header .filter-links li .current{color:#000;border-bottom:2px solid #f16334;font-weight:600}.wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8}.wcf-search-form{margin-right:2em;padding-right:0;text-align:right;margin-top:1em;margin-bottom:1em;position:relative}.wcf-template-notice{display:none}#wcf-start-from-scratch{text-align:center}#wcf-start-from-scratch .inner{background:0 0;-webkit-box-shadow:none;box-shadow:none;width:94%;margin:0 auto;float:none;position:absolute;top:40%}#wcf-scratch-steps-categories{display:inline-block}#wcf-scratch-steps-categories select{-webkit-border-radius:0;border-radius:0;height:29px;border:1px solid;border-color:#9e9e9e;border-width:1px;-webkit-box-shadow:none;box-shadow:none;padding:2px;line-height:29px}#wcf-start-from-scratch .description{margin-bottom:2em}#wcf-remote-step-importer .wcf-search-form{display:none}.wcf-search-form .wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8;background:0 0;border-bottom:1px solid #ccc;font-size:1em}.wcf-search-form .wcf-flow-search-input:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#ccc}.cartflows-preview-flow-steps li{display:inline-block;margin:0 1em;position:relative}.cartflows-flow-import-blank.updating-message:before{vertical-align:text-bottom}#wpwrap .cartflows-step-loading h2,#wpwrap .template-message-block h2{font-size:1.5em;margin:0 0 .5em 0;padding:8px 12px;line-height:1.4}#wpwrap .cartflows-step-loading p,#wpwrap .template-message-block p{font-size:1.2em}#wpwrap .cartflows-step-loading .spinner{vertical-align:initial}.wcf-flow-type{position:absolute;right:0;top:0;padding:3px 10px;color:#fff}.wcf-flow-type.pro{background:#f06262}.wcf-templates-popup-overlay{position:fixed;height:100%;width:100%;top:0;left:0;background:rgba(0,0,0,.7);-webkit-transition:opacity .5s;transition:opacity .5s;visibility:hidden;opacity:0;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:none;transition:none}.wcf-templates-popup-overlay.open{visibility:visible;opacity:1;z-index:9999}.wcf-templates-popup-content{max-width:1200px;background-color:#fff;position:absolute;-webkit-border-radius:3px;border-radius:3px;top:40%;left:50%;-webkit-transform:translate(-50%,-35%);-ms-transform:translate(-50%,-35%);transform:translate(-50%,-35%);width:70%;min-height:450px;overflow:hidden}.wcf-templates-popup-content .inner{background:#fff;position:relative;padding:8px 8px 0 8px;display:block;float:left;margin:15px;text-align:center;-webkit-box-shadow:0 0 5px 1px rgba(204,204,204,.3);box-shadow:0 0 5px 1px rgba(204,204,204,.3)}@media only screen and (max-width:480px){.wcf-templates-popup-content{width:90%}.wcf-template-header{display:block!important;padding:15px 15px 0 15px!important}.wcf-popup-close-wrap{position:absolute;top:10px;right:5px}}@media only screen and (min-width:768px){.wcf-templates-popup-content .inner{width:-webkit-calc(25% - 30px);width:calc(25% - 30px)}}html.wcf-popup-open{overflow:hidden}.wcf-button-wrap{margin-top:0;position:absolute;top:10px;left:110px}.wcf-steps-loading #wcf-remote-step-list{display:none!important}#wcf-remote-content{background-color:#f5f5f5;overflow-y:auto;min-height:450px;max-height:450px;padding:20px 20px 20px 20px;clear:both}#wcf-remote-content #wcf-start-from-scratch h1{font-size:23px;font-weight:400;margin:0 0 1em 0;padding:9px 0 4px;line-height:29px}.wcf-template-list-wrap .template-name{margin:0;text-align:left;font-size:13px}.wcf-template-list-wrap img{width:100%;vertical-align:middle}.wcf-templates-popup-content .template{margin:0;position:relative;overflow:hidden}.wcf-tab.nav-tabs{overflow:hidden;margin:0}.wcf-template-header{-moz-box-align:center;align-items:center;background:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.2);box-shadow:0 0 8px rgba(0,0,0,.2);-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;-moz-box-pack:justify;justify-content:space-between;padding:0 15px;min-height:50px}.wcf-search-form:after{content:"\f179";display:inline-block;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;right:.5em;top:.5em;color:#81868a}.wcf-template-logo-wrap{font-size:16px;font-weight:600;text-align:center}.wcf-template-logo-wrap .wcf-cartflows-logo-img{vertical-align:middle}.wcf-tab.nav-tabs:before{display:table;content:""}.wcf-tab.nav-tabs:after{clear:both}.wcf-tab.nav-tabs>li{display:inline-block;padding:15px 0;margin:0;font-weight:400}.wcf-tab.nav-tabs>li.active{border-bottom:3px solid #f16334;font-weight:600}.wcf-template-header .filter-links li>a{border-color:transparent;margin:0}.wcf-tab.nav-tabs>li:active,.wcf-tab.nav-tabs>li:focus,.wcf-tab.nav-tabs>li>a:focus,.wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li:focus .wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-tab.nav-tabs>li>a,.wcf-template-header .filter-links>li>a,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{padding:15px;color:#555;text-decoration:none}.wcf-nav-section-content{display:none}.wcf-nav-section-content.active{display:block;overflow:hidden}.wcf-popup-close-wrap{width:35px;text-align:center;border-left:1px #eee solid}.wcf-popup-close-wrap .close-icon{cursor:pointer}.wcf-popup-close-wrap .wcf-cartflow-icons{pointer-events:none;font-size:20px;height:20px;width:20px;line-height:20px;opacity:.7}.wcf-popup-close-wrap .close-icon:hover .wcf-cartflow-icons{opacity:1}.wcf-templates-popup-content .spinner{position:absolute;top:50%;left:50%;bottom:0;right:0;max-width:100%;max-height:100%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:99999}.wcf-templates-popup-content .wcf-template-header .wcf-tab-wrapper{margin:0 auto}#wcf-upcoming-page-builders .description{font-size:1rem;margin:4em 0 0 0;text-align:center}.flow-type-filter-links{display:none}#wcf-remote-filters{padding:0 15px}#wcf-remote-filters a{text-decoration:none}#wcf-remote-filters .filter-links li:focus,#wcf-remote-filters a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-filters .filter-links li a{border-bottom:none}#wcf-remote-filters .filter-links li:first-child a{margin-left:0}#wcf-remote-filters .filter-links li:last-child a{margin-right:0}#wcf-remote-filters .filter-links li .current,#wcf-remote-filters .filter-links li a:focus,#wcf-remote-filters .filter-links li a:hover{color:#f16334}.wrap .wcf-page-builder-notice .notice{margin:5px 15px}#wcf-api-notice-block{text-align:center;margin-top:5em}.wcf-templates-popup-overlay a{-webkit-transition:none;transition:none}.wcf-notice-wrap .notice{display:inline-block}.wcf-learn-how i{font-size:1rem;vertical-align:middle}.wcf-learn-how a{text-decoration:none}#wcf-remote-content .wcf-install-plugin::focus{border-color:none;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-content .wcf-install-plugin.updating-message{background:0 0;padding:0;font-size:1rem;-webkit-box-shadow:none;box-shadow:none;border:none;margin:0 0 0 3px}.wcf-page-builder-message{margin:5em auto 0 auto;width:700px}.wcf-page-builder-message p{font-size:1rem}.wcf-page-builder-message i{font-size:1rem;vertical-align:middle}.wcf-page-builder-message a{text-decoration:none;margin:1.5em 0 0 0}.cartflows-ie .postbox{padding:1em}.cartflows-ie{padding-top:2em;padding-right:2em}.admin_page_flow_exporter .notice,.admin_page_flow_importer .notice{margin:1em 0 0 0}.cartflows-website-unreachable{padding:1em 2em}
1
+ .no-elementor-notice{border-left:none;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding-left:0}.no-elementor-notice span{color:#f16334;font-size:18px;vertical-align:middle}.site-preview{background:#c5c5c5;display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden}.template.importing .site-preview:after,.template:hover .site-preview:after{opacity:.3}.template.importing .site-preview,.template:hover .site-preview{background:#fff;cursor:pointer}.template .site-preview:after{content:"";background:#fff;opacity:0;top:0;content:"";display:block;top:0;position:absolute;padding-top:66.66666%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out;left:0;right:0;bottom:0}.template .notice{padding:.6em;background:rgba(0,0,0,.8);color:#fff;font-weight:400;border:none;font-size:13px;text-decoration:none;position:absolute;width:100%;vertical-align:middle;bottom:0;margin:0;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);right:0;left:0;z-index:4;text-align:center;-webkit-border-radius:3px;border-radius:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;-webkit-font-smoothing:antialiased}.template .notice a{color:#f16334}.template .notice p{padding:0;margin:0}#wcf_create_notice{display:none}.preview:focus,.preview:hover{color:#fff;-webkit-box-shadow:none;box-shadow:none}.preview{text-decoration:none;opacity:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:22%;left:22%;z-index:4;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:13px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:10px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.template-id-container{font-size:15px;font-weight:600;margin:0;padding:10px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65);position:relative}.template-actions{opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;right:0;top:0;padding:5px 5px 0 5px;background:rgba(244,244,244,.7);border-left:1px solid rgba(0,0,0,.05)}.template.importing .preview,.template.importing .template-actions,.template:hover .preview,.template:hover .template-actions,.wcf-step-content .template-actions{opacity:1}.wcf-remote-list .template{position:relative;overflow:hidden}.wcf-remote-list h3{margin-bottom:1em;margin-top:0;font-size:15px;font-weight:600;margin:0;padding:0;text-align:left}.wcf-remote-list img{max-width:100%;vertical-align:middle}.wcf-remote-list *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cartflows-steps-list img{width:100%}#cartflows-steps-list .title{font-weight:700;color:#474747;line-height:2;background:#f7f7f7;padding:.5em 1em}#cartflows-steps-list .image-wrap{-webkit-background-size:cover;background-size:cover;overflow:hidden}#cartflows-steps .close{display:inline-block;padding:2em;cursor:pointer}.template-message-block{text-align:center;margin:0 auto;padding:4em 0}.templator #TB_ajaxContent{width:100%!important}.template-message-block .description{font-style:normal}.template-message-block .spinner{float:none;margin:0}.cartflows-steps-popup{position:fixed;left:0;right:0;top:0;bottom:0;z-index:99999;background:#fff;overflow-y:scroll}.cartflows-steps-popup .notice{max-width:700px;margin:0 auto}.cartflows-load-steps-library .dashicons{height:auto;width:auto;line-height:normal;margin:0 5px 0 0;vertical-align:initial;font-size:100%}.cartflows-load-steps .dashicons{vertical-align:text-bottom}#TB_window{width:100%!important;margin:0 auto!important;text-align:center!important;position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important}#TB_iframeContent{width:100%!important;height:100%!important}@media only screen and (min-device-width :320px) and (max-device-width :1024px){#TB_iframeContent-wrapper{position:fixed;right:0;bottom:50px;left:0;top:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}}#TB_window #TB_ajaxWindowTitle{font-size:1.2rem;display:inline-block;width:auto;padding:0}#TB_window #TB_closeWindowButton{position:relative}.tb-close-icon:before{vertical-align:middle}#TB_window{text-align:center}#TB_iframeContent.tablet{width:768px!important;height:1024px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.tablet.landscape{width:1024px!important}#TB_iframeContent.mobile{width:360px!important;height:640px!important;background:#111;padding:40px 10px 70px;-webkit-border-radius:30px;border-radius:30px}#TB_iframeContent.mobile.landscape{width:360px!important}#TB_closeAjaxWindow{float:right}#TB_window.thickbox-loading{margin:0!important}div#TB_window{background-color:#fff}#TB_window #TB_title{color:#0a0c0d;text-align:left;bottom:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-pack:justify;-webkit-justify-content:space-between;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;padding:1em 1em 1em 1.5em}@media all and (min-width:769px){#TB_window #TB_title{-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}}#TB_window.mobile,#TB_window.tablet{overflow-y:scroll}.top #TB_iframeContent-wrapper{bottom:0;top:80px}#TB_window.top #TB_title{top:0}#TB_window #TB_closeWindowButton:focus .tb-close-icon{-webkit-box-shadow:none;box-shadow:none;color:#666}@media all and (max-width:768px){#TB_closeAjaxWindow{padding-right:0}#TB_window #TB_closeWindowButton,#TB_window .tb-close-icon{width:80px}}.responsive-view .dashicons{color:#ddd}.responsive-view .active{color:#111}.responsive-view a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#TB_window.mobile #TB_iframeContent,#TB_window.tablet #TB_iframeContent{margin-bottom:50px;margin-top:50px}.responsive-view a{color:#666;cursor:pointer;display:inline-block;padding:1em;vertical-align:middle;text-decoration:none}#TB_closeAjaxWindow .tb-close-icon{position:relative}.site-loading{display:none;position:absolute;left:50%;top:50%;text-align:center;color:#555;-webkit-transform:translate(-50%,-40%);-ms-transform:translate(-50%,-40%);transform:translate(-50%,-40%)}.top .site-loading{top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.site-loading h3{font-size:33px;font-weight:600;margin:0 0 .8em 0}.site-loading p{margin:0}.cartflows-thickbox-loading .site-loading{display:block}.cartflows-thickbox-loading #TB_iframeContent,.cartflows-thickbox-loading #TB_iframeContent-wrapper{display:none}.wcf-remote-list:after,.wcf-remote-list:before{content:"";display:table}.wcf-remote-list::after{content:"";display:table;clear:both}.wcf-template-header .filter-count{line-height:normal}#wcf-page-builders{display:none}#wcf-remote-flow-filters>div,#wcf-remote-step-filters>div{display:inline-block}.wcf-template-header .filter-links{margin:0;padding:0}.wcf-template-header li:focus{outline:0}.wcf-template-header .filter-links li{margin:0;display:inline-block}.wcf-template-header .filter-links li a:focus,.wcf-template-header .filter-links li a:hove{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-template-header .filter-links li .current{color:#000;border-bottom:2px solid #f16334;font-weight:600}.wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8}.wcf-search-form{margin-right:2em;padding-right:0;text-align:right;margin-top:1em;margin-bottom:1em;position:relative}.wcf-template-notice{display:none}#wcf-start-from-scratch{text-align:center}#wcf-start-from-scratch .inner{background:0 0;-webkit-box-shadow:none;box-shadow:none;width:94%;margin:0 auto;float:none;position:absolute;top:40%}#wcf-scratch-steps-categories{display:inline-block}#wcf-scratch-steps-categories select{-webkit-border-radius:0;border-radius:0;height:29px;border:1px solid;border-color:#9e9e9e;border-width:1px;-webkit-box-shadow:none;box-shadow:none;padding:2px;line-height:29px}#wcf-start-from-scratch .description{margin-bottom:2em}#wcf-remote-step-importer .wcf-search-form{display:none}.wcf-search-form .wcf-flow-search-input{border:none;-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #eee;line-height:1.8;background:0 0;border-bottom:1px solid #ccc;font-size:1em}.wcf-search-form .wcf-flow-search-input:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#ccc}.cartflows-preview-flow-steps li{display:inline-block;margin:0 1em;position:relative}.cartflows-flow-import-blank.updating-message:before{vertical-align:text-bottom}#wpwrap .cartflows-step-loading h2,#wpwrap .template-message-block h2{font-size:1.5em;margin:0 0 .5em 0;padding:8px 12px;line-height:1.4}#wpwrap .cartflows-step-loading p,#wpwrap .template-message-block p{font-size:1.2em}#wpwrap .cartflows-step-loading .spinner{vertical-align:initial}.wcf-flow-type{position:absolute;right:0;top:0;padding:3px 10px;color:#fff}.wcf-flow-type.pro{background:#f06262}.wcf-templates-popup-overlay{position:fixed;height:100%;width:100%;top:0;left:0;background:rgba(0,0,0,.7);-webkit-transition:opacity .5s;transition:opacity .5s;visibility:hidden;opacity:0;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:none;transition:none}.wcf-templates-popup-overlay.open{visibility:visible;opacity:1;z-index:9999}.wcf-templates-popup-content{max-width:1200px;background-color:#fff;position:absolute;-webkit-border-radius:3px;border-radius:3px;top:40%;left:50%;-webkit-transform:translate(-50%,-35%);-ms-transform:translate(-50%,-35%);transform:translate(-50%,-35%);width:70%;min-height:450px;overflow:hidden}.wcf-templates-popup-content .inner{background:#fff;position:relative;padding:8px 8px 0 8px;display:block;float:left;margin:15px;text-align:center;-webkit-box-shadow:0 0 5px 1px rgba(204,204,204,.3);box-shadow:0 0 5px 1px rgba(204,204,204,.3)}@media only screen and (max-width:480px){.wcf-templates-popup-content{width:90%}.wcf-template-header{display:block!important;padding:15px 15px 0 15px!important}.wcf-popup-close-wrap{position:absolute;top:10px;right:5px}}@media only screen and (min-width:768px){.wcf-templates-popup-content .inner{width:-webkit-calc(25% - 30px);width:calc(25% - 30px)}}html.wcf-popup-open{overflow:hidden}.wcf-button-wrap{margin-top:0;position:absolute;top:10px;left:110px}.wcf-steps-loading #wcf-remote-step-list{display:none!important}#wcf-remote-content{background-color:#f5f5f5;overflow-y:auto;min-height:450px;max-height:450px;padding:20px 20px 20px 20px;clear:both}#wcf-remote-content #wcf-start-from-scratch h1{font-size:23px;font-weight:400;margin:0 0 1em 0;padding:9px 0 4px;line-height:29px}.wcf-template-list-wrap .template-name{margin:0;text-align:left;font-size:13px}.wcf-template-list-wrap img{width:100%;vertical-align:middle}.wcf-templates-popup-content .template{margin:0;position:relative;overflow:hidden}.wcf-tab.nav-tabs{overflow:hidden;margin:0}.wcf-template-header{-moz-box-align:center;align-items:center;background:#fff;-webkit-box-shadow:0 0 8px rgba(0,0,0,.2);box-shadow:0 0 8px rgba(0,0,0,.2);-js-display:flex;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;-moz-box-pack:justify;justify-content:space-between;padding:0 15px;min-height:50px}.wcf-search-form:after{content:"\f179";display:inline-block;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;right:.5em;top:.5em;color:#81868a}.wcf-template-logo-wrap{font-size:16px;font-weight:600;text-align:center}.wcf-template-logo-wrap .wcf-cartflows-logo-img{vertical-align:middle}.wcf-tab.nav-tabs:before{display:table;content:""}.wcf-tab.nav-tabs:after{clear:both}.wcf-tab.nav-tabs>li{display:inline-block;padding:15px 0;margin:0;font-weight:400}.wcf-tab.nav-tabs>li.active{border-bottom:3px solid #f16334;font-weight:600}.wcf-template-header .filter-links li>a{border-color:transparent;margin:0}.wcf-tab.nav-tabs>li:active,.wcf-tab.nav-tabs>li:focus,.wcf-tab.nav-tabs>li>a:focus,.wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li:focus .wcf-template-header .filter-links>li:active,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{outline:0;-webkit-box-shadow:none;box-shadow:none}.wcf-tab.nav-tabs>li>a,.wcf-template-header .filter-links>li>a,.wcf-template-header .filter-links>li>a:focus,.wcf-template-header .filter-links>li>a:hover{padding:15px;color:#555;text-decoration:none}.wcf-nav-section-content{display:none}.wcf-nav-section-content.active{display:block;overflow:hidden}.wcf-popup-close-wrap{width:35px;text-align:center;border-left:1px #eee solid}.wcf-popup-close-wrap .close-icon{cursor:pointer}.wcf-popup-close-wrap .wcf-cartflow-icons{pointer-events:none;font-size:20px;height:20px;width:20px;line-height:20px;opacity:.7}.wcf-popup-close-wrap .close-icon:hover .wcf-cartflow-icons{opacity:1}.wcf-templates-popup-content .spinner{position:absolute;top:50%;left:50%;bottom:0;right:0;max-width:100%;max-height:100%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:99999}.wcf-templates-popup-content .wcf-template-header .wcf-tab-wrapper{margin:0 auto}#wcf-upcoming-page-builders .description{font-size:1rem;margin:4em 0 0 0;text-align:center}.flow-type-filter-links{display:none}#wcf-remote-filters{padding:0 15px}#wcf-remote-filters a{text-decoration:none}#wcf-remote-filters .filter-links li:focus,#wcf-remote-filters a:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-filters .filter-links li a{border-bottom:none}#wcf-remote-filters .filter-links li:first-child a{margin-left:0}#wcf-remote-filters .filter-links li:last-child a{margin-right:0}#wcf-remote-filters .filter-links li .current,#wcf-remote-filters .filter-links li a:focus,#wcf-remote-filters .filter-links li a:hover{color:#f16334}.wrap .wcf-page-builder-notice .notice{margin:5px 15px}#wcf-api-notice-block{text-align:center;margin-top:5em}.wcf-templates-popup-overlay a{-webkit-transition:none;transition:none}.wcf-notice-wrap .notice{display:inline-block}.wcf-learn-how i{font-size:1rem;vertical-align:middle}.wcf-learn-how a{text-decoration:none}#wcf-remote-content .wcf-install-plugin::focus{border-color:none;-webkit-box-shadow:none;box-shadow:none}#wcf-remote-content .wcf-install-plugin.updating-message{background:0 0;padding:0;font-size:1rem;-webkit-box-shadow:none;box-shadow:none;border:none;margin:0 0 0 3px}.wcf-page-builder-message{margin:5em auto 0 auto;width:700px}.wcf-page-builder-message p{font-size:1rem}.wcf-page-builder-message i{font-size:1rem;vertical-align:middle}.wcf-page-builder-message a{text-decoration:none;margin:1.5em 0 0 0}.cartflows-ie .postbox{padding:1em}.cartflows-ie{padding-top:2em;padding-right:2em}.admin_page_flow_exporter .notice,.admin_page_flow_importer .notice{margin:1em 0 0 0}.cartflows-website-unreachable{padding:1em 2em}.wcf-notice-wrap{margin-top:20px;font-size:15px;color:red}.wcf-activate-wc{text-decoration:none}.wcf-activate-wc.button{border:none;-webkit-box-shadow:none;box-shadow:none}.wcf-hidden{display:none}
assets/min-js/import.min.js CHANGED
@@ -1 +1 @@
1
- var CartFlowsAjaxQueue=function(){var s=[];return{add:function(t){s.push(t)},remove:function(t){-1<jQuery.inArray(t,s)&&s.splice($.inArray(t,s),1)},run:function(){var t,e=this;s.length?(t=s[0].complete,s[0].complete=function(){"function"==typeof t&&t(),s.shift(),e.run.apply(e,[])},jQuery.ajax(s[0])):e.tid=setTimeout(function(){e.run.apply(e,[])},1e3)},stop:function(){s=[],clearTimeout(this.tid)}}}();!function(c){CartFlowsImport={doc:c(document),wrap:c(".wcf-flow-steps-data-wrap"),inner:c(".wcf-flow-steps-data-wrap-importer"),post_id:c("#post_ID").val(),_ref:null,_api_step_type:{},_api_params:{},all_steps:0,remaining_steps:0,remaining_install_plugins:0,remaining_active_plugins:0,init:function(){if(this._bind(),"other"!==CartFlowsImportVars.default_page_builder&&(c(".post-type-cartflows_flow").hasClass("edit-php")&&this._process_cache_remote_flows(),c(".post-type-cartflows_flow").hasClass("post-php")&&this._process_cache_remote_steps()),c(".post-type-cartflows_flow").hasClass("edit-php")&&null!==this._getParamFromURL("add-new-flow")&&this._render_remote_flows(),c(".post-type-cartflows_flow").hasClass("post-php")&&null!==this._getParamFromURL("add-new-step")&&this._render_remote_steps(),this._getParamFromURL("highlight-step-id")){var t=c('.wcf-step-wrap[data-id="'+this._getParamFromURL("highlight-step-id")+'"]');t.length&&c("html, body").animate({scrollTop:t.offset().top},1500)}if(c(".post-type-cartflows_flow").hasClass("edit-php")){var e=c(".edit-php.post-type-cartflows_flow").find(".page-title-action:first");e.after('<a href="'+CartFlowsImportVars.export_url+'" class="page-title-action">Export</a>'),e.after('<a href="'+CartFlowsImportVars.import_url+'" class="page-title-action">Import</a>')}},_getParamFromURL:function(t,e){e||(e=window.location.href),t=t.replace(/[\[\]]/g,"\\$&");var s=new RegExp("[?&]"+t+"(=([^&#]*)|&|#|$)").exec(e);return s?s[2]?decodeURIComponent(s[2].replace(/\+/g," ")):"":null},_bind:function(){var t=CartFlowsImport;t.doc.on("click",".wcf-install-plugin",t._install_plugin),t.doc.on("cartflows-api-request-fail",t._api_request_failed),t.doc.on("click","#wcf-get-started-steps a, .wcf-create-from-scratch-link",t._toggle_ready_templates),t.doc.on("click",".cartflows-flow-import-blank",t._create_default_flow),t.doc.on("click","#wcf-remote-flow-importer .wcf-page-builder-links a",t._filterFlowPageBuilderClick),t.doc.on("click","#wcf-remote-step-importer #wcf-categories .step-type-filter-links a",t._filterBlankStepCategoryClick),t.doc.on("change","#wcf-remote-step-importer #wcf-scratch-steps-categories .step-type-filter-links",t._filterBlankStepCategoryChange),t.doc.on("click","#wcf-remote-step-importer .wcf-page-builder-links a",t._filterStepPageBuilderClick),t.doc.on("click",".cartflows-step-import-blank:not(.get-pro)",t._create_blank_step),t.doc.on("click","#wcf-remote-step-importer .cartflows-step-import",t._process_import_step),t.doc.on("click","#wcf-remote-flow-importer .cartflows-step-import",t._process_import_flow),t.doc.on("click",".cartflows-preview-flow-step",t._preview_individual),t.doc.on("add_template_to_page-fail",t._add_template_to_page_fail),c("body").on("thickbox:iframe:loaded",t._previewLoaded),c(document).on("keyup input","#wcf-remote-step-importer .wcf-flow-search-input",t._remote_step_search),c(document).on("click",".actions a",t._previewResponsive),c(document).on("click",".page-title-action:first",t._render_remote_flows),c(document).on("click",".wcf-trigger-popup",t._render_remote_steps),c(document).on("click",".wcf-templates-popup-overlay",t._close_template_popup),c(document).on("click",".wcf-popup-close-wrap .close-icon",t._close_template_popup),c(document).on("wp-plugin-install-success",t._installSuccess)},_install_plugin:function(t){t.preventDefault();var e=c(this);if(!e.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process"),c("#wcf-remote-step-importer").addClass("request-process"),e.addClass("updating-message button");var s=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(s,function(t,e){"install"===e.status&&CartFlowsImport.remaining_install_plugins++,"activate"===e.status&&CartFlowsImport.remaining_active_plugins++}),CartFlowsImport.remaining_install_plugins?CartFlowsImport._install_all_plugins():CartFlowsImport.remaining_active_plugins?CartFlowsImport._activate_all_plugins():c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps()}},_install_all_plugins:function(){var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(t,function(t,e){"install"===e.status&&wp.updates.queue.push({action:"install-plugin",data:{slug:e.slug}})}),wp.updates.queueChecker()},_activate_all_plugins:function(){if(CartFlowsImport.remaining_active_plugins||CartFlowsImport.remaining_install_plugins){var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;CartFlowsAjaxQueue.stop(),CartFlowsAjaxQueue.run(),c.each(t,function(t,e){"activate"===e.status&&CartFlowsAjaxQueue.add({url:CartFlowsImportVars.ajaxurl,type:"POST",data:{action:"cartflows_activate_plugin",plugin_init:e.init},success:function(t){CartFlowsImport.remaining_active_plugins--,CartFlowsImport.remaining_active_plugins||CartFlowsImport.remaining_install_plugins||(c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps())}})})}else c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps()},_installSuccess:function(t,s){t.preventDefault();var e=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(e,function(t,e){"install"===e.status&&s.slug===e.slug&&c.ajax({url:ajaxurl,type:"POST",data:{action:"cartflows_activate_plugin",plugin_init:e.init}}).done(function(t,e,s){CartFlowsImport.remaining_install_plugins--,CartFlowsImport.remaining_install_plugins||CartFlowsImport._activate_all_plugins()})})},_api_request_failed:function(t,e,s,a){"error"==a&&(c("#wcf-remote-content-failed").length||c("#wcf-ready-templates").html(wp.template("cartflows-website-unreachable")))},_toggle_ready_templates:function(t){t.preventDefault();var e=c(this).data("slug")||"";c("#wcf-get-started-steps").find("a").removeClass("current"),c("#wcf-get-started-steps").find('a[data-slug="'+e+'"]').addClass("current"),"canvas"==e?(c("#wcf-ready-templates").hide(),c("#wcf-start-from-scratch").show()):(c("#wcf-ready-templates").show(),c("#wcf-start-from-scratch").hide()),!c(".wcf-page-builder-notice").length&&c("#wcf-remote-step-importer").length&&CartFlowsImport._showSteps()},_switch_step_tab:function(t){t.preventDefault();var e=c(".wcf-tab > li.active > a").attr("href");c(".wcf-tab > li.active").removeClass("active"),c(this).parents("li").addClass("active"),c(e).removeClass("active"),c(e).addClass("hide");var s=c(this).attr("href");c(s).removeClass("hide"),c(s).addClass("active")},_remote_step_search:function(t){t.preventDefault(),c(".step-type-filter-links").find("option").removeClass("current"),c(".step-type-filter-links").find("option:first-child").addClass("current"),window.clearTimeout(CartFlowsImport._ref),CartFlowsImport._ref=window.setTimeout(function(){CartFlowsImport._ref=null,CartFlowsImport._showSteps()},500)},_previewResponsive:function(t){t.preventDefault();var e=c(this).find(".dashicons"),s=e.attr("data-view")||"";c("#TB_window").removeClass("desktop tablet mobile"),c("#TB_window").addClass(s),c(".actions .dashicons").removeClass("active"),e.addClass("active"),c("#TB_iframeContent").removeClass(),c("#TB_iframeContent").addClass(s)},_filterStepPageBuilderClick:function(t){t.preventDefault(),c(this).parents("ul").find("a").removeClass("current"),c(this).addClass("current");var e=c(".step-type-filter-links .current").data("slug")||"";"upsell"===e||"downsell"===e?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),c(".wcf-page-builder-notice").html(""),c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps()},_filterBlankStepCategoryClick:function(t){t.preventDefault(),c(".wcf-page-builder-notice").html("");var e=c(this).data("group")||"";e&&(c("#wcf-scratch-steps-categories .step-type-filter-links").val(e),c("#wcf-scratch-steps-categories .step-type-filter-links option").removeClass("current"),c('#wcf-scratch-steps-categories .step-type-filter-links option[data-group="'+e+'"]').addClass("current")),c(".step-type-filter-links").find("a").removeClass("current"),c(this).addClass("current"),$step_type=c(this).data("slug"),"upsell"===$step_type||"downsell"===$step_type?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),""!=CartFlowsImportVars._is_pro_active||"upsell"!=$step_type&&"downsell"!=$step_type?(c(".cartflows-step-import-blank").text("Create Step"),c(".cartflows-step-import-blank").removeClass("get-pro"),c(".cartflows-step-import-blank").removeAttr("target")):(c(".cartflows-step-import-blank").text("Get Pro"),c(".cartflows-step-import-blank").attr("href",CartFlowsImportVars.domain_url),c(".cartflows-step-import-blank").attr("target","_blank"),c(".cartflows-step-import-blank").addClass("get-pro")),c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps()},_filterBlankStepCategoryChange:function(t){t.preventDefault();var e=c(this).find("option:selected").val()||"";e&&(c(".step-type-filter-links").val(e),c(".step-type-filter-links").find("a").removeClass("current"),c(".step-type-filter-links").find('a[data-group="'+e+'"]').addClass("current")),c(".step-type-filter-links").find("option").removeClass("current"),c(".step-type-filter-links").find("option:selected").addClass("current"),$step_type=c(this).find("option:selected").data("slug"),"upsell"===$step_type||"downsell"===$step_type?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),""!=CartFlowsImportVars._is_pro_active||"upsell"!=$step_type&&"downsell"!=$step_type?(c(".cartflows-step-import-blank").text("Create Step"),c(".cartflows-step-import-blank").removeClass("get-pro"),c(".cartflows-step-import-blank").removeAttr("target")):(c(".cartflows-step-import-blank").text("Get Pro"),c(".cartflows-step-import-blank").attr("href",CartFlowsImportVars.domain_url),c(".cartflows-step-import-blank").attr("target","_blank"),c(".cartflows-step-import-blank").addClass("get-pro")),!c(".wcf-page-builder-notice").length&&c("#wcf-remote-step-importer").length&&(c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps())},_showSteps:function(){var t={licence_args:CartFlowsImportVars.licence_args,per_page:15,_fields:CartFlowsImportVars.step_fields.toString()},e=c("#wcf-categories .step-type-filter-links").find(".current").data("group")||"",s=c("#wcf-categories .step-type-filter-links").find(".current").data("slug");""!==e&&"all"!==e&&(t[CartFlowsImportVars.step_type]=e);e=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("group")||"",s=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("slug")||"";var a=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("title")||"Page Builder";""!==e&&"all"!==e&&(t[CartFlowsImportVars.step_page_builder]=e);var r={remote_slug:CartFlowsImportVars.step,slug:CartFlowsImportVars.step+"?"+decodeURIComponent(c.param(t))};CartFlowsAPI._api_request(r,function(t){t.current_step_type=s;var e=wp.template("cartflows-steps-list");parseInt(t.items_count)?c("#wcf-remote-step-list").html(e(t)):(c("#wcf-remote-step-list").html(wp.template("cartflows-no-steps")),c(".cartflows-no-steps").find(".description").html("We are working on ready templates designed with "+a+'.<br/>Meanwhile you can <a href="#" data-slug="canvas" class="wcf-create-from-scratch-link">create your own designs</a> easily.')),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-step-importer").removeClass("request-process")})},_apiAddParam_per_page:function(){CartFlowsImport._api_params.per_page=15},_apiAddParam_licence_args:function(){CartFlowsImport._api_params.licence_args=CartFlowsImportVars.licence_args},_apiAddParam_search:function(){var t=c(".wcf-flow-search-input").val()||"";""!==t&&(CartFlowsImport._api_params.search=t)},_close_popup:function(){c("#cartflows-steps").fadeOut(),c("body").removeClass("cartflows-popup-is-open")},_post_auto_save:function(){var t=c("#title"),e=c("#title-prompt-text"),s=CartFlowsImport;t.val()||(t.val("CartFlows #"+s.post_id),e.length&&e.remove()),wp.autosave&&wp.autosave.server.triggerSave()},_process_cache_remote_flows:function(){if("gutenberg"==CartFlowsImportVars.default_page_builder)CartFlowsImport._cache_remote_flows();else{var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins,s=!0;c.each(t,function(t,e){s&&("install"!==e.status&&"activate"!==e.status||(s=!1))}),!1===s?(c(".wcf-page-builder-notice").html(wp.template("cartflows-page-builder-notice")),c("#wcf-remote-flow-list").find(".spinner").remove()):CartFlowsImport._cache_remote_flows()}},_cache_remote_flows:function(){CartFlowsImport;var t={search:CartFlowsImportVars.default_page_builder,licence_args:CartFlowsImportVars.licence_args,hide_empty:!1,_fields:CartFlowsImportVars.flow_page_builder_fields.toString()},e={remote_slug:CartFlowsImportVars.flow_page_builder,slug:CartFlowsImportVars.flow_page_builder+"?"+decodeURIComponent(c.param(t)),wrapper_class:"wcf-page-builder-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-page-builders").html(e(t)),c("#wcf-page-builders").find("li:first a").addClass("current");var s={licence_args:CartFlowsImportVars.licence_args,hide_empty:!0,_fields:CartFlowsImportVars.flow_type_fields.toString()},a={remote_slug:CartFlowsImportVars.flow_type,slug:CartFlowsImportVars.flow_type+"?"+decodeURIComponent(c.param(s)),wrapper_class:"flow-type-filter-links filter-links",show_all:!1};CartFlowsAPI._api_request(a,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-categories").html(e(t)),c("#wcf-categories").find("li:first a").addClass("current"),CartFlowsImport._showFlows()})})},_render_remote_flows:function(t){t&&t.preventDefault(),c("#wcf-remote-flow-importer").addClass("open"),c("html").addClass("wcf-popup-open")},_process_cache_remote_steps:function(){if("gutenberg"==CartFlowsImportVars.default_page_builder)CartFlowsImport._cache_remote_steps();else{var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins,s=!0;c.each(t,function(t,e){s&&("install"!==e.status&&"activate"!==e.status||(s=!1))}),!1===s?(c(".wcf-page-builder-notice").html(wp.template("cartflows-page-builder-notice")),c("#wcf-remote-step-list").find(".spinner").remove()):CartFlowsImport._cache_remote_steps()}},_cache_remote_steps:function(){CartFlowsImport;c("html").addClass("wcf-steps-loading");var t={search:CartFlowsImportVars.default_page_builder,licence_args:CartFlowsImportVars.licence_args,hide_empty:!1,_fields:CartFlowsImportVars.step_page_builder_fields.toString()},e={remote_slug:CartFlowsImportVars.step_page_builder,slug:CartFlowsImportVars.step_page_builder+"?"+decodeURIComponent(c.param(t)),wrapper_class:"wcf-page-builder-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-page-builders").html(e(t)),c("#wcf-page-builders").find("li:first a").addClass("current")});t={licence_args:CartFlowsImportVars.licence_args,_fields:CartFlowsImportVars.step_type_fields.toString()},e={remote_slug:CartFlowsImportVars.step_type,slug:CartFlowsImportVars.step_type+"?"+decodeURIComponent(c.param(t)),wrapper_class:"step-type-filter-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){var a=t,r=t.items_count;if(t.items)for(key in t.items){var e={licence_args:CartFlowsImportVars.licence_args,per_page:15,_fields:CartFlowsImportVars.step_fields.toString()};e[CartFlowsImportVars.step_type]=t.items[key].id;var s={remote_slug:CartFlowsImportVars.step,slug:CartFlowsImportVars.step+"?"+decodeURIComponent(c.param(e))};CartFlowsAPI._api_request(s,function(t){var e=wp.template("cartflows-steps-list");if(parseInt(t.items_count)?c("#wcf-remote-step-list").html(e(t)):c("#wcf-remote-step-list").html(wp.template("cartflows-no-steps")),0==--r){var s=wp.template("cartflows-term-filters-dropdown");e=wp.template("cartflows-term-filters");c("#wcf-categories").html(e(a)),c("#wcf-scratch-steps-categories").html(s(a)),c("#wcf-categories, #wcf-scratch-steps-categories").find("option:first").addClass("current"),c("#wcf-categories").find("li:first a").addClass("current"),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-content").find(".spinner").remove(),CartFlowsImport._showSteps(),c("html").removeClass("wcf-steps-loading")}})}})},_render_remote_steps:function(t){t&&t.preventDefault(),c("#wcf-remote-step-importer").addClass("open"),c("html").addClass("wcf-popup-open")},_categorize_data:function(t){var a=[];return c.each(t,function(t,e){var s=e.step_type.slug;void 0===a[s]&&(a[s]=[]),a[s].push(e)}),a},_close_template_popup:function(t){(c(t.target).hasClass("wcf-templates-popup-overlay")||c(t.target).hasClass("close-icon"))&&(c(".wcf-templates-popup-overlay").hasClass("request-process")||(c("html").removeClass("wcf-popup-open"),c(".wcf-templates-popup-overlay").removeClass("open")))},_ajax:function(t,a,r){var o=CartFlowsImport;c.ajax({url:ajaxurl,type:"POST",data:t}).done(function(t,e,s){a&&"function"==typeof a&&a({request:t,status:e,XHR:s}),o.doc.trigger(r+"-done",[t,e,s])}).fail(function(t,e){o.doc.trigger(r+"-fail",[t,e])}).always(function(){o.doc.trigger(r+"-always")})},_load_templates:function(t,a){var r=CartFlowsImport;c("body").hasClass("processing")||(c("body").addClass("processing"),c.ajax({url:ajaxurl,type:"POST",data:{action:"cartflows_load_steps",security:cartflows_admin.cf_load_steps_nonce,args:t}}).done(function(t,e,s){r.doc.trigger(a,[t]),c("body").removeClass("processing")}).fail(function(t,e){}).always(function(){}))},_empty:function(t){if("number"==typeof t||"boolean"==typeof t)return!1;if(null==t)return!0;if(void 0!==t.length)return 0==t.length;var e=0;for(var s in t)t.hasOwnProperty(s)&&e++;return 0==e},_preview_individual:function(){var t=c(this).data("id")||"",e=c(this).data("href")||"";c(".cartflows-preview-flow-step").removeClass("active"),c('.cartflows-preview-flow-step[data-id="'+t+'"]').addClass("active"),c("#TB_window").addClass("cartflows-thickbox-loading"),c("#TB_iframeContent").removeAttr("onload"),c("#TB_iframeContent").removeAttr("src"),c("#TB_iframeContent").attr("src",e),c("#TB_iframeContent").attr("onload","CartFlowsImport.showIframe()")},showIframe:function(){c("#TB_load").remove(),c("#TB_window").css({visibility:"visible"}),c("#TB_window").removeClass("cartflows-thickbox-loading")},_previewLoaded:function(t){t.preventDefault(),c("#TB_window").removeClass("cartflows-thickbox-loading")},_filterFlowPageBuilderClick:function(t){t.preventDefault(),c(this).parents("ul").find("a").removeClass("current"),c(this).addClass("current"),c(".wcf-page-builder-notice").html(""),c("#wcf-remote-flow-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showFlows()},_showFlows:function(){var t={licence_args:CartFlowsImportVars.licence_args,_fields:CartFlowsImportVars.flow_fields.toString()},e=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("group")||"";c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("slug"),c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("title");""!==e&&"all"!==e&&(t[CartFlowsImportVars.flow_page_builder]=e);var s={remote_slug:CartFlowsImportVars.flow,slug:CartFlowsImportVars.flow+"?"+decodeURIComponent(c.param(t))};CartFlowsAPI._api_request(s,function(t){var e=wp.template("cartflows-flows-list");parseInt(t.items_count)?c("#wcf-remote-flow-list").html(e(t)):c("#wcf-remote-flow-list").html(wp.template("cartflows-no-flows")),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-flow-importer").removeClass("request-process")})},_create_default_flow:function(t){t.preventDefault();var e=CartFlowsImport,s=c(this);if(!s.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process"),s.addClass("updating-message").text("Creating Flow.."),s.parents(".template").addClass("importing");var a={action:"cartflows_default_flow",security:cartflows_admin.cf_default_flow_nonce};e._ajax(a,function(t){if(t.request.success){var e=t.request.data;setTimeout(function(){s.removeClass("updating-message").text("Flow Created! Redirecting.."),window.location=CartFlowsImportVars.admin_url+"post.php?post="+e+"&action=edit"},3e3)}})}},_activate_plugin:function(t){var e={action:"cartflows_activate_plugin",plugin_init:t};CartFlowsImport._ajax(e,function(t){})},_process_import_flow:function(t){t.preventDefault();var a=c(this);if(!a.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process");var e=CartFlowsImport;a.text("Creating Flow.."),a.addClass("updating-message"),a.parents(".template").addClass("importing");var s=a.data("flow-steps")||"",r=""!==s?JSON.parse("["+s+"]"):[],o={action:"cartflows_create_flow",security:cartflows_admin.cf_create_flow_nonce};e._ajax(o,function(t){if(t.request.success){var s=t.request.data;r&&(CartFlowsAjaxQueue.stop(),CartFlowsAjaxQueue.run(),CartFlowsImport.all_steps=r.length,a.addClass("updating-message").text("Importing Step 1 of "+CartFlowsImport.all_steps),c.each(r,function(t,e){CartFlowsAjaxQueue.add({url:CartFlowsImportVars.ajaxurl,type:"POST",data:{action:"cartflows_import_flow_step",flow_id:s,template_id:e,security:cartflows_admin.cf_import_flow_step_nonce},success:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Imported Step "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message").text("All Imported! Redirecting.."),window.location=CartFlowsImportVars.admin_url+"post.php?post="+s+"&action=edit"},3e3)):a.addClass("updating-message").text("Importing Step "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)},error:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,template=a.parents(".template.importing"),template.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.statusText),CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Failed "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message button-primary").addClass("disabled")},3e3)):a.addClass("updating-message").text("Failed "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)},fail:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Imported "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message").text("All Step Imported! Reloading.."),location.reload()},3e3)):a.addClass("updating-message").text("Importing "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)}})}))}})}},_handle_error:function(t){c(".cartflows-step-import.updating-message").addClass("updating-message").text(t.errorMessage)},_create_blank_step:function(t){t.preventDefault();var s=c(this),e=CartFlowsImport,a=c("#post_ID").val(),r=c("#wcf-scratch-steps-categories .step-type-filter-links .current").data("slug")||"",o=c("#wcf-scratch-steps-categories .step-type-filter-links .current").data("title")||"",l=r,i=c('.wcf-step-wrap[data-term-slug="'+r+'"]').length||1,p=o+" "+(parseInt(i)+1);if(c("#wcf-start-from-scratch .wcf-notice-wrap").remove(),""!==l){if(CartFlowsImportVars._is_pro_active||"upsell"!==l&&"downsell"!==l){if(s.parents(".template").addClass("importing"),!CartFlowsImportVars._is_pro_active)if("checkout"===l)if(0<c('.wcf-step-wrap[data-term-slug="checkout"]').length){s.parents(".template.importing");return s.removeClass("importing updating-message").text("Import Failed!"),void c("#wcf-start-from-scratch .inner").append('<div class="wcf-notice-wrap"><div class="notice notice-warning"><p>Upgrade to Pro for adding more than one Checkout step.</p></div></div>')}if(c("#wcf-remote-step-importer").addClass("request-process"),c(".cartflows-step-import").addClass("disabled"),s.addClass("importing updating-message").text("Creating.."),c("body").hasClass("post-type-cartflows_flow")){var n={action:"cartflows_step_create_blank",flow_id:a,step_type:l,step_title:p,security:cartflows_admin.cf_step_create_blank_nonce};e._ajax(n,function(t){CartFlowsImport;var e=s.parents(".template.importing");t.request.success?(s.text("Created. Reloading.."),setTimeout(function(){window.location.href=window.location.href+"&highlight-step-id="+t.request.data},3e3)):(s.removeClass("importing updating-message").text("Creating Failed!"),c("#wcf-remote-step-importer").removeClass("request-process"),e.find(".cartflows-step-preview").append("<div class='preview'></div>"),e.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.request.data))})}}}else c("#wcf-start-from-scratch .inner").append('<div class="wcf-notice-wrap"><div class="notice notice-info"><p>Please select the step type.</p></div></div>')},_process_import_step:function(t){t.preventDefault();var s=c(this),e=s.data("slug")||"",a=c('.wcf-step-wrap[data-term-slug="'+e+'"]').length||1;if((step_title=s.data("title")||"",step_custom_title=step_title+" "+(parseInt(a)+1),o=CartFlowsImport,!CartFlowsImportVars._is_pro_active)&&("checkout"===e&&0<c('.wcf-step-wrap[data-term-slug="checkout"]').length)){var r=s.parents(".template");return s.removeClass("importing updating-message").text("Import Failed!"),r.find(".preview").hide(),r.find("#wcf_create_notice").show().find("a").addClass("notice notice-warning ").text("Upgrade to Pro for adding more than one Checkout step"),void c("#wcf-remote-step-importer").removeClass("request-process")}if(!s.hasClass("updating-message")){c("#wcf-remote-step-importer").addClass("request-process");var o=CartFlowsImport;s.addClass("updating-message"),s.parents(".template").addClass("importing");var l=s.data("template-id")||"",i=c("#post_ID").val(),p=e;o=CartFlowsImport;if(c(".cartflows-step-import-blank").addClass("disabled"),c(".cartflows-step-import").addClass("disabled"),s.addClass("importing updating-message").text("Importing.."),c("body").hasClass("post-type-cartflows_flow")){var n={action:"cartflows_step_import",flow_id:i,template_id:l,step_title:step_custom_title,step_type:p,security:cartflows_admin.cf_step_import_nonce};o._ajax(n,function(t){CartFlowsImport;var e=s.parents(".template.importing");t.request.success?(s.text("Imported. Reloading.."),setTimeout(function(){window.location.href=window.location.href+"&highlight-step-id="+t.request.data},3e3)):(c(".wcf-templates-popup-overlay").removeClass("request-process"),s.removeClass("importing updating-message").text("Import Failed!"),e.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.request.data))},"add_template_to_page")}}},_add_template_to_page_fail:function(t,e,s){t.preventDefault();CartFlowsImport;var a=c(".wcf-flow-steps-data-wrap-importer .template.importing");a.find(".cartflows-step-import").removeClass("importing updating-message").text("Import Failed!"),a.find(".preview").addClass("notice notice-warning").removeClass("preview").text(e.responseText)}},c(function(){CartFlowsImport.init()})}(jQuery);
1
+ var CartFlowsAjaxQueue=function(){var s=[];return{add:function(t){s.push(t)},remove:function(t){-1<jQuery.inArray(t,s)&&s.splice($.inArray(t,s),1)},run:function(){var t,e=this;s.length?(t=s[0].complete,s[0].complete=function(){"function"==typeof t&&t(),s.shift(),e.run.apply(e,[])},jQuery.ajax(s[0])):e.tid=setTimeout(function(){e.run.apply(e,[])},1e3)},stop:function(){s=[],clearTimeout(this.tid)}}}();!function(c){CartFlowsImport={doc:c(document),wrap:c(".wcf-flow-steps-data-wrap"),inner:c(".wcf-flow-steps-data-wrap-importer"),post_id:c("#post_ID").val(),_ref:null,_api_step_type:{},_api_params:{},all_steps:0,remaining_steps:0,remaining_install_plugins:0,remaining_active_plugins:0,woo_required_steps:["checkout","upsell","downsell","thankyou"],step_order:["landing","checkout","upsell","downsell","thankyou"],new_step_names:{landing:"Landing",checkout:"Checkout (Woo)",upsell:"Upsell (Woo)",downsell:"Downsell (Woo)",thankyou:"Thank You (Woo)"},init:function(){if(this._bind(),"other"!==CartFlowsImportVars.default_page_builder&&(c(".post-type-cartflows_flow").hasClass("edit-php")&&this._process_cache_remote_flows(),c(".post-type-cartflows_flow").hasClass("post-php")&&this._process_cache_remote_steps()),c(".post-type-cartflows_flow").hasClass("edit-php")&&null!==this._getParamFromURL("add-new-flow")&&this._render_remote_flows(),c(".post-type-cartflows_flow").hasClass("post-php")&&null!==this._getParamFromURL("add-new-step")&&this._render_remote_steps(),this._getParamFromURL("highlight-step-id")){var t=c('.wcf-step-wrap[data-id="'+this._getParamFromURL("highlight-step-id")+'"]');t.length&&c("html, body").animate({scrollTop:t.offset().top},1500)}if(c(".post-type-cartflows_flow").hasClass("edit-php")){var e=c(".edit-php.post-type-cartflows_flow").find(".page-title-action:first");e.after('<a href="'+CartFlowsImportVars.export_url+'" class="page-title-action">Export</a>'),e.after('<a href="'+CartFlowsImportVars.import_url+'" class="page-title-action">Import</a>')}},_getParamFromURL:function(t,e){e||(e=window.location.href),t=t.replace(/[\[\]]/g,"\\$&");var s=new RegExp("[?&]"+t+"(=([^&#]*)|&|#|$)").exec(e);return s?s[2]?decodeURIComponent(s[2].replace(/\+/g," ")):"":null},_bind:function(){var t=CartFlowsImport;t.doc.on("click",".wcf-install-plugin",t._install_plugin),t.doc.on("cartflows-api-request-fail",t._api_request_failed),t.doc.on("click","#wcf-get-started-steps a, .wcf-create-from-scratch-link",t._toggle_ready_templates),t.doc.on("click",".cartflows-flow-import-blank",t._create_default_flow),t.doc.on("click","#wcf-remote-flow-importer .wcf-page-builder-links a",t._filterFlowPageBuilderClick),t.doc.on("click","#wcf-remote-step-importer #wcf-categories .step-type-filter-links a",t._filterBlankStepCategoryClick),t.doc.on("change","#wcf-remote-step-importer #wcf-scratch-steps-categories .step-type-filter-links",t._filterBlankStepCategoryChange),t.doc.on("click","#wcf-get-started-steps",t._filterBlankStepCategoryChange),t.doc.on("click","#wcf-remote-step-importer .wcf-page-builder-links a",t._filterStepPageBuilderClick),t.doc.on("click",".cartflows-step-import-blank:not(.get-pro)",t._create_blank_step),t.doc.on("click","#wcf-remote-step-importer .cartflows-step-import",t._process_import_step),t.doc.on("click","#wcf-remote-flow-importer .cartflows-step-import",t._process_import_flow),t.doc.on("click",".cartflows-preview-flow-step",t._preview_individual),t.doc.on("add_template_to_page-fail",t._add_template_to_page_fail),c("body").on("thickbox:iframe:loaded",t._previewLoaded),c(document).on("keyup input","#wcf-remote-step-importer .wcf-flow-search-input",t._remote_step_search),c(document).on("click",".actions a",t._previewResponsive),c(document).on("click",".page-title-action:first",t._render_remote_flows),c(document).on("click",".wcf-trigger-popup",t._render_remote_steps),c(document).on("click",".wcf-templates-popup-overlay",t._close_template_popup),c(document).on("click",".wcf-popup-close-wrap .close-icon",t._close_template_popup),c(document).on("wp-plugin-install-success",t._installSuccess),c(document).on("click",".wcf-activate-wc",t._installWc)},_install_plugin:function(t){t.preventDefault();var e=c(this);if(!e.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process"),c("#wcf-remote-step-importer").addClass("request-process"),e.addClass("updating-message button");var s=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(s,function(t,e){"install"===e.status&&CartFlowsImport.remaining_install_plugins++,"activate"===e.status&&CartFlowsImport.remaining_active_plugins++}),CartFlowsImport.remaining_install_plugins?CartFlowsImport._install_all_plugins():CartFlowsImport.remaining_active_plugins?CartFlowsImport._activate_all_plugins():c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps()}},_install_all_plugins:function(){var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(t,function(t,e){"install"===e.status&&wp.updates.queue.push({action:"install-plugin",data:{slug:e.slug}})}),wp.updates.queueChecker()},_activate_all_plugins:function(){if(CartFlowsImport.remaining_active_plugins||CartFlowsImport.remaining_install_plugins){var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;CartFlowsAjaxQueue.stop(),CartFlowsAjaxQueue.run(),c.each(t,function(t,e){"activate"===e.status&&CartFlowsAjaxQueue.add({url:CartFlowsImportVars.ajaxurl,type:"POST",data:{action:"cartflows_activate_plugin",plugin_init:e.init},success:function(t){CartFlowsImport.remaining_active_plugins--,CartFlowsImport.remaining_active_plugins||CartFlowsImport.remaining_install_plugins||(c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps())}})})}else c("#wcf-remote-flow-importer").length?CartFlowsImport._cache_remote_flows():c("#wcf-remote-step-importer").length&&CartFlowsImport._cache_remote_steps()},_installSuccess:function(t,s){t.preventDefault(),"no"===CartFlowsImportVars.is_wc_activated&&CartFlowsImport._activateWc();var e=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins;c.each(e,function(t,e){"install"===e.status&&s.slug===e.slug&&c.ajax({url:ajaxurl,type:"POST",data:{action:"cartflows_activate_plugin",plugin_init:e.init}}).done(function(t,e,s){CartFlowsImport.remaining_install_plugins--,CartFlowsImport.remaining_install_plugins||CartFlowsImport._activate_all_plugins()})})},_api_request_failed:function(t,e,s,a){"error"==a&&(c("#wcf-remote-content-failed").length||c("#wcf-ready-templates").html(wp.template("cartflows-website-unreachable")))},_toggle_ready_templates:function(t){t.preventDefault();var e=c(this).data("slug")||"";c("#wcf-get-started-steps").find("a").removeClass("current"),c("#wcf-get-started-steps").find('a[data-slug="'+e+'"]').addClass("current"),"canvas"==e?(c("#wcf-ready-templates").hide(),c("#wcf-start-from-scratch").show()):(c("#wcf-ready-templates").show(),c("#wcf-start-from-scratch").hide()),!c(".wcf-page-builder-notice").length&&c("#wcf-remote-step-importer").length&&CartFlowsImport._showSteps()},_switch_step_tab:function(t){t.preventDefault();var e=c(".wcf-tab > li.active > a").attr("href");c(".wcf-tab > li.active").removeClass("active"),c(this).parents("li").addClass("active"),c(e).removeClass("active"),c(e).addClass("hide");var s=c(this).attr("href");c(s).removeClass("hide"),c(s).addClass("active")},_remote_step_search:function(t){t.preventDefault(),c(".step-type-filter-links").find("option").removeClass("current"),c(".step-type-filter-links").find("option:first-child").addClass("current"),window.clearTimeout(CartFlowsImport._ref),CartFlowsImport._ref=window.setTimeout(function(){CartFlowsImport._ref=null,CartFlowsImport._showSteps()},500)},_previewResponsive:function(t){t.preventDefault();var e=c(this).find(".dashicons"),s=e.attr("data-view")||"";c("#TB_window").removeClass("desktop tablet mobile"),c("#TB_window").addClass(s),c(".actions .dashicons").removeClass("active"),e.addClass("active"),c("#TB_iframeContent").removeClass(),c("#TB_iframeContent").addClass(s)},_filterStepPageBuilderClick:function(t){t.preventDefault(),c(this).parents("ul").find("a").removeClass("current"),c(this).addClass("current");var e=c(".step-type-filter-links .current").data("slug")||"";"upsell"===e||"downsell"===e?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),c(".wcf-page-builder-notice").html(""),c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps()},_filterBlankStepCategoryClick:function(t){t.preventDefault(),c(".wcf-page-builder-notice").html("");var e=c(this).data("group")||"";e&&(c("#wcf-scratch-steps-categories .step-type-filter-links").val(e),c("#wcf-scratch-steps-categories .step-type-filter-links option").removeClass("current"),c('#wcf-scratch-steps-categories .step-type-filter-links option[data-group="'+e+'"]').addClass("current")),c(".step-type-filter-links").find("a").removeClass("current"),c(this).addClass("current"),$step_type=c(this).data("slug"),"upsell"===$step_type||"downsell"===$step_type?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),""!=CartFlowsImportVars._is_pro_active||"upsell"!=$step_type&&"downsell"!=$step_type?(c(".cartflows-step-import-blank").text("Create Step"),c(".cartflows-step-import-blank").removeClass("get-pro"),c(".cartflows-step-import-blank").removeAttr("target")):(c(".cartflows-step-import-blank").text("Get Pro"),c(".cartflows-step-import-blank").attr("href",CartFlowsImportVars.domain_url),c(".cartflows-step-import-blank").attr("target","_blank"),c(".cartflows-step-import-blank").addClass("get-pro")),c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps()},_filterBlankStepCategoryChange:function(t){t.preventDefault(),c(".wcf-notice-wrap").remove(),c(".cartflows-step-import-blank").css("pointer-events","auto").removeClass("disabled");var e=c(".step-type-filter-links").find("option:selected").val()||"";if(e&&(c(".step-type-filter-links").val(e),c(".step-type-filter-links").find("a").removeClass("current"),c(".step-type-filter-links").find('a[data-group="'+e+'"]').addClass("current")),c(".step-type-filter-links").find("option").removeClass("current"),c(".step-type-filter-links").find("option:selected").addClass("current"),$step_type=c(".step-type-filter-links").find("option:selected").data("slug"),!("no"!==CartFlowsImportVars.is_wc_installed&&"no"!==CartFlowsImportVars.is_wc_activated||"upsell"!==$step_type&&"downsell"!==$step_type&&"checkout"!==$step_type&&"thankyou"!==$step_type))return c(".cartflows-step-import-blank").after("<p class='wcf-notice-wrap' style='text-align: center'>You need WooCommerce plugin installed and actived to use this product flow. <br/><br/> <a href='#' class='wcf-activate-wc button-secondary'> Click here to install and activate WooCommerce </a> </p>"),void c(".cartflows-step-import-blank").addClass("disabled").css("pointer-events","none");"upsell"===$step_type||"downsell"===$step_type?c(".wcf-template-notice").show():c(".wcf-template-notice").hide(),""!=CartFlowsImportVars._is_pro_active||"upsell"!=$step_type&&"downsell"!=$step_type?(c(".cartflows-step-import-blank").text("Create Step"),c(".cartflows-step-import-blank").removeClass("get-pro"),c(".cartflows-step-import-blank").removeAttr("target")):(c(".cartflows-step-import-blank").text("Get Pro"),c(".cartflows-step-import-blank").attr("href",CartFlowsImportVars.domain_url),c(".cartflows-step-import-blank").attr("target","_blank"),c(".cartflows-step-import-blank").addClass("get-pro")),!c(".wcf-page-builder-notice").length&&c("#wcf-remote-step-importer").length&&(c("#wcf-remote-step-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showSteps())},_showSteps:function(){var t={licence_args:CartFlowsImportVars.licence_args,per_page:15,_fields:CartFlowsImportVars.step_fields.toString()},e=c("#wcf-categories .step-type-filter-links").find(".current").data("group")||"",a=c("#wcf-categories .step-type-filter-links").find(".current").data("slug");""!==e&&"all"!==e&&(t[CartFlowsImportVars.step_type]=e);e=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("group")||"",a=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("slug")||"";var r=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("title")||"Page Builder";""!==e&&"all"!==e&&(t[CartFlowsImportVars.step_page_builder]=e);var s={remote_slug:CartFlowsImportVars.step,slug:CartFlowsImportVars.step+"?"+decodeURIComponent(c.param(t))};CartFlowsAPI._api_request(s,function(s){s.current_step_type=a,"yes"!==CartFlowsImportVars.is_wc_activated&&c.each(s.items,function(t,e){s.items[t].woo_required=!1,0<=c.inArray(e.step_type.slug,CartFlowsImport.woo_required_steps)&&(s.items[t].woo_required=!0)});var t=wp.template("cartflows-steps-list");parseInt(s.items_count)?c("#wcf-remote-step-list").html(t(s)):(c("#wcf-remote-step-list").html(wp.template("cartflows-no-steps")),c(".cartflows-no-steps").find(".description").html("We are working on ready templates designed with "+r+'.<br/>Meanwhile you can <a href="#" data-slug="canvas" class="wcf-create-from-scratch-link">create your own designs</a> easily.')),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-step-importer").removeClass("request-process")})},_apiAddParam_per_page:function(){CartFlowsImport._api_params.per_page=15},_apiAddParam_licence_args:function(){CartFlowsImport._api_params.licence_args=CartFlowsImportVars.licence_args},_apiAddParam_search:function(){var t=c(".wcf-flow-search-input").val()||"";""!==t&&(CartFlowsImport._api_params.search=t)},_close_popup:function(){c("#cartflows-steps").fadeOut(),c("body").removeClass("cartflows-popup-is-open")},_post_auto_save:function(){var t=c("#title"),e=c("#title-prompt-text"),s=CartFlowsImport;t.val()||(t.val("CartFlows #"+s.post_id),e.length&&e.remove()),wp.autosave&&wp.autosave.server.triggerSave()},_process_cache_remote_flows:function(){if("gutenberg"==CartFlowsImportVars.default_page_builder)CartFlowsImport._cache_remote_flows();else{var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins,s=!0;c.each(t,function(t,e){s&&("install"!==e.status&&"activate"!==e.status||(s=!1))}),!1===s?(c(".wcf-page-builder-notice").html(wp.template("cartflows-page-builder-notice")),c("#wcf-remote-flow-list").find(".spinner").remove()):CartFlowsImport._cache_remote_flows()}},_cache_remote_flows:function(){CartFlowsImport;var t={search:CartFlowsImportVars.default_page_builder,licence_args:CartFlowsImportVars.licence_args,hide_empty:!1,_fields:CartFlowsImportVars.flow_page_builder_fields.toString()},e={remote_slug:CartFlowsImportVars.flow_page_builder,slug:CartFlowsImportVars.flow_page_builder+"?"+decodeURIComponent(c.param(t)),wrapper_class:"wcf-page-builder-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-page-builders").html(e(t)),c("#wcf-page-builders").find("li:first a").addClass("current");var s={licence_args:CartFlowsImportVars.licence_args,hide_empty:!0,_fields:CartFlowsImportVars.flow_type_fields.toString()},a={remote_slug:CartFlowsImportVars.flow_type,slug:CartFlowsImportVars.flow_type+"?"+decodeURIComponent(c.param(s)),wrapper_class:"flow-type-filter-links filter-links",show_all:!1};CartFlowsAPI._api_request(a,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-categories").html(e(t)),c("#wcf-categories").find("li:first a").addClass("current"),CartFlowsImport._showFlows()})})},_render_remote_flows:function(t){t&&t.preventDefault(),c("#wcf-remote-flow-importer").addClass("open"),c("html").addClass("wcf-popup-open")},_process_cache_remote_steps:function(){if("gutenberg"==CartFlowsImportVars.default_page_builder)CartFlowsImport._cache_remote_steps();else{var t=CartFlowsImportVars.required_plugins[CartFlowsImportVars.default_page_builder].plugins,s=!0;c.each(t,function(t,e){s&&("install"!==e.status&&"activate"!==e.status||(s=!1))}),!1===s?(c(".wcf-page-builder-notice").html(wp.template("cartflows-page-builder-notice")),c("#wcf-remote-step-list").find(".spinner").remove()):CartFlowsImport._cache_remote_steps()}},mapOrder:function(t,r,o){return t.sort(function(t,e){var s=t[o],a=e[o];return r.indexOf(s)>r.indexOf(a)?1:-1}),t},_cache_remote_steps:function(){CartFlowsImport;c("html").addClass("wcf-steps-loading");var t={search:CartFlowsImportVars.default_page_builder,licence_args:CartFlowsImportVars.licence_args,hide_empty:!1,_fields:CartFlowsImportVars.step_page_builder_fields.toString()},e={remote_slug:CartFlowsImportVars.step_page_builder,slug:CartFlowsImportVars.step_page_builder+"?"+decodeURIComponent(c.param(t)),wrapper_class:"wcf-page-builder-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){var e=wp.template("cartflows-term-filters");c("#wcf-page-builders").html(e(t)),c("#wcf-page-builders").find("li:first a").addClass("current")});t={licence_args:CartFlowsImportVars.licence_args,_fields:CartFlowsImportVars.step_type_fields.toString()},e={remote_slug:CartFlowsImportVars.step_type,slug:CartFlowsImportVars.step_type+"?"+decodeURIComponent(c.param(t)),wrapper_class:"step-type-filter-links filter-links",show_all:!1};CartFlowsAPI._api_request(e,function(t){t.items=CartFlowsImport.mapOrder(t.items,CartFlowsImport.step_order,"slug");var a=t,r=t.items_count;if(t.items)for(key in t.items){t.items[key].name=CartFlowsImport.new_step_names[t.items[key].slug];var e={licence_args:CartFlowsImportVars.licence_args,per_page:15,_fields:CartFlowsImportVars.step_fields.toString()};e[CartFlowsImportVars.step_type]=t.items[key].id;var s={remote_slug:CartFlowsImportVars.step,slug:CartFlowsImportVars.step+"?"+decodeURIComponent(c.param(e))};CartFlowsAPI._api_request(s,function(t){var e=wp.template("cartflows-steps-list");if(parseInt(t.items_count)?c("#wcf-remote-step-list").html(e(t)):c("#wcf-remote-step-list").html(wp.template("cartflows-no-steps")),0==--r){var s=wp.template("cartflows-term-filters-dropdown");e=wp.template("cartflows-term-filters");c("#wcf-categories").html(e(a)),c("#wcf-scratch-steps-categories").html(s(a)),c("#wcf-categories, #wcf-scratch-steps-categories").find("option:first").addClass("current"),c("#wcf-categories").find("li:first a").addClass("current"),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-content").find(".spinner").remove(),CartFlowsImport._showSteps(),c("html").removeClass("wcf-steps-loading")}})}})},_render_remote_steps:function(t){t&&t.preventDefault(),c("#wcf-remote-step-importer").addClass("open"),c("html").addClass("wcf-popup-open")},_categorize_data:function(t){var a=[];return c.each(t,function(t,e){var s=e.step_type.slug;void 0===a[s]&&(a[s]=[]),a[s].push(e)}),a},_close_template_popup:function(t){(c(t.target).hasClass("wcf-templates-popup-overlay")||c(t.target).hasClass("close-icon"))&&(c(".wcf-templates-popup-overlay").hasClass("request-process")||(c("html").removeClass("wcf-popup-open"),c(".wcf-templates-popup-overlay").removeClass("open")))},_ajax:function(t,a,r){var o=CartFlowsImport;c.ajax({url:ajaxurl,type:"POST",data:t}).done(function(t,e,s){a&&"function"==typeof a&&a({request:t,status:e,XHR:s}),o.doc.trigger(r+"-done",[t,e,s])}).fail(function(t,e){o.doc.trigger(r+"-fail",[t,e])}).always(function(){o.doc.trigger(r+"-always")})},_load_templates:function(t,a){var r=CartFlowsImport;c("body").hasClass("processing")||(c("body").addClass("processing"),c.ajax({url:ajaxurl,type:"POST",data:{action:"cartflows_load_steps",security:cartflows_admin.cf_load_steps_nonce,args:t}}).done(function(t,e,s){r.doc.trigger(a,[t]),c("body").removeClass("processing")}).fail(function(t,e){}).always(function(){}))},_empty:function(t){if("number"==typeof t||"boolean"==typeof t)return!1;if(null==t)return!0;if(void 0!==t.length)return 0==t.length;var e=0;for(var s in t)t.hasOwnProperty(s)&&e++;return 0==e},_preview_individual:function(){var t=c(this).data("id")||"",e=c(this).data("href")||"";c(".cartflows-preview-flow-step").removeClass("active"),c('.cartflows-preview-flow-step[data-id="'+t+'"]').addClass("active"),c("#TB_window").addClass("cartflows-thickbox-loading"),c("#TB_iframeContent").removeAttr("onload"),c("#TB_iframeContent").removeAttr("src"),c("#TB_iframeContent").attr("src",e),c("#TB_iframeContent").attr("onload","CartFlowsImport.showIframe()")},showIframe:function(){c("#TB_load").remove(),c("#TB_window").css({visibility:"visible"}),c("#TB_window").removeClass("cartflows-thickbox-loading")},_previewLoaded:function(t){t.preventDefault(),c("#TB_window").removeClass("cartflows-thickbox-loading")},_filterFlowPageBuilderClick:function(t){t.preventDefault(),c(this).parents("ul").find("a").removeClass("current"),c(this).addClass("current"),c(".wcf-page-builder-notice").html(""),c("#wcf-remote-flow-list").html('<span class="spinner is-active"></span>'),CartFlowsImport._showFlows()},_showFlows:function(){var t={licence_args:CartFlowsImportVars.licence_args,_fields:CartFlowsImportVars.flow_fields.toString()},e=c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("group")||"";c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("slug"),c("#wcf-page-builders .wcf-page-builder-links").find(".current").data("title");""!==e&&"all"!==e&&(t[CartFlowsImportVars.flow_page_builder]=e);var s={remote_slug:CartFlowsImportVars.flow,slug:CartFlowsImportVars.flow+"?"+decodeURIComponent(c.param(t))};CartFlowsAPI._api_request(s,function(a){"yes"!==CartFlowsImportVars.is_wc_activated&&c.each(a.items,function(s,t){a.items[s].woo_required=!1,c.each(t.flow_steps,function(t,e){0<=c.inArray(e.type,CartFlowsImport.woo_required_steps)&&(a.items[s].woo_required=!0)})});var t=wp.template("cartflows-flows-list");parseInt(a.items_count)?c("#wcf-remote-flow-list").html(t(a)):c("#wcf-remote-flow-list").html(wp.template("cartflows-no-flows")),c(".wcf-page-builder-notice").remove(),c("#wcf-remote-flow-importer").removeClass("request-process")})},_create_default_flow:function(t){t.preventDefault();var e=CartFlowsImport,s=c(this);if(!s.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process"),s.addClass("updating-message").text("Creating Flow.."),s.parents(".template").addClass("importing");var a={action:"cartflows_default_flow",security:cartflows_admin.cf_default_flow_nonce};e._ajax(a,function(t){if(t.request.success){var e=t.request.data;setTimeout(function(){s.removeClass("updating-message").text("Flow Created! Redirecting.."),window.location=CartFlowsImportVars.admin_url+"post.php?post="+e+"&action=edit"},3e3)}})}},_activate_plugin:function(t){var e={action:"cartflows_activate_plugin",plugin_init:t};CartFlowsImport._ajax(e,function(t){})},_process_import_flow:function(t){t.preventDefault();var a=c(this);if(!a.hasClass("updating-message")){c("#wcf-remote-flow-importer").addClass("request-process");var e=CartFlowsImport;a.text("Creating Flow.."),a.addClass("updating-message"),a.parents(".template").addClass("importing");var s=a.data("flow-steps")||"",r=""!==s?JSON.parse("["+s+"]"):[],o={action:"cartflows_create_flow",security:cartflows_admin.cf_create_flow_nonce};e._ajax(o,function(t){if(t.request.success){var s=t.request.data;r&&(CartFlowsAjaxQueue.stop(),CartFlowsAjaxQueue.run(),CartFlowsImport.all_steps=r.length,a.addClass("updating-message").text("Importing Step 1 of "+CartFlowsImport.all_steps),c.each(r,function(t,e){CartFlowsAjaxQueue.add({url:CartFlowsImportVars.ajaxurl,type:"POST",data:{action:"cartflows_import_flow_step",flow_id:s,template_id:e,security:cartflows_admin.cf_import_flow_step_nonce},success:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Imported Step "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message").text("All Imported! Redirecting.."),window.location=CartFlowsImportVars.admin_url+"post.php?post="+s+"&action=edit"},3e3)):a.addClass("updating-message").text("Importing Step "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)},error:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,template=a.parents(".template.importing"),template.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.statusText),CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Failed "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message button-primary").addClass("disabled")},3e3)):a.addClass("updating-message").text("Failed "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)},fail:function(t){CartFlowsImport.remaining_steps=CartFlowsImport.remaining_steps+1,CartFlowsImport.remaining_steps===CartFlowsImport.all_steps?(a.addClass("updating-message").text("Imported "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps),setTimeout(function(){a.removeClass("updating-message").text("All Step Imported! Reloading.."),location.reload()},3e3)):a.addClass("updating-message").text("Importing "+CartFlowsImport.remaining_steps+" of "+CartFlowsImport.all_steps)}})}))}})}},_handle_error:function(t){c(".cartflows-step-import.updating-message").addClass("updating-message").text(t.errorMessage)},_create_blank_step:function(t){t.preventDefault();var s=c(this),e=CartFlowsImport,a=c("#post_ID").val(),r=c("#wcf-scratch-steps-categories .step-type-filter-links .current").data("slug")||"",o=c("#wcf-scratch-steps-categories .step-type-filter-links .current").data("title")||"",l=r,i=c('.wcf-step-wrap[data-term-slug="'+r+'"]').length||1,p=o+" "+(parseInt(i)+1);if(c("#wcf-start-from-scratch .wcf-notice-wrap ").remove(),""!==l){if(CartFlowsImportVars._is_pro_active||"upsell"!==l&&"downsell"!==l){if(s.parents(".template").addClass("importing"),!CartFlowsImportVars._is_pro_active)if("checkout"===l)if(0<c('.wcf-step-wrap[data-term-slug="checkout"]').length){s.parents(".template.importing");return s.removeClass("importing updating-message").text("Import Failed!"),void c("#wcf-start-from-scratch .inner").append('<div class="wcf-notice-wrap"><div class="notice notice-warning"><p>Upgrade to Pro for adding more than one Checkout step.</p></div></div>')}if(c("#wcf-remote-step-importer").addClass("request-process"),c(".cartflows-step-import").addClass("disabled"),s.addClass("importing updating-message").text("Creating.."),c("body").hasClass("post-type-cartflows_flow")){var n={action:"cartflows_step_create_blank",flow_id:a,step_type:l,step_title:p,security:cartflows_admin.cf_step_create_blank_nonce};e._ajax(n,function(t){CartFlowsImport;var e=s.parents(".template.importing");t.request.success?(s.text("Created. Reloading.."),setTimeout(function(){window.location.href=window.location.href+"&highlight-step-id="+t.request.data},3e3)):(s.removeClass("importing updating-message").text("Creating Failed!"),c("#wcf-remote-step-importer").removeClass("request-process"),e.find(".cartflows-step-preview").append("<div class='preview'></div>"),e.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.request.data))})}}}else c("#wcf-start-from-scratch .inner").append('<div class="wcf-notice-wrap"><div class="notice notice-info"><p>Please select the step type.</p></div></div>')},_process_import_step:function(t){t.preventDefault();var s=c(this),e=s.data("slug")||"",a=c('.wcf-step-wrap[data-term-slug="'+e+'"]').length||1;if((step_title=s.data("title")||"",step_custom_title=step_title+" "+(parseInt(a)+1),o=CartFlowsImport,!CartFlowsImportVars._is_pro_active)&&("checkout"===e&&0<c('.wcf-step-wrap[data-term-slug="checkout"]').length)){var r=s.parents(".template");return s.removeClass("importing updating-message").text("Import Failed!"),r.find(".preview").hide(),r.find("#wcf_create_notice").show().find("a").addClass("notice notice-warning ").text("Upgrade to Pro for adding more than one Checkout step"),void c("#wcf-remote-step-importer").removeClass("request-process")}if(!s.hasClass("updating-message")){c("#wcf-remote-step-importer").addClass("request-process");var o=CartFlowsImport;s.addClass("updating-message"),s.parents(".template").addClass("importing");var l=s.data("template-id")||"",i=c("#post_ID").val(),p=e;o=CartFlowsImport;if(c(".cartflows-step-import-blank").addClass("disabled"),c(".cartflows-step-import").addClass("disabled"),s.addClass("importing updating-message").text("Importing.."),c("body").hasClass("post-type-cartflows_flow")){var n={action:"cartflows_step_import",flow_id:i,template_id:l,step_title:step_custom_title,step_type:p,security:cartflows_admin.cf_step_import_nonce};o._ajax(n,function(t){CartFlowsImport;var e=s.parents(".template.importing");t.request.success?(s.text("Imported. Reloading.."),setTimeout(function(){window.location.href=window.location.href+"&highlight-step-id="+t.request.data},3e3)):(c(".wcf-templates-popup-overlay").removeClass("request-process"),s.removeClass("importing updating-message").text("Import Failed!"),e.find(".preview").addClass("notice notice-warning").removeClass("preview").text(t.request.data))},"add_template_to_page")}}},_add_template_to_page_fail:function(t,e,s){t.preventDefault();CartFlowsImport;var a=c(".wcf-flow-steps-data-wrap-importer .template.importing");a.find(".cartflows-step-import").removeClass("importing updating-message").text("Import Failed!"),a.find(".preview").addClass("notice notice-warning").removeClass("preview").text(e.responseText)},_activateWc:function(t){c.ajax({url:ajaxurl,type:"POST",data:{action:"cartflows_activate_plugin",plugin_init:"woocommerce/woocommerce.php"}}).done(function(t,e,s){c(".wcf-notice-wrap").addClass("wcf-hidden"),c(".cartflows-template-selector").removeAttr("disabled"),CartFlowsImport.wc_installed=!0,CartFlowsImportVars.is_wc_installed="yes",CartFlowsImportVars.is_wc_activated="yes",location.reload(!0),window.location.search+="&add-new-flow"})},_installWc:function(t){c(this).addClass("updating-message button"),c(this).text(cartflows_admin.wc_activating_message),0==cartflows_admin.wc_status.installed?(wp.updates.shouldRequestFilesystemCredentials&&!wp.updates.ajaxLocked&&(wp.updates.requestFilesystemCredentials(t),$document.on("credential-modal-cancel",function(){c(".install-now.updating-message").removeClass("updating-message").text(wp.updates.l10n.installNow),wp.a11y.speak(wp.updates.l10n.updateCancel,"polite")})),wp.updates.installPlugin({slug:"woocommerce"})):CartFlowsImport._activateWc()}},c(function(){CartFlowsImport.init()})}(jQuery);
cartflows.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: CartFlows
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Create beautiful checkout pages & sales flows for WooCommerce.
6
- * Version: 1.1.18
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows
3
  * Plugin Name: CartFlows
4
  * Plugin URI: https://cartflows.com/
5
  * Description: Create beautiful checkout pages & sales flows for WooCommerce.
6
+ * Version: 1.1.20
7
  * Author: CartFlows Inc
8
  * Author URI: https://cartflows.com/
9
  * Text Domain: cartflows
changelog.txt CHANGED
@@ -1,3 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  Version 1.1.18 - Friday, 10th May 2019
2
  - Fix: Sometimes, Next step link was not working.
3
 
1
+ Version 1.1.20 - Wednesday, 12th June 2019
2
+ - New: WooCommerce dependency removed. Now, you can use CartFlows without WooCommerce.
3
+ - Fix: Analytics was not showing.
4
+ - Fix: Bank account details were not showing on the Thank You page.
5
+ - Fix: Download details were not showing on the Thank You page for PayPal.
6
+ - Fix: Variation issue fixed when the WordPress folder path is different.
7
+
8
+ Version 1.1.19 - Tuesday, 4th June 2019
9
+ - Improvement: Extra theme compatibility added.
10
+ - Improvement: Oxygen builder compatibility added.
11
+ - Fix: Floating Label issue with account fields. CSS updated.
12
+ - Fix: Remove product icon not visible in the admin area for entre theme.
13
+
14
  Version 1.1.18 - Friday, 10th May 2019
15
  - Fix: Sometimes, Next step link was not working.
16
 
classes/class-cartflows-admin.php CHANGED
@@ -1,511 +1,521 @@
1
- <?php
2
- /**
3
- * CartFlows Admin.
4
- *
5
- * @package CartFlows
6
- */
7
-
8
- /**
9
- * Class Cartflows_Admin.
10
- */
11
- class Cartflows_Admin {
12
-
13
- /**
14
- * Calls on initialization
15
- *
16
- * @since 1.0.0
17
- */
18
- public static function init() {
19
-
20
- self::initialise_plugin();
21
- self::init_hooks();
22
- }
23
-
24
- /**
25
- * Init Hooks.
26
- *
27
- * @since 1.0.0
28
- * @return void
29
- */
30
- static public function init_hooks() {
31
-
32
- if ( ! is_admin() ) {
33
- return;
34
- }
35
-
36
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin-fields.php';
37
-
38
- // Add CARTFLOWS menu option to admin.
39
- add_action( 'network_admin_menu', __CLASS__ . '::menu' );
40
- add_action( 'admin_menu', __CLASS__ . '::menu' );
41
- add_action( 'admin_menu', __CLASS__ . '::submenu', 999 );
42
-
43
- add_action( 'cartflows_render_admin_content', __CLASS__ . '::render_content' );
44
-
45
- add_action( 'init', __CLASS__ . '::settings_admin_scripts' );
46
-
47
- /* Global Addmin Script */
48
- add_action( 'admin_enqueue_scripts', __CLASS__ . '::global_admin_scripts', 20 );
49
-
50
- add_action( 'admin_footer', __CLASS__ . '::global_admin_data', 9555 );
51
-
52
- /* Add lite version class to body */
53
- add_action( 'admin_body_class', __CLASS__ . '::add_admin_body_class' );
54
-
55
- add_filter( 'plugin_action_links_' . CARTFLOWS_BASE, __CLASS__ . '::add_action_links' );
56
-
57
- }
58
-
59
- /**
60
- * Show action on plugin page.
61
- *
62
- * @param array $links links.
63
- * @return array
64
- */
65
- static public function add_action_links( $links ) {
66
- $mylinks = array(
67
- '<a href="' . admin_url( 'admin.php?page=' . CARTFLOWS_SETTINGS ) . '">Settings</a>',
68
- '<a target="_blank" href="' . esc_url( 'https://cartflows.com/docs' ) . '">Docs</a>',
69
- );
70
-
71
- if ( ! _is_cartflows_pro() ) {
72
- array_push( $mylinks, '<a style="color: #39b54a; font-weight: bold;" target="_blank" href="' . esc_url( 'https://cartflows.com/pricing/' ) . '"> Go Pro </a>' );
73
- }
74
-
75
- return array_merge( $links, $mylinks );
76
- }
77
-
78
- /**
79
- * Initialize after Cartflows pro get loaded.
80
- */
81
- static public function settings_admin_scripts() {
82
- // Enqueue admin scripts.
83
- if ( isset( $_REQUEST['page'] ) && CARTFLOWS_SETTINGS == $_REQUEST['page'] ) {
84
- add_action( 'admin_enqueue_scripts', __CLASS__ . '::styles_scripts' );
85
-
86
- self::save_settings();
87
- }
88
- }
89
- /**
90
- * Initialises the Plugin Name.
91
- *
92
- * @since 1.0.0
93
- * @return void
94
- */
95
- static public function initialise_plugin() {
96
-
97
- $name = 'Cartflows';
98
- $short_name = 'Cflows';
99
-
100
- define( 'CARTFLOWS_PLUGIN_NAME', $name );
101
- define( 'CARTFLOWS_PLUGIN_SHORT_NAME', $short_name );
102
- }
103
-
104
- /**
105
- * Renders the admin settings menu.
106
- *
107
- * @since 1.0.0
108
- * @return void
109
- */
110
- static public function menu() {
111
-
112
- if ( ! current_user_can( 'manage_options' ) ) {
113
- return;
114
- }
115
-
116
- add_menu_page(
117
- 'CartFlows',
118
- 'CartFlows',
119
- 'manage_options',
120
- CARTFLOWS_SLUG,
121
- __CLASS__ . '::render',
122
- 'data:image/svg+xml;base64,' . base64_encode( file_get_contents( CARTFLOWS_DIR . 'assets/images/cartflows-icon.svg' ) ),
123
- 39.7
124
- );
125
-
126
- }
127
-
128
- /**
129
- * Add submenu to admin menu.
130
- *
131
- * @since 1.0.0
132
- */
133
- static function submenu() {
134
-
135
- $parent_slug = CARTFLOWS_SLUG;
136
- $page_title = __( 'Settings', 'cartflows' );
137
- $menu_title = __( 'Settings', 'cartflows' );
138
- $capability = 'manage_options';
139
- $menu_slug = 'cartflows_settings';
140
- $callback = __CLASS__ . '::render';
141
-
142
- add_submenu_page(
143
- $parent_slug,
144
- $page_title,
145
- $menu_title,
146
- $capability,
147
- $menu_slug,
148
- $callback
149
- );
150
- }
151
-
152
- /**
153
- * Renders the admin settings.
154
- *
155
- * @since 1.0.0
156
- * @return void
157
- */
158
- static public function render() {
159
- $action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
160
- $action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
161
- $action = str_replace( '_', '-', $action );
162
-
163
- // Enable header icon filter below.
164
- $header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
165
-
166
- include_once CARTFLOWS_DIR . 'includes/admin/cartflows-admin.php';
167
- }
168
-
169
- /**
170
- * Renders the admin settings content.
171
- *
172
- * @since 1.0.0
173
- * @return void
174
- */
175
- static public function render_content() {
176
-
177
- $action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
178
- $action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
179
- $action = str_replace( '_', '-', $action );
180
- $action = 'general';
181
-
182
- $header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
183
-
184
- include_once CARTFLOWS_DIR . 'includes/admin/cartflows-general.php';
185
- }
186
-
187
- /**
188
- * Save Global Setting options.
189
- *
190
- * @since 1.0.0
191
- */
192
- static public function save_common_settings() {
193
-
194
- if ( isset( $_POST['cartflows-common-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-common-settings-nonce'], 'cartflows-common-settings' ) ) {
195
-
196
- $url = $_SERVER['REQUEST_URI'];
197
- $input_settings = array();
198
- $new_settings = array();
199
-
200
- if ( isset( $_POST['_cartflows_common'] ) ) {
201
-
202
- $input_settings = $_POST['_cartflows_common'];
203
-
204
- // Loop through the input and sanitize each of the values.
205
- foreach ( $input_settings as $key => $val ) {
206
-
207
- if ( is_array( $val ) ) {
208
- foreach ( $val as $k => $v ) {
209
- $new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
210
- }
211
- } else {
212
- $new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
213
- }
214
- }
215
- }
216
-
217
- Cartflows_Helper::update_admin_settings_option( '_cartflows_common', $new_settings, true );
218
-
219
- $query = array(
220
- 'message' => 'saved',
221
- );
222
-
223
- $redirect_to = add_query_arg( $query, $url );
224
-
225
- wp_redirect( $redirect_to );
226
- exit;
227
- } // End if statement.
228
- }
229
-
230
- /**
231
- * Save Debug Setting options.
232
- *
233
- * @since 1.1.14
234
- */
235
- static public function save_debug_settings() {
236
-
237
- if ( isset( $_POST['cartflows-debug-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-debug-settings-nonce'], 'cartflows-debug-settings' ) ) {
238
-
239
- $url = $_SERVER['REQUEST_URI'];
240
- $input_settings = array();
241
- $new_settings = array();
242
-
243
- if ( isset( $_POST['_cartflows_debug_data'] ) ) {
244
-
245
- $input_settings = $_POST['_cartflows_debug_data'];
246
-
247
- // Loop through the input and sanitize each of the values.
248
- foreach ( $input_settings as $key => $val ) {
249
-
250
- if ( is_array( $val ) ) {
251
- foreach ( $val as $k => $v ) {
252
- $new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
253
- }
254
- } else {
255
- $new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
256
- }
257
- }
258
- }
259
-
260
- Cartflows_Helper::update_admin_settings_option( '_cartflows_debug_data', $new_settings, true );
261
-
262
- $query = array(
263
- 'message' => 'saved',
264
- );
265
-
266
- $redirect_to = add_query_arg( $query, $url );
267
-
268
- wp_redirect( $redirect_to );
269
- exit;
270
-
271
- }
272
- }
273
-
274
- /**
275
- * Check is cartflows admin.
276
- *
277
- * @since 1.0.0
278
- * @return boolean
279
- */
280
- static public function is_global_admin() {
281
-
282
- $current_screen = get_current_screen();
283
-
284
- if (
285
- is_object( $current_screen ) &&
286
- isset( $current_screen->post_type ) &&
287
- ( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ||
288
- CARTFLOWS_STEP_POST_TYPE === $current_screen->post_type
289
- )
290
- ) {
291
- return true;
292
- }
293
- return false;
294
- }
295
-
296
- /**
297
- * Check is flow admin.
298
- *
299
- * @since 1.0.0
300
- * @return boolean
301
- */
302
- static public function is_flow_edit_admin() {
303
-
304
- $current_screen = get_current_screen();
305
-
306
- if (
307
- is_object( $current_screen ) &&
308
- isset( $current_screen->post_type ) &&
309
- ( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ) &&
310
- isset( $current_screen->base ) &&
311
- ( 'post' === $current_screen->base )
312
- ) {
313
- return true;
314
- }
315
- return false;
316
- }
317
-
318
- /**
319
- * Global Admin Scripts.
320
- *
321
- * @since 1.0.0
322
- */
323
- static public function global_admin_scripts() {
324
-
325
- $localize = array(
326
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
327
- 'ajax_nonce' => wp_create_nonce( 'cartflows-nonce' ),
328
- );
329
-
330
- wp_localize_script( 'jquery', 'cartflows_admin', apply_filters( 'cartflows_admin_js_localize', $localize ) );
331
-
332
- if ( self::is_global_admin() ) {
333
-
334
- // Styles.
335
- wp_enqueue_style( 'cartflows-global-admin', CARTFLOWS_URL . 'admin/assets/css/global-admin.css', array(), CARTFLOWS_VER );
336
- wp_style_add_data( 'cartflows-global-admin', 'rtl', 'replace' );
337
-
338
- wp_enqueue_script(
339
- 'wcf-global-admin',
340
- CARTFLOWS_URL . 'admin/assets/js/global-admin.js',
341
- array( 'jquery' ),
342
- CARTFLOWS_VER,
343
- true
344
- );
345
-
346
- do_action( 'cartflows_global_admin_scripts' );
347
- }
348
- }
349
-
350
- /**
351
- * Global Admin Data.
352
- *
353
- * @since 1.0.0
354
- */
355
- static public function global_admin_data() {
356
-
357
- $current_screen = get_current_screen();
358
-
359
- if ( ! $current_screen ) {
360
- return;
361
- }
362
-
363
- if ( 'edit-' . CARTFLOWS_FLOW_POST_TYPE != $current_screen->id ) {
364
- return;
365
- }
366
-
367
- $default_page_builder = Cartflows_Helper::get_common_setting( 'default_page_builder' );
368
- ?>
369
-
370
- <div id="wcf-remote-flow-importer" class="wcf-templates-popup-overlay">
371
- <div class="wcf-templates-popup-content">
372
- <div class="spinner"></div>
373
- <div class="wcf-templates-wrap wcf-templates-wrap-flows">
374
-
375
- <div id="wcf-remote-flow-actions" class="wcf-template-header">
376
- <div class="wcf-template-logo-wrap">
377
- <span class="wcf-cartflows-logo-img">
378
- <span class="cartflows-logo-icon"></span>
379
- </span>
380
- <span class="wcf-cartflows-title"><?php _e( 'Flows Library', 'cartflows' ); ?></span>
381
- </div>
382
- <div class="wcf-tab-wrapper">
383
- <?php if ( 'other' !== $default_page_builder ) { ?>
384
- <div id="wcf-get-started-steps">
385
- <ul class="filter-links ">
386
- <li>
387
- <a href="#" class="current" data-slug="ready-templates" data-title="<?php _e( 'Ready Templates', 'cartflows' ); ?>"><?php _e( 'Ready Templates', 'cartflows' ); ?></a>
388
- </li>
389
- <li>
390
- <a href="#" data-slug="canvas" data-title="<?php _e( 'Create Your Own', 'cartflows' ); ?>"><?php _e( 'Create Your Own', 'cartflows' ); ?></a>
391
- </li>
392
- </ul>
393
- </div>
394
- <?php } ?>
395
- </div>
396
- <div class="wcf-popup-close-wrap">
397
- <span class="close-icon"><span class="wcf-cartflow-icons dashicons dashicons-no"></span></span>
398
- </div>
399
- </div>
400
- <!-- <div class="wcf-search-form">
401
- <label class="screen-reader-text" for="wp-filter-search-input"><?php _e( 'Search Sites', 'cartflows' ); ?> </label>
402
- <input placeholder="<?php _e( 'Search Flow...', 'cartflows' ); ?>" type="text" aria-describedby="live-search-desc" class="wcf-flow-search-input">
403
- </div> -->
404
-
405
- <div id="wcf-remote-content">
406
- <?php if ( 'other' !== $default_page_builder ) { ?>
407
- <div id="wcf-ready-templates">
408
- <div id="wcf-remote-filters">
409
- <div id="wcf-page-builders"></div>
410
- <div id="wcf-categories"></div>
411
- </div>
412
- <div class="wcf-page-builder-notice"></div>
413
- <div id="wcf-remote-flow-list" class="wcf-remote-list wcf-template-list-wrap"><span class="spinner is-active"></span></div>
414
- <div id="wcf-upcoming-page-builders" style="display: none;" class="wcf-remote-list wcf-template-list-wrap"></div>
415
- </div>
416
- <?php } ?>
417
- <div id="wcf-start-from-scratch" style="<?php echo ( 'other' !== $default_page_builder ) ? 'display: none;' : ''; ?>">
418
- <div class="inner">
419
- <a href="#" class="button button-hero button-primary cartflows-flow-import-blank"><?php _e( 'Design Your Flow', 'cartflows' ); ?></a>
420
- <p class="wcf-learn-how"><a href="https://cartflows.com/docs/cartflows-step-types/" target="_blank"><?php _e( 'Learn How', 'cartflows' ); ?> <i class="dashicons dashicons-external"></i></a></p>
421
- </div>
422
- </div>
423
- </div>
424
- </div>
425
- </div>
426
- </div>
427
-
428
- <?php
429
- }
430
-
431
- /**
432
- * Enqueues the needed CSS/JS for the builder's admin settings page.
433
- *
434
- * @since 1.0.0
435
- */
436
- static public function styles_scripts() {
437
-
438
- // Styles.
439
- wp_enqueue_style( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/css/admin-menu-settings.css', array(), CARTFLOWS_VER );
440
- wp_style_add_data( 'cartflows-admin-settings', 'rtl', 'replace' );
441
-
442
- // Script.
443
- wp_enqueue_script( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/js/admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );
444
-
445
- $localize = array(
446
- 'ajax_nonce' => wp_create_nonce( 'cartflows-widget-nonce' ),
447
- );
448
-
449
- wp_localize_script( 'cartflows-admin-settings', 'cartflows', apply_filters( 'cartflows_js_localize', $localize ) );
450
-
451
- do_action( 'cartflows_admin_settings_after_enqueue_scripts' );
452
- }
453
-
454
- /**
455
- * Save All admin settings here
456
- */
457
- static public function save_settings() {
458
-
459
- // Only admins can save settings.
460
- if ( ! current_user_can( 'manage_options' ) ) {
461
- return;
462
- }
463
-
464
- self::save_common_settings();
465
- self::save_debug_settings();
466
-
467
- // Let extensions hook into saving.
468
- do_action( 'cartflows_admin_settings_save' );
469
- }
470
-
471
- /**
472
- * Get and return page URL
473
- *
474
- * @param string $menu_slug Menu name.
475
- * @since 1.0.0
476
- * @return string page url
477
- */
478
- static public function get_page_url( $menu_slug ) {
479
-
480
- $parent_page = self::$default_menu_position;
481
-
482
- if ( strpos( $parent_page, '?' ) !== false ) {
483
- $query_var = '&page=' . self::$plugin_slug;
484
- } else {
485
- $query_var = '?page=' . self::$plugin_slug;
486
- }
487
-
488
- $parent_page_url = admin_url( $parent_page . $query_var );
489
-
490
- $url = $parent_page_url . '&action=' . $menu_slug;
491
-
492
- return esc_url( $url );
493
- }
494
-
495
- /**
496
- * Admin body classes.
497
- *
498
- * Body classes to be added to <body> tag in admin page
499
- *
500
- * @param String $classes body classes returned from the filter.
501
- * @return String body classes to be added to <body> tag in admin page
502
- */
503
- static public function add_admin_body_class( $classes ) {
504
-
505
- $classes .= ' cartflows-' . CARTFLOWS_VER;
506
-
507
- return $classes;
508
- }
509
- }
510
-
511
- Cartflows_Admin::init();
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CartFlows Admin.
4
+ *
5
+ * @package CartFlows
6
+ */
7
+
8
+ /**
9
+ * Class Cartflows_Admin.
10
+ */
11
+ class Cartflows_Admin {
12
+
13
+ /**
14
+ * Calls on initialization
15
+ *
16
+ * @since 1.0.0
17
+ */
18
+ public static function init() {
19
+
20
+ self::initialise_plugin();
21
+ self::init_hooks();
22
+ }
23
+
24
+ /**
25
+ * Init Hooks.
26
+ *
27
+ * @since 1.0.0
28
+ * @return void
29
+ */
30
+ static public function init_hooks() {
31
+
32
+ if ( ! is_admin() ) {
33
+ return;
34
+ }
35
+
36
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin-fields.php';
37
+
38
+ // Add CARTFLOWS menu option to admin.
39
+ add_action( 'network_admin_menu', __CLASS__ . '::menu' );
40
+ add_action( 'admin_menu', __CLASS__ . '::menu' );
41
+ add_action( 'admin_menu', __CLASS__ . '::submenu', 999 );
42
+
43
+ add_action( 'cartflows_render_admin_content', __CLASS__ . '::render_content' );
44
+
45
+ add_action( 'init', __CLASS__ . '::settings_admin_scripts' );
46
+
47
+ /* Global Addmin Script */
48
+ add_action( 'admin_enqueue_scripts', __CLASS__ . '::global_admin_scripts', 20 );
49
+
50
+ add_action( 'admin_footer', __CLASS__ . '::global_admin_data', 9555 );
51
+
52
+ /* Add lite version class to body */
53
+ add_action( 'admin_body_class', __CLASS__ . '::add_admin_body_class' );
54
+
55
+ add_filter( 'plugin_action_links_' . CARTFLOWS_BASE, __CLASS__ . '::add_action_links' );
56
+
57
+ }
58
+
59
+
60
+ /**
61
+ * Initialize after Cartflows pro get loaded.
62
+ */
63
+ static public function settings_admin_scripts() {
64
+ // Enqueue admin scripts.
65
+ if ( isset( $_REQUEST['page'] ) && CARTFLOWS_SETTINGS == $_REQUEST['page'] ) {
66
+ add_action( 'admin_enqueue_scripts', __CLASS__ . '::styles_scripts' );
67
+
68
+ self::save_settings();
69
+ }
70
+ }
71
+ /**
72
+ * Show action on plugin page.
73
+ *
74
+ * @param array $links links.
75
+ * @return array
76
+ */
77
+ static public function add_action_links( $links ) {
78
+ $mylinks = array(
79
+ '<a href="' . admin_url( 'admin.php?page=' . CARTFLOWS_SETTINGS ) . '">Settings</a>',
80
+ '<a target="_blank" href="' . esc_url( 'https://cartflows.com/docs' ) . '">Docs</a>',
81
+ );
82
+
83
+ if ( ! _is_cartflows_pro() ) {
84
+ array_push( $mylinks, '<a style="color: #39b54a; font-weight: bold;" target="_blank" href="' . esc_url( 'https://cartflows.com/pricing/' ) . '"> Go Pro </a>' );
85
+ }
86
+
87
+ return array_merge( $links, $mylinks );
88
+ }
89
+
90
+ /**
91
+ * Initialises the Plugin Name.
92
+ *
93
+ * @since 1.0.0
94
+ * @return void
95
+ */
96
+ static public function initialise_plugin() {
97
+
98
+ $name = 'Cartflows';
99
+ $short_name = 'Cflows';
100
+
101
+ define( 'CARTFLOWS_PLUGIN_NAME', $name );
102
+ define( 'CARTFLOWS_PLUGIN_SHORT_NAME', $short_name );
103
+ }
104
+
105
+ /**
106
+ * Renders the admin settings menu.
107
+ *
108
+ * @since 1.0.0
109
+ * @return void
110
+ */
111
+ static public function menu() {
112
+
113
+ if ( ! current_user_can( 'manage_options' ) ) {
114
+ return;
115
+ }
116
+
117
+ add_menu_page(
118
+ 'CartFlows',
119
+ 'CartFlows',
120
+ 'manage_options',
121
+ CARTFLOWS_SLUG,
122
+ __CLASS__ . '::render',
123
+ 'data:image/svg+xml;base64,' . base64_encode( file_get_contents( CARTFLOWS_DIR . 'assets/images/cartflows-icon.svg' ) ),
124
+ 39.7
125
+ );
126
+
127
+ }
128
+
129
+ /**
130
+ * Add submenu to admin menu.
131
+ *
132
+ * @since 1.0.0
133
+ */
134
+ static function submenu() {
135
+
136
+ $parent_slug = CARTFLOWS_SLUG;
137
+ $page_title = __( 'Settings', 'cartflows' );
138
+ $menu_title = __( 'Settings', 'cartflows' );
139
+ $capability = 'manage_options';
140
+ $menu_slug = 'cartflows_settings';
141
+ $callback = __CLASS__ . '::render';
142
+
143
+ add_submenu_page(
144
+ $parent_slug,
145
+ $page_title,
146
+ $menu_title,
147
+ $capability,
148
+ $menu_slug,
149
+ $callback
150
+ );
151
+ }
152
+
153
+ /**
154
+ * Renders the admin settings.
155
+ *
156
+ * @since 1.0.0
157
+ * @return void
158
+ */
159
+ static public function render() {
160
+ $action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
161
+ $action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
162
+ $action = str_replace( '_', '-', $action );
163
+
164
+ // Enable header icon filter below.
165
+ $header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
166
+
167
+ include_once CARTFLOWS_DIR . 'includes/admin/cartflows-admin.php';
168
+ }
169
+
170
+ /**
171
+ * Renders the admin settings content.
172
+ *
173
+ * @since 1.0.0
174
+ * @return void
175
+ */
176
+ static public function render_content() {
177
+
178
+ $action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
179
+ $action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
180
+ $action = str_replace( '_', '-', $action );
181
+ $action = 'general';
182
+
183
+ $header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
184
+
185
+ include_once CARTFLOWS_DIR . 'includes/admin/cartflows-general.php';
186
+ }
187
+
188
+ /**
189
+ * Save Global Setting options.
190
+ *
191
+ * @since 1.0.0
192
+ */
193
+ static public function save_common_settings() {
194
+
195
+ if ( isset( $_POST['cartflows-common-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-common-settings-nonce'], 'cartflows-common-settings' ) ) {
196
+
197
+ $url = $_SERVER['REQUEST_URI'];
198
+ $input_settings = array();
199
+ $new_settings = array();
200
+
201
+ if ( isset( $_POST['_cartflows_common'] ) ) {
202
+
203
+ $input_settings = $_POST['_cartflows_common'];
204
+
205
+ // Loop through the input and sanitize each of the values.
206
+ foreach ( $input_settings as $key => $val ) {
207
+
208
+ if ( is_array( $val ) ) {
209
+ foreach ( $val as $k => $v ) {
210
+ $new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
211
+ }
212
+ } else {
213
+ $new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
214
+ }
215
+ }
216
+ }
217
+
218
+ Cartflows_Helper::update_admin_settings_option( '_cartflows_common', $new_settings, true );
219
+
220
+ $query = array(
221
+ 'message' => 'saved',
222
+ );
223
+
224
+ $redirect_to = add_query_arg( $query, $url );
225
+
226
+ wp_redirect( $redirect_to );
227
+ exit;
228
+ } // End if statement.
229
+ }
230
+
231
+ /**
232
+ * Save Debug Setting options.
233
+ *
234
+ * @since 1.1.14
235
+ */
236
+ static public function save_debug_settings() {
237
+
238
+ if ( isset( $_POST['cartflows-debug-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-debug-settings-nonce'], 'cartflows-debug-settings' ) ) {
239
+
240
+ $url = $_SERVER['REQUEST_URI'];
241
+ $input_settings = array();
242
+ $new_settings = array();
243
+
244
+ if ( isset( $_POST['_cartflows_debug_data'] ) ) {
245
+
246
+ $input_settings = $_POST['_cartflows_debug_data'];
247
+
248
+ // Loop through the input and sanitize each of the values.
249
+ foreach ( $input_settings as $key => $val ) {
250
+
251
+ if ( is_array( $val ) ) {
252
+ foreach ( $val as $k => $v ) {
253
+ $new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
254
+ }
255
+ } else {
256
+ $new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
257
+ }
258
+ }
259
+ }
260
+
261
+ Cartflows_Helper::update_admin_settings_option( '_cartflows_debug_data', $new_settings, true );
262
+
263
+ $query = array(
264
+ 'message' => 'saved',
265
+ );
266
+
267
+ $redirect_to = add_query_arg( $query, $url );
268
+
269
+ wp_redirect( $redirect_to );
270
+ exit;
271
+
272
+ }
273
+ }
274
+
275
+ /**
276
+ * Check is cartflows admin.
277
+ *
278
+ * @since 1.0.0
279
+ * @return boolean
280
+ */
281
+ static public function is_global_admin() {
282
+
283
+ $current_screen = get_current_screen();
284
+
285
+ if (
286
+ is_object( $current_screen ) &&
287
+ isset( $current_screen->post_type ) &&
288
+ ( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ||
289
+ CARTFLOWS_STEP_POST_TYPE === $current_screen->post_type
290
+ )
291
+ ) {
292
+ return true;
293
+ }
294
+ return false;
295
+ }
296
+
297
+ /**
298
+ * Check is flow admin.
299
+ *
300
+ * @since 1.0.0
301
+ * @return boolean
302
+ */
303
+ static public function is_flow_edit_admin() {
304
+
305
+ $current_screen = get_current_screen();
306
+
307
+ if (
308
+ is_object( $current_screen ) &&
309
+ isset( $current_screen->post_type ) &&
310
+ ( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ) &&
311
+ isset( $current_screen->base ) &&
312
+ ( 'post' === $current_screen->base )
313
+ ) {
314
+ return true;
315
+ }
316
+ return false;
317
+ }
318
+
319
+ /**
320
+ * Global Admin Scripts.
321
+ *
322
+ * @since 1.0.0
323
+ */
324
+ static public function global_admin_scripts() {
325
+
326
+ $installed_plugins = get_plugins();
327
+ $is_wc_installed = isset( $installed_plugins['woocommerce/woocommerce.php'] ) ? true : false;
328
+
329
+ $localize = array(
330
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
331
+ 'ajax_nonce' => wp_create_nonce( 'cartflows-nonce' ),
332
+ 'wc_status' => array(
333
+ 'installed' => $is_wc_installed,
334
+ 'active' => wcf()->is_woo_active,
335
+ ),
336
+ 'wc_activating_message' => __( 'Installing and activating..', 'cartflows' ),
337
+ 'wc_install_error' => __( 'There was an error with the installation of plugin.', 'cartflows' ),
338
+ );
339
+
340
+ wp_localize_script( 'jquery', 'cartflows_admin', apply_filters( 'cartflows_admin_js_localize', $localize ) );
341
+
342
+ if ( self::is_global_admin() ) {
343
+
344
+ // Styles.
345
+ wp_enqueue_style( 'cartflows-global-admin', CARTFLOWS_URL . 'admin/assets/css/global-admin.css', array(), CARTFLOWS_VER );
346
+ wp_style_add_data( 'cartflows-global-admin', 'rtl', 'replace' );
347
+
348
+ wp_enqueue_script(
349
+ 'wcf-global-admin',
350
+ CARTFLOWS_URL . 'admin/assets/js/global-admin.js',
351
+ array( 'jquery' ),
352
+ CARTFLOWS_VER,
353
+ true
354
+ );
355
+
356
+ do_action( 'cartflows_global_admin_scripts' );
357
+ }
358
+ }
359
+
360
+ /**
361
+ * Global Admin Data.
362
+ *
363
+ * @since 1.0.0
364
+ */
365
+ static public function global_admin_data() {
366
+
367
+ $current_screen = get_current_screen();
368
+
369
+ if ( ! $current_screen ) {
370
+ return;
371
+ }
372
+
373
+ if ( 'edit-' . CARTFLOWS_FLOW_POST_TYPE != $current_screen->id ) {
374
+ return;
375
+ }
376
+
377
+ $default_page_builder = Cartflows_Helper::get_common_setting( 'default_page_builder' );
378
+ ?>
379
+
380
+ <div id="wcf-remote-flow-importer" class="wcf-templates-popup-overlay">
381
+ <div class="wcf-templates-popup-content">
382
+ <div class="spinner"></div>
383
+ <div class="wcf-templates-wrap wcf-templates-wrap-flows">
384
+
385
+ <div id="wcf-remote-flow-actions" class="wcf-template-header">
386
+ <div class="wcf-template-logo-wrap">
387
+ <span class="wcf-cartflows-logo-img">
388
+ <span class="cartflows-logo-icon"></span>
389
+ </span>
390
+ <span class="wcf-cartflows-title"><?php _e( 'Flows Library', 'cartflows' ); ?></span>
391
+ </div>
392
+ <div class="wcf-tab-wrapper">
393
+ <?php if ( 'other' !== $default_page_builder ) { ?>
394
+ <div id="wcf-get-started-steps">
395
+ <ul class="filter-links ">
396
+ <li>
397
+ <a href="#" class="current" data-slug="ready-templates" data-title="<?php _e( 'Ready Templates', 'cartflows' ); ?>"><?php _e( 'Ready Templates', 'cartflows' ); ?></a>
398
+ </li>
399
+ <li>
400
+ <a href="#" data-slug="canvas" data-title="<?php _e( 'Create Your Own', 'cartflows' ); ?>"><?php _e( 'Create Your Own', 'cartflows' ); ?></a>
401
+ </li>
402
+ </ul>
403
+ </div>
404
+ <?php } ?>
405
+ </div>
406
+ <div class="wcf-popup-close-wrap">
407
+ <span class="close-icon"><span class="wcf-cartflow-icons dashicons dashicons-no"></span></span>
408
+ </div>
409
+ </div>
410
+ <!-- <div class="wcf-search-form">
411
+ <label class="screen-reader-text" for="wp-filter-search-input"><?php _e( 'Search Sites', 'cartflows' ); ?> </label>
412
+ <input placeholder="<?php _e( 'Search Flow...', 'cartflows' ); ?>" type="text" aria-describedby="live-search-desc" class="wcf-flow-search-input">
413
+ </div> -->
414
+
415
+ <div id="wcf-remote-content">
416
+ <?php if ( 'other' !== $default_page_builder ) { ?>
417
+ <div id="wcf-ready-templates">
418
+ <div id="wcf-remote-filters">
419
+ <div id="wcf-page-builders"></div>
420
+ <div id="wcf-categories"></div>
421
+ </div>
422
+ <div class="wcf-page-builder-notice"></div>
423
+ <div id="wcf-remote-flow-list" class="wcf-remote-list wcf-template-list-wrap"><span class="spinner is-active"></span></div>
424
+ <div id="wcf-upcoming-page-builders" style="display: none;" class="wcf-remote-list wcf-template-list-wrap"></div>
425
+ </div>
426
+ <?php } ?>
427
+ <div id="wcf-start-from-scratch" style="<?php echo ( 'other' !== $default_page_builder ) ? 'display: none;' : ''; ?>">
428
+ <div class="inner">
429
+ <a href="#" class="button button-hero button-primary cartflows-flow-import-blank"><?php _e( 'Design Your Flow', 'cartflows' ); ?></a>
430
+ <p class="wcf-learn-how"><a href="https://cartflows.com/docs/cartflows-step-types/" target="_blank"><?php _e( 'Learn How', 'cartflows' ); ?> <i class="dashicons dashicons-external"></i></a></p>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </div>
435
+ </div>
436
+ </div>
437
+
438
+ <?php
439
+ }
440
+
441
+ /**
442
+ * Enqueues the needed CSS/JS for the builder's admin settings page.
443
+ *
444
+ * @since 1.0.0
445
+ */
446
+ static public function styles_scripts() {
447
+
448
+ // Styles.
449
+ wp_enqueue_style( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/css/admin-menu-settings.css', array(), CARTFLOWS_VER );
450
+ wp_style_add_data( 'cartflows-admin-settings', 'rtl', 'replace' );
451
+
452
+ // Script.
453
+ wp_enqueue_script( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/js/admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );
454
+
455
+ $localize = array(
456
+ 'ajax_nonce' => wp_create_nonce( 'cartflows-widget-nonce' ),
457
+ );
458
+
459
+ wp_localize_script( 'cartflows-admin-settings', 'cartflows', apply_filters( 'cartflows_js_localize', $localize ) );
460
+
461
+ do_action( 'cartflows_admin_settings_after_enqueue_scripts' );
462
+ }
463
+
464
+ /**
465
+ * Save All admin settings here
466
+ */
467
+ static public function save_settings() {
468
+
469
+ // Only admins can save settings.
470
+ if ( ! current_user_can( 'manage_options' ) ) {
471
+ return;
472
+ }
473
+
474
+ self::save_common_settings();
475
+ self::save_debug_settings();
476
+
477
+ // Let extensions hook into saving.
478
+ do_action( 'cartflows_admin_settings_save' );
479
+ }
480
+
481
+ /**
482
+ * Get and return page URL
483
+ *
484
+ * @param string $menu_slug Menu name.
485
+ * @since 1.0.0
486
+ * @return string page url
487
+ */
488
+ static public function get_page_url( $menu_slug ) {
489
+
490
+ $parent_page = self::$default_menu_position;
491
+
492
+ if ( strpos( $parent_page, '?' ) !== false ) {
493
+ $query_var = '&page=' . self::$plugin_slug;
494
+ } else {
495
+ $query_var = '?page=' . self::$plugin_slug;
496
+ }
497
+
498
+ $parent_page_url = admin_url( $parent_page . $query_var );
499
+
500
+ $url = $parent_page_url . '&action=' . $menu_slug;
501
+
502
+ return esc_url( $url );
503
+ }
504
+
505
+ /**
506
+ * Admin body classes.
507
+ *
508
+ * Body classes to be added to <body> tag in admin page
509
+ *
510
+ * @param String $classes body classes returned from the filter.
511
+ * @return String body classes to be added to <body> tag in admin page
512
+ */
513
+ static public function add_admin_body_class( $classes ) {
514
+
515
+ $classes .= ' cartflows-' . CARTFLOWS_VER;
516
+
517
+ return $classes;
518
+ }
519
+ }
520
+
521
+ Cartflows_Admin::init();
classes/class-cartflows-compatibility.php CHANGED
@@ -192,7 +192,7 @@ if ( ! class_exists( 'Cartflows_Compatibility' ) ) {
192
  $theme = wp_get_theme();
193
  }
194
 
195
- if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme ) {
196
  return true;
197
  }
198
 
@@ -206,7 +206,7 @@ if ( ! class_exists( 'Cartflows_Compatibility' ) ) {
206
  */
207
  function is_divi_theme_installed() {
208
  foreach ( (array) wp_get_themes() as $theme_dir => $theme ) {
209
- if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme ) {
210
  return true;
211
  }
212
  }
192
  $theme = wp_get_theme();
193
  }
194
 
195
+ if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme || 'Extra' == $theme->name || 'Extra' == $theme->parent_theme ) {
196
  return true;
197
  }
198
 
206
  */
207
  function is_divi_theme_installed() {
208
  foreach ( (array) wp_get_themes() as $theme_dir => $theme ) {
209
+ if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme || 'Extra' == $theme->name || 'Extra' == $theme->parent_theme ) {
210
  return true;
211
  }
212
  }
classes/class-cartflows-flow-frontend.php CHANGED
@@ -67,6 +67,7 @@ class Cartflows_Flow_Frontend {
67
  */
68
  function is_flow_testmode( $flow_id = '' ) {
69
 
 
70
  if ( ! $flow_id ) {
71
  $flow_id = wcf()->utils->get_flow_id();
72
  }
67
  */
68
  function is_flow_testmode( $flow_id = '' ) {
69
 
70
+ return false;
71
  if ( ! $flow_id ) {
72
  $flow_id = wcf()->utils->get_flow_id();
73
  }
classes/class-cartflows-frontend.php CHANGED
@@ -279,6 +279,10 @@ class Cartflows_Frontend {
279
 
280
  if ( wcf()->utils->is_step_post_type() ) {
281
 
 
 
 
 
282
  /* CSS Compatibility for All theme */
283
  add_filter( 'woocommerce_enqueue_styles', array( $this, 'woo_default_css' ), 9999 );
284
 
@@ -349,7 +353,7 @@ class Cartflows_Frontend {
349
  }
350
 
351
  $localize = array(
352
- 'ajax_url' => admin_url( 'admin-ajax.php' ),
353
  'is_pb_preview' => $compatibility->is_page_builder_preview(),
354
  'current_theme' => $compatibility->get_current_theme(),
355
  'current_flow' => $flow,
279
 
280
  if ( wcf()->utils->is_step_post_type() ) {
281
 
282
+ if ( ! wcf()->is_woo_active && wcf()->utils->check_is_woo_required_page() ) {
283
+ wp_die( ' This page requires WooCommerce plugin installed and activated!', 'WooCommerce Required' );
284
+ }
285
+
286
  /* CSS Compatibility for All theme */
287
  add_filter( 'woocommerce_enqueue_styles', array( $this, 'woo_default_css' ), 9999 );
288
 
353
  }
354
 
355
  $localize = array(
356
+ 'ajax_url' => admin_url( 'admin-ajax.php', 'relative' ),
357
  'is_pb_preview' => $compatibility->is_page_builder_preview(),
358
  'current_theme' => $compatibility->get_current_theme(),
359
  'current_flow' => $flow,
classes/class-cartflows-functions.php CHANGED
@@ -386,3 +386,16 @@ function _get_wcf_base_offer_id() {
386
  return false;
387
  }
388
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
  return false;
387
  }
388
 
389
+
390
+ /**
391
+ * Define a constant if it is not already defined.
392
+ *
393
+ * @since 3.0.0
394
+ * @param string $name Constant name.
395
+ * @param mixed $value Value.
396
+ */
397
+ function wcf_maybe_define_constant( $name, $value ) {
398
+ if ( ! defined( $name ) ) {
399
+ define( $name, $value );
400
+ }
401
+ }
classes/class-cartflows-importer.php CHANGED
@@ -586,10 +586,23 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
586
  <img src="<?php echo esc_attr( CARTFLOWS_URL ); ?>assets/images/400x400.jpg" />
587
  <# } #>
588
  </div>
589
- <a href="<?php echo CARTFLOWS_TEMPLATES_URL . 'preview/?'; ?>flow={{ data.items[ key ].id }}&title={{{ data.items[ key ].title.rendered }}}" class="preview" target="_blank">Preview <i class="dashicons dashicons-external"></i></a>
590
  <# if( data.items[ key ].flow_type && 'pro' === data.items[ key ].flow_type.slug ) { #>
591
  <span class="wcf-flow-type pro"><?php _e( 'Pro', 'cartflows' ); ?></span>
592
  <# } #>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593
  </span>
594
  <div class="template-id-container">
595
  <h3 class="template-name"> {{{ data.items[ key ].title.rendered }}} </h3>
@@ -609,7 +622,11 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
609
  } #>
610
 
611
  <# if( data.items[ key ].licence_status && 'valid' === data.items[ key ].licence_status ) { #>
 
612
  <a data-flow-steps="{{ flow_steps }}" data-required-plugin-group="{{required_plugin_group}}" href="#" class="button button-primary cartflows-step-import" data-template-id="{{ data.items[ key ].id }}">{{ import_btn_title }}</a>
 
 
 
613
  <# } else if( CartFlowsImportVars._is_pro_active ) { #>
614
  <a target="_blank" href="<?php echo esc_url( admin_url( 'plugins.php?cartflows-license-popup' ) ); ?>" class="button button-primary"><?php _e( 'Activate License', 'cartflows' ); ?></a>
615
  <# } else { #>
@@ -670,7 +687,21 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
670
  <# } #>
671
  </div>
672
  <div id="wcf_create_notice" class=""><a href="https://cartflows.com/" target="_blank"></a></div>
673
- <a href="<?php echo CARTFLOWS_TEMPLATES_URL . 'preview/?'; ?>step={{ data.items[ key ].id }}&title={{{ data.items[ key ].title.rendered }}}" class="preview" target="_blank">Preview <i class="dashicons dashicons-external"></i></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
674
  <# if( data.items[ key ].flow_type && 'pro' === data.items[ key ].flow_type.slug ) { #>
675
  <span class="wcf-flow-type pro"><?php _e( 'Pro', 'cartflows' ); ?></span>
676
  <# } #>
@@ -696,7 +727,13 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
696
  #>
697
 
698
  <# if( data.items[ key ].licence_status && 'valid' === data.items[ key ].licence_status ) { #>
 
 
699
  <a data-slug="{{step_slug}}" data-title="{{step_title}}" data-flow-steps="{{ flow_steps }}" data-required-plugin-group="{{required_plugin_group}}" href="#" class="button button-primary cartflows-step-import" data-template-id="{{ data.items[ key ].id }}">{{ import_btn_title }}</a>
 
 
 
 
700
  <# } else if( CartFlowsImportVars._is_pro_active ) { #>
701
  <a target="_blank" href="<?php echo esc_url( admin_url( 'plugins.php?cartflows-license-popup' ) ); ?>" class="button button-primary"><?php _e( 'Activate License', 'cartflows' ); ?></a>
702
  <# } else { #>
@@ -868,8 +905,14 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
868
  wp_style_add_data( 'cartflows-import', 'rtl', 'replace' );
869
  wp_enqueue_script( 'cartflows-import', CARTFLOWS_URL . 'assets/js/import.js', array( 'jquery', 'wp-util', 'cartflows-rest-api', 'updates' ), CARTFLOWS_VER, true );
870
 
 
 
 
 
871
  $localize_vars = array(
872
  '_is_pro_active' => _is_cartflows_pro(),
 
 
873
 
874
  // Flow and its rest fields.
875
  'flow' => CARTFLOWS_FLOW_POST_TYPE,
@@ -1044,25 +1087,27 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
1044
  /**
1045
  * Import & Set type.
1046
  */
1047
- $term = isset( $response['data']['step_type'] ) ? $response['data']['step_type'] : '';
 
1048
  $term_slug = '';
1049
  if ( $term ) {
1050
 
1051
  $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
1052
- $term_exist = term_exists( $term->name, $taxonomy );
1053
 
1054
  if ( empty( $term_exist ) ) {
1055
  $terms = array(
1056
  array(
1057
  'name' => $term->name,
 
1058
  ),
1059
  );
1060
 
1061
  Cartflows_Step_Post_Type::get_instance()->add_terms( $taxonomy, $terms );
1062
- wcf()->logger->import_log( '(✓) Created new term ' . $term->name );
1063
  }
1064
 
1065
- $current_term = term_exists( $term->name, $taxonomy );
1066
 
1067
  // Set type object.
1068
  $data = get_term( $current_term['term_id'], $taxonomy );
@@ -1145,32 +1190,44 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
1145
 
1146
  $flow_steps = array();
1147
 
1148
- $steps_data = array(
1149
- 'landing' => __( 'Landing Page', 'cartflows' ),
1150
- 'checkout' => __( 'Checkout Page', 'cartflows' ),
1151
- 'thankyou' => __( 'Thank You Page', 'cartflows' ),
1152
- );
 
 
 
 
 
 
 
 
 
 
1153
 
1154
- foreach ( $steps_data as $slug => $title ) {
 
 
 
 
 
 
 
 
 
 
 
1155
 
1156
- $post_content = '';
1157
 
1158
- switch ( $slug ) {
1159
- case 'checkout':
1160
- $post_content = '';
1161
- break;
1162
- case 'thankyou':
1163
- $post_content = '';
1164
- break;
1165
- default:
1166
- $post_content = '';
1167
- break;
1168
- }
1169
 
1170
  $step_id = wp_insert_post(
1171
  array(
1172
  'post_type' => CARTFLOWS_STEP_POST_TYPE,
1173
- 'post_title' => $title,
1174
  'post_content' => $post_content,
1175
  'post_status' => 'publish',
1176
  )
@@ -1184,16 +1241,17 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
1184
 
1185
  $flow_steps[] = array(
1186
  'id' => $step_id,
1187
- 'title' => $title,
1188
- 'type' => $slug,
1189
  );
1190
 
1191
  // insert post meta.
1192
  update_post_meta( $step_id, 'wcf-flow-id', $flow_id );
1193
- update_post_meta( $step_id, 'wcf-step-type', $slug );
1194
 
1195
- wp_set_object_terms( $step_id, $slug, CARTFLOWS_TAXONOMY_STEP_TYPE );
1196
  wp_set_object_terms( $step_id, 'flow-' . $flow_id, CARTFLOWS_TAXONOMY_STEP_FLOW );
 
1197
  }
1198
  }
1199
 
@@ -1338,20 +1396,21 @@ if ( ! class_exists( 'CartFlows_Importer' ) ) :
1338
  update_post_meta( $new_step_id, 'wcf-flow-id', $flow_id );
1339
 
1340
  $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
1341
- $term_exist = term_exists( $step_type_title, $taxonomy );
1342
 
1343
  if ( empty( $term_exist ) ) {
1344
  $terms = array(
1345
  array(
1346
  'name' => $step_type_title,
 
1347
  ),
1348
  );
1349
 
1350
  Cartflows_Step_Post_Type::get_instance()->add_terms( $taxonomy, $terms );
1351
- wcf()->logger->import_log( '(✓) Created new term ' . $step_type_title );
1352
  }
1353
 
1354
- $current_term = term_exists( $step_type_title, $taxonomy );
1355
 
1356
  // Set type object.
1357
  $data = get_term( $current_term['term_id'], $taxonomy );
586
  <img src="<?php echo esc_attr( CARTFLOWS_URL ); ?>assets/images/400x400.jpg" />
587
  <# } #>
588
  </div>
 
589
  <# if( data.items[ key ].flow_type && 'pro' === data.items[ key ].flow_type.slug ) { #>
590
  <span class="wcf-flow-type pro"><?php _e( 'Pro', 'cartflows' ); ?></span>
591
  <# } #>
592
+ <# if( data.items[ key ].woo_required ) { #>
593
+ <div class="notice notice-info" style="width: auto;">
594
+ <p class="wcf-learn-how">
595
+ Install/Activate WooCommerce to use this template.
596
+ <a href="https://cartflows.com/docs/cartflows-step-types/" target="_blank">
597
+ <strong><?php _e( 'Learn How', 'cartflows' ); ?></strong>
598
+ <i class="dashicons dashicons-external"></i>
599
+ </a>
600
+ </p>
601
+ </div>
602
+ <# } else { #>
603
+ <a href="<?php echo CARTFLOWS_TEMPLATES_URL . 'preview/?'; ?>flow={{ data.items[ key ].id }}&title={{{ data.items[ key ].title.rendered }}}" class="preview" target="_blank">Preview <i class="dashicons dashicons-external"></i></a>
604
+ <# } #>
605
+
606
  </span>
607
  <div class="template-id-container">
608
  <h3 class="template-name"> {{{ data.items[ key ].title.rendered }}} </h3>
622
  } #>
623
 
624
  <# if( data.items[ key ].licence_status && 'valid' === data.items[ key ].licence_status ) { #>
625
+ <# if( ! data.items[ key ].woo_required ) { #>
626
  <a data-flow-steps="{{ flow_steps }}" data-required-plugin-group="{{required_plugin_group}}" href="#" class="button button-primary cartflows-step-import" data-template-id="{{ data.items[ key ].id }}">{{ import_btn_title }}</a>
627
+ <# } else { #>
628
+ <a href='#' class='wcf-activate-wc button-primary'>Install & activate Woo</a>
629
+ <# } #>
630
  <# } else if( CartFlowsImportVars._is_pro_active ) { #>
631
  <a target="_blank" href="<?php echo esc_url( admin_url( 'plugins.php?cartflows-license-popup' ) ); ?>" class="button button-primary"><?php _e( 'Activate License', 'cartflows' ); ?></a>
632
  <# } else { #>
687
  <# } #>
688
  </div>
689
  <div id="wcf_create_notice" class=""><a href="https://cartflows.com/" target="_blank"></a></div>
690
+
691
+ <# if( data.items[ key ].woo_required ) { #>
692
+ <div class="notice notice-info" style="width: auto;">
693
+ <p class="wcf-learn-how">
694
+ Install/Activate WooCommerce to use this template.
695
+ <a href="https://cartflows.com/docs/cartflows-step-types/" target="_blank">
696
+ <strong><?php _e( 'Learn How', 'cartflows' ); ?></strong>
697
+ <i class="dashicons dashicons-external"></i>
698
+ </a>
699
+ </p>
700
+ </div>
701
+ <# } else { #>
702
+ <a href="<?php echo CARTFLOWS_TEMPLATES_URL . 'preview/?'; ?>step={{ data.items[ key ].id }}&title={{{ data.items[ key ].title.rendered }}}" class="preview" target="_blank">Preview <i class="dashicons dashicons-external"></i></a>
703
+ <# } #>
704
+
705
  <# if( data.items[ key ].flow_type && 'pro' === data.items[ key ].flow_type.slug ) { #>
706
  <span class="wcf-flow-type pro"><?php _e( 'Pro', 'cartflows' ); ?></span>
707
  <# } #>
727
  #>
728
 
729
  <# if( data.items[ key ].licence_status && 'valid' === data.items[ key ].licence_status ) { #>
730
+
731
+ <# if( ! data.items[ key ].woo_required ) { #>
732
  <a data-slug="{{step_slug}}" data-title="{{step_title}}" data-flow-steps="{{ flow_steps }}" data-required-plugin-group="{{required_plugin_group}}" href="#" class="button button-primary cartflows-step-import" data-template-id="{{ data.items[ key ].id }}">{{ import_btn_title }}</a>
733
+ <# } else { #>
734
+ <a href='#' class='wcf-activate-wc button-primary'>Install & activate Woo</a>
735
+ <# } #>
736
+
737
  <# } else if( CartFlowsImportVars._is_pro_active ) { #>
738
  <a target="_blank" href="<?php echo esc_url( admin_url( 'plugins.php?cartflows-license-popup' ) ); ?>" class="button button-primary"><?php _e( 'Activate License', 'cartflows' ); ?></a>
739
  <# } else { #>
905
  wp_style_add_data( 'cartflows-import', 'rtl', 'replace' );
906
  wp_enqueue_script( 'cartflows-import', CARTFLOWS_URL . 'assets/js/import.js', array( 'jquery', 'wp-util', 'cartflows-rest-api', 'updates' ), CARTFLOWS_VER, true );
907
 
908
+ $installed_plugins = get_plugins();
909
+ $is_wc_installed = isset( $installed_plugins['woocommerce/woocommerce.php'] ) ? 'yes' : 'no';
910
+ $is_wc_activated = wcf()->is_woo_active ? 'yes' : 'no';
911
+
912
  $localize_vars = array(
913
  '_is_pro_active' => _is_cartflows_pro(),
914
+ 'is_wc_installed' => $is_wc_installed,
915
+ 'is_wc_activated' => $is_wc_activated,
916
 
917
  // Flow and its rest fields.
918
  'flow' => CARTFLOWS_FLOW_POST_TYPE,
1087
  /**
1088
  * Import & Set type.
1089
  */
1090
+ $term = isset( $response['data']['step_type'] ) ? $response['data']['step_type'] : '';
1091
+
1092
  $term_slug = '';
1093
  if ( $term ) {
1094
 
1095
  $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
1096
+ $term_exist = term_exists( $term->slug, $taxonomy );
1097
 
1098
  if ( empty( $term_exist ) ) {
1099
  $terms = array(
1100
  array(
1101
  'name' => $term->name,
1102
+ 'slug' => $term->slug,
1103
  ),
1104
  );
1105
 
1106
  Cartflows_Step_Post_Type::get_instance()->add_terms( $taxonomy, $terms );
1107
+ wcf()->logger->import_log( '(✓) Created new term name ' . $term->name . ' | term slug ' . $term->slug );
1108
  }
1109
 
1110
+ $current_term = term_exists( $term->slug, $taxonomy );
1111
 
1112
  // Set type object.
1113
  $data = get_term( $current_term['term_id'], $taxonomy );
1190
 
1191
  $flow_steps = array();
1192
 
1193
+ if ( wcf()->is_woo_active ) {
1194
+ $steps_data = array(
1195
+ 'sales' => array(
1196
+ 'title' => __( 'Sales Landing', 'cartflows' ),
1197
+ 'type' => 'landing',
1198
+ ),
1199
+ 'order-form' => array(
1200
+ 'title' => __( 'Checkout (Woo)', 'cartflows' ),
1201
+ 'type' => 'checkout',
1202
+ ),
1203
+ 'order-confirmation' => array(
1204
+ 'title' => __( 'Thank You (Woo)', 'cartflows' ),
1205
+ 'type' => 'thankyou',
1206
+ ),
1207
+ );
1208
 
1209
+ } else {
1210
+ $steps_data = array(
1211
+ 'landing' => array(
1212
+ 'title' => __( 'Landing', 'cartflows' ),
1213
+ 'type' => 'landing',
1214
+ ),
1215
+ 'thankyou' => array(
1216
+ 'title' => __( 'Thank You', 'cartflows' ),
1217
+ 'type' => 'landing',
1218
+ ),
1219
+ );
1220
+ }
1221
 
1222
+ foreach ( $steps_data as $slug => $data ) {
1223
 
1224
+ $post_content = '';
1225
+ $step_type = trim( $data['type'] );
 
 
 
 
 
 
 
 
 
1226
 
1227
  $step_id = wp_insert_post(
1228
  array(
1229
  'post_type' => CARTFLOWS_STEP_POST_TYPE,
1230
+ 'post_title' => $data['title'],
1231
  'post_content' => $post_content,
1232
  'post_status' => 'publish',
1233
  )
1241
 
1242
  $flow_steps[] = array(
1243
  'id' => $step_id,
1244
+ 'title' => $data['title'],
1245
+ 'type' => $step_type,
1246
  );
1247
 
1248
  // insert post meta.
1249
  update_post_meta( $step_id, 'wcf-flow-id', $flow_id );
1250
+ update_post_meta( $step_id, 'wcf-step-type', $step_type );
1251
 
1252
+ wp_set_object_terms( $step_id, $step_type, CARTFLOWS_TAXONOMY_STEP_TYPE );
1253
  wp_set_object_terms( $step_id, 'flow-' . $flow_id, CARTFLOWS_TAXONOMY_STEP_FLOW );
1254
+
1255
  }
1256
  }
1257
 
1396
  update_post_meta( $new_step_id, 'wcf-flow-id', $flow_id );
1397
 
1398
  $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
1399
+ $term_exist = term_exists( $step_type_slug, $taxonomy );
1400
 
1401
  if ( empty( $term_exist ) ) {
1402
  $terms = array(
1403
  array(
1404
  'name' => $step_type_title,
1405
+ 'slug' => $step_type_slug,
1406
  ),
1407
  );
1408
 
1409
  Cartflows_Step_Post_Type::get_instance()->add_terms( $taxonomy, $terms );
1410
+ wcf()->logger->import_log( '(✓) Created new term name ' . $step_type_title . ' | term slug ' . $step_type_slug );
1411
  }
1412
 
1413
+ $current_term = term_exists( $step_type_slug, $taxonomy );
1414
 
1415
  // Set type object.
1416
  $data = get_term( $current_term['term_id'], $taxonomy );
classes/class-cartflows-loader.php CHANGED
@@ -1,455 +1,575 @@
1
- <?php
2
- /**
3
- * CartFlows Loader.
4
- *
5
- * @package CartFlows
6
- */
7
-
8
- if ( ! class_exists( 'Cartflows_Loader' ) ) {
9
-
10
- /**
11
- * Class Cartflows_Loader.
12
- */
13
- final class Cartflows_Loader {
14
-
15
- /**
16
- * Member Variable
17
- *
18
- * @var instance
19
- */
20
- private static $instance = null;
21
-
22
- /**
23
- * Member Variable
24
- *
25
- * @var utils
26
- */
27
- public $utils = null;
28
-
29
- /**
30
- * Member Variable
31
- *
32
- * @var logger
33
- */
34
- public $logger = null;
35
-
36
- /**
37
- * Member Variable
38
- *
39
- * @var session
40
- */
41
- public $session = null;
42
-
43
-
44
- /**
45
- * Member Variable
46
- *
47
- * @var options
48
- */
49
- public $options = null;
50
-
51
- /**
52
- * Member Variable
53
- *
54
- * @var meta
55
- */
56
- public $meta = null;
57
-
58
- /**
59
- * Member Variable
60
- *
61
- * @var flow
62
- */
63
- public $flow = null;
64
-
65
- /**
66
- * Member Variable
67
- *
68
- * @var assets_vars
69
- */
70
- public $assets_vars = null;
71
-
72
- /**
73
- * Initiator
74
- */
75
- public static function get_instance() {
76
-
77
- if ( is_null( self::$instance ) ) {
78
-
79
- self::$instance = new self;
80
-
81
- /**
82
- * CartFlows loaded.
83
- *
84
- * Fires when Cartflows was fully loaded and instantiated.
85
- *
86
- * @since 1.0.0
87
- */
88
- do_action( 'cartflows_loaded' );
89
- }
90
-
91
- return self::$instance;
92
- }
93
-
94
- /**
95
- * Constructor
96
- */
97
- public function __construct() {
98
-
99
- $this->define_constants();
100
-
101
- // Activation hook.
102
- register_activation_hook( CARTFLOWS_FILE, array( $this, 'activation_reset' ) );
103
-
104
- // deActivation hook.
105
- register_deactivation_hook( CARTFLOWS_FILE, array( $this, 'deactivation_reset' ) );
106
-
107
- add_action( 'plugins_loaded', array( $this, 'load_plugin' ), 99 );
108
- add_action( 'plugins_loaded', array( $this, 'load_cf_textdomain' ) );
109
- }
110
-
111
- /**
112
- * Defines all constants
113
- *
114
- * @since 1.0.0
115
- */
116
- public function define_constants() {
117
-
118
- define( 'CARTFLOWS_BASE', plugin_basename( CARTFLOWS_FILE ) );
119
- define( 'CARTFLOWS_DIR', plugin_dir_path( CARTFLOWS_FILE ) );
120
- define( 'CARTFLOWS_URL', plugins_url( '/', CARTFLOWS_FILE ) );
121
- define( 'CARTFLOWS_VER', '1.1.18' );
122
- define( 'CARTFLOWS_SLUG', 'cartflows' );
123
- define( 'CARTFLOWS_SETTINGS', 'cartflows_settings' );
124
-
125
- define( 'CARTFLOWS_FLOW_POST_TYPE', 'cartflows_flow' );
126
- define( 'CARTFLOWS_STEP_POST_TYPE', 'cartflows_step' );
127
-
128
- if ( ! defined( 'CARTFLOWS_SERVER_URL' ) ) {
129
- define( 'CARTFLOWS_SERVER_URL', 'https://my.cartflows.com/' );
130
- }
131
- define( 'CARTFLOWS_DOMAIN_URL', 'https://cartflows.com/' );
132
- define( 'CARTFLOWS_TEMPLATES_URL', 'https://templates.cartflows.com/' );
133
- define( 'CARTFLOWS_TAXONOMY_STEP_TYPE', 'cartflows_step_type' );
134
- define( 'CARTFLOWS_TAXONOMY_STEP_FLOW', 'cartflows_step_flow' );
135
-
136
- if ( ! defined( 'CARTFLOWS_TAXONOMY_STEP_PAGE_BUILDER' ) ) {
137
- define( 'CARTFLOWS_TAXONOMY_STEP_PAGE_BUILDER', 'cartflows_step_page_builder' );
138
- }
139
- if ( ! defined( 'CARTFLOWS_TAXONOMY_FLOW_PAGE_BUILDER' ) ) {
140
- define( 'CARTFLOWS_TAXONOMY_FLOW_PAGE_BUILDER', 'cartflows_flow_page_builder' );
141
- }
142
- if ( ! defined( 'CARTFLOWS_TAXONOMY_FLOW_CATEGORY' ) ) {
143
- define( 'CARTFLOWS_TAXONOMY_FLOW_CATEGORY', 'cartflows_flow_category' );
144
- }
145
- }
146
-
147
- /**
148
- * Loads plugin files.
149
- *
150
- * @since 1.0.0
151
- *
152
- * @return void
153
- */
154
- function load_plugin() {
155
-
156
- if ( ! function_exists( 'WC' ) ) {
157
- add_action( 'admin_notices', array( $this, 'fails_to_load' ) );
158
- return;
159
- }
160
-
161
- $this->load_helper_files_components();
162
- $this->load_core_files();
163
- $this->load_core_components();
164
-
165
- add_action( 'wp_loaded', array( $this, 'initialize' ) );
166
- add_action( 'cartflows_pro_init', array( $this, 'licence_setup' ) );
167
-
168
- /**
169
- * CartFlows Init.
170
- *
171
- * Fires when Cartflows is instantiated.
172
- *
173
- * @since 1.0.0
174
- */
175
- do_action( 'cartflows_init' );
176
- }
177
-
178
- /**
179
- * Licence Setup Fallback.
180
- *
181
- * @since 1.1.16
182
- *
183
- * @return void
184
- */
185
- function licence_setup() {
186
-
187
- if ( version_compare( CARTFLOWS_PRO_VER, '1.1.13', '<' ) ) {
188
-
189
- if ( method_exists( 'Cartflows_Pro_Loader', 'licence_setup' ) ) {
190
- wcf_pro()->licence_setup();
191
- }
192
- }
193
- }
194
-
195
- /**
196
- * Load Helper Files and Components.
197
- *
198
- * @since 1.0.0
199
- *
200
- * @return void
201
- */
202
- function load_helper_files_components() {
203
-
204
- /* Public Utils */
205
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-utils.php';
206
-
207
- /* Public Session */
208
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-session.php';
209
-
210
- /* Public Global namespace functions */
211
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-functions.php';
212
-
213
- /* Admin Helper */
214
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-helper.php';
215
-
216
- /* Meta Default Values */
217
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-default-meta.php';
218
-
219
- $this->utils = Cartflows_Utils::get_instance();
220
- $this->session = Cartflows_Session::get_instance();
221
- $this->options = Cartflows_Default_Meta::get_instance();
222
- }
223
-
224
- /**
225
- * Init hooked function.
226
- *
227
- * @since 1.0.0
228
- *
229
- * @return void
230
- */
231
- function initialize() {
232
- $this->assets_vars = $this->utils->get_assets_path();
233
- }
234
-
235
- /**
236
- * Load Core Files.
237
- *
238
- * @since 1.0.0
239
- *
240
- * @return void
241
- */
242
- function load_core_files() {
243
-
244
- /* Update compatibility. */
245
- require_once CARTFLOWS_DIR . 'classes/class-cartflows-update.php';
246
-
247
- /* Page builder compatibilty class */
248
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-compatibility.php';
249
-
250
- /* Admin Meta Fields*/
251
- include_once CARTFLOWS_DIR . 'classes/fields/typography/class-cartflows-font-families.php';
252
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-meta-fields.php';
253
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-meta.php';
254
-
255
- /* Cloning */
256
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-cloning.php';
257
-
258
- /* Admin Settings */
259
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin.php';
260
-
261
- /* Core Modules */
262
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-logger.php';
263
-
264
- /* Frontend Global */
265
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-frontend.php';
266
- require_once CARTFLOWS_DIR . 'classes/class-cartflows-flow-frontend.php';
267
-
268
- /* Modules */
269
- include_once CARTFLOWS_DIR . 'modules/flow/class-cartflows-flow.php';
270
- include_once CARTFLOWS_DIR . 'modules/landing/class-cartflows-landing.php';
271
- include_once CARTFLOWS_DIR . 'modules/checkout/class-cartflows-checkout.php';
272
- include_once CARTFLOWS_DIR . 'modules/thankyou/class-cartflows-thankyou.php';
273
-
274
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-api.php';
275
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-importer-core.php';
276
-
277
- include_once CARTFLOWS_DIR . 'classes/batch-process/class-cartflows-batch-process.php';
278
- include_once CARTFLOWS_DIR . 'classes/class-cartflows-importer.php';
279
- }
280
-
281
- /**
282
- * Load Core Components.
283
- *
284
- * @since 1.0.0
285
- *
286
- * @return void
287
- */
288
- function load_core_components() {
289
-
290
- $this->meta = Cartflows_Meta_Fields::get_instance();
291
- $this->logger = Cartflows_Logger::get_instance();
292
- $this->flow = Cartflows_Flow_Frontend::get_instance();
293
- }
294
-
295
- /**
296
- * Load CartFlows Pro Text Domain.
297
- * This will load the translation textdomain depending on the file priorities.
298
- * 1. Global Languages /wp-content/languages/cartflows/ folder
299
- * 2. Local dorectory /wp-content/plugins/cartflows/languages/ folder
300
- *
301
- * @since 1.0.3
302
- * @return void
303
- */
304
- public function load_cf_textdomain() {
305
-
306
- // Default languages directory for CartFlows Pro.
307
- $lang_dir = CARTFLOWS_DIR . 'languages/';
308
-
309
- /**
310
- * Filters the languages directory path to use for CartFlows Pro.
311
- *
312
- * @param string $lang_dir The languages directory path.
313
- */
314
- $lang_dir = apply_filters( 'cartflows_languages_directory', $lang_dir );
315
-
316
- // Traditional WordPress plugin locale filter.
317
- global $wp_version;
318
-
319
- $get_locale = get_locale();
320
-
321
- if ( $wp_version >= 4.7 ) {
322
- $get_locale = get_user_locale();
323
- }
324
-
325
- /**
326
- * Language Locale for CartFlows Pro
327
- *
328
- * @var $get_locale The locale to use.
329
- * Uses get_user_locale()` in WordPress 4.7 or greater,
330
- * otherwise uses `get_locale()`.
331
- */
332
- $locale = apply_filters( 'plugin_locale', $get_locale, 'cartflows' );
333
- $mofile = sprintf( '%1$s-%2$s.mo', 'cartflows', $locale );
334
-
335
- // Setup paths to current locale file.
336
- $mofile_local = $lang_dir . $mofile;
337
- $mofile_global = WP_LANG_DIR . '/plugins/' . $mofile;
338
-
339
- if ( file_exists( $mofile_global ) ) {
340
- // Look in global /wp-content/languages/cartflows/ folder.
341
- load_textdomain( 'cartflows', $mofile_global );
342
- } elseif ( file_exists( $mofile_local ) ) {
343
- // Look in local /wp-content/plugins/cartflows/languages/ folder.
344
- load_textdomain( 'cartflows', $mofile_local );
345
- } else {
346
- // Load the default language files.
347
- load_plugin_textdomain( 'cartflows', false, $lang_dir );
348
- }
349
- }
350
-
351
- /**
352
- * Fires admin notice when Elementor is not installed and activated.
353
- *
354
- * @since 1.0.0
355
- *
356
- * @return void
357
- */
358
- public function fails_to_load() {
359
-
360
- $screen = get_current_screen();
361
-
362
- if ( isset( $screen->parent_file ) && 'plugins.php' === $screen->parent_file && 'update' === $screen->id ) {
363
- return;
364
- }
365
-
366
- $class = 'notice notice-error';
367
- /* translators: %s: html tags */
368
- $message = sprintf( __( 'The %1$sCartFlows%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated.', 'cartflows' ), '<strong>', '</strong>' );
369
-
370
- $plugin = 'woocommerce/woocommerce.php';
371
-
372
- if ( _is_woo_installed() ) {
373
- if ( ! current_user_can( 'activate_plugins' ) ) {
374
- return;
375
- }
376
-
377
- $action_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $plugin . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $plugin );
378
- $button_label = __( 'Activate WooCommerce', 'cartflows' );
379
-
380
- } else {
381
- if ( ! current_user_can( 'install_plugins' ) ) {
382
- return;
383
- }
384
-
385
- $action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
386
- $button_label = __( 'Install WooCommerce', 'cartflows' );
387
- }
388
-
389
- $button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
390
-
391
- printf( '<div class="%1$s"><p>%2$s</p>%3$s</div>', esc_attr( $class ), $message, $button );
392
- }
393
-
394
- /**
395
- * Activation Reset
396
- */
397
- function activation_reset() {
398
-
399
- include_once CARTFLOWS_DIR . 'modules/flow/classes/class-cartflows-flow-post-type.php';
400
- include_once CARTFLOWS_DIR . 'modules/flow/classes/class-cartflows-step-post-type.php';
401
-
402
- Cartflows_Flow_Post_Type::get_instance()->flow_post_type();
403
- Cartflows_Step_Post_Type::get_instance()->step_post_type();
404
- flush_rewrite_rules();
405
- }
406
-
407
- /**
408
- * Deactivation Reset
409
- */
410
- function deactivation_reset() {
411
- }
412
-
413
- /**
414
- * Logger Class Instance
415
- */
416
- function logger() {
417
- return Cartflows_Logger::get_instance();
418
- }
419
-
420
-
421
- }
422
-
423
- /**
424
- * Prepare if class 'Cartflows_Loader' exist.
425
- * Kicking this off by calling 'get_instance()' method
426
- */
427
- Cartflows_Loader::get_instance();
428
- }
429
-
430
- /**
431
- * Get global class.
432
- *
433
- * @return object
434
- */
435
- function wcf() {
436
- return Cartflows_Loader::get_instance();
437
- }
438
-
439
- if ( ! function_exists( '_is_woo_installed' ) ) {
440
-
441
- /**
442
- * Is woocommerce plugin installed.
443
- *
444
- * @since 1.0.0
445
- *
446
- * @access public
447
- */
448
- function _is_woo_installed() {
449
-
450
- $path = 'woocommerce/woocommerce.php';
451
- $plugins = get_plugins();
452
-
453
- return isset( $plugins[ $path ] );
454
- }
455
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CartFlows Loader.
4
+ *
5
+ * @package CartFlows
6
+ */
7
+
8
+ if ( ! class_exists( 'Cartflows_Loader' ) ) {
9
+
10
+ /**
11
+ * Class Cartflows_Loader.
12
+ */
13
+ final class Cartflows_Loader {
14
+
15
+ /**
16
+ * Member Variable
17
+ *
18
+ * @var instance
19
+ */
20
+ private static $instance = null;
21
+
22
+ /**
23
+ * Member Variable
24
+ *
25
+ * @var utils
26
+ */
27
+ public $utils = null;
28
+
29
+ /**
30
+ * Member Variable
31
+ *
32
+ * @var logger
33
+ */
34
+ public $logger = null;
35
+
36
+ /**
37
+ * Member Variable
38
+ *
39
+ * @var session
40
+ */
41
+ public $session = null;
42
+
43
+
44
+ /**
45
+ * Member Variable
46
+ *
47
+ * @var options
48
+ */
49
+ public $options = null;
50
+
51
+ /**
52
+ * Member Variable
53
+ *
54
+ * @var meta
55
+ */
56
+ public $meta = null;
57
+
58
+ /**
59
+ * Member Variable
60
+ *
61
+ * @var flow
62
+ */
63
+ public $flow = null;
64
+
65
+ /**
66
+ * Member Variable
67
+ *
68
+ * @var assets_vars
69
+ */
70
+ public $assets_vars = null;
71
+
72
+ /**
73
+ * Member Variable
74
+ *
75
+ * @var assets_vars
76
+ */
77
+
78
+ public $is_woo_active = true;
79
+
80
+ /**
81
+ * Initiator
82
+ */
83
+ public static function get_instance() {
84
+
85
+ if ( is_null( self::$instance ) ) {
86
+
87
+ self::$instance = new self;
88
+
89
+ /**
90
+ * CartFlows loaded.
91
+ *
92
+ * Fires when Cartflows was fully loaded and instantiated.
93
+ *
94
+ * @since 1.0.0
95
+ */
96
+ do_action( 'cartflows_loaded' );
97
+ }
98
+
99
+ return self::$instance;
100
+ }
101
+
102
+ /**
103
+ * Constructor
104
+ */
105
+ public function __construct() {
106
+
107
+ $this->define_constants();
108
+
109
+ // Activation hook.
110
+ register_activation_hook( CARTFLOWS_FILE, array( $this, 'activation_reset' ) );
111
+
112
+ // deActivation hook.
113
+ register_deactivation_hook( CARTFLOWS_FILE, array( $this, 'deactivation_reset' ) );
114
+
115
+ add_action( 'plugins_loaded', array( $this, 'load_plugin' ), 99 );
116
+ add_action( 'plugins_loaded', array( $this, 'load_cf_textdomain' ) );
117
+ }
118
+
119
+ /**
120
+ * Defines all constants
121
+ *
122
+ * @since 1.0.0
123
+ */
124
+ public function define_constants() {
125
+
126
+ define( 'CARTFLOWS_BASE', plugin_basename( CARTFLOWS_FILE ) );
127
+ define( 'CARTFLOWS_DIR', plugin_dir_path( CARTFLOWS_FILE ) );
128
+ define( 'CARTFLOWS_URL', plugins_url( '/', CARTFLOWS_FILE ) );
129
+ define( 'CARTFLOWS_VER', '1.1.20' );
130
+ define( 'CARTFLOWS_SLUG', 'cartflows' );
131
+ define( 'CARTFLOWS_SETTINGS', 'cartflows_settings' );
132
+
133
+ define( 'CARTFLOWS_FLOW_POST_TYPE', 'cartflows_flow' );
134
+ define( 'CARTFLOWS_STEP_POST_TYPE', 'cartflows_step' );
135
+
136
+ if ( ! defined( 'CARTFLOWS_SERVER_URL' ) ) {
137
+ define( 'CARTFLOWS_SERVER_URL', 'https://my.cartflows.com/' );
138
+ }
139
+ define( 'CARTFLOWS_DOMAIN_URL', 'https://cartflows.com/' );
140
+ define( 'CARTFLOWS_TEMPLATES_URL', 'https://templates.cartflows.com/' );
141
+ define( 'CARTFLOWS_TAXONOMY_STEP_TYPE', 'cartflows_step_type' );
142
+ define( 'CARTFLOWS_TAXONOMY_STEP_FLOW', 'cartflows_step_flow' );
143
+
144
+ if ( ! defined( 'CARTFLOWS_TAXONOMY_STEP_PAGE_BUILDER' ) ) {
145
+ define( 'CARTFLOWS_TAXONOMY_STEP_PAGE_BUILDER', 'cartflows_step_page_builder' );
146
+ }
147
+ if ( ! defined( 'CARTFLOWS_TAXONOMY_FLOW_PAGE_BUILDER' ) ) {
148
+ define( 'CARTFLOWS_TAXONOMY_FLOW_PAGE_BUILDER', 'cartflows_flow_page_builder' );
149
+ }
150
+ if ( ! defined( 'CARTFLOWS_TAXONOMY_FLOW_CATEGORY' ) ) {
151
+ define( 'CARTFLOWS_TAXONOMY_FLOW_CATEGORY', 'cartflows_flow_category' );
152
+ }
153
+
154
+ if ( ! defined( 'CARTFLOWS_LOG_DIR' ) ) {
155
+
156
+ $upload_dir = wp_upload_dir( null, false );
157
+
158
+ define( 'CARTFLOWS_LOG_DIR', $upload_dir['basedir'] . '/cartflows-logs/' );
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Loads plugin files.
164
+ *
165
+ * @since 1.0.0
166
+ *
167
+ * @return void
168
+ */
169
+ function load_plugin() {
170
+
171
+ // if ( ! function_exists( 'WC' ) ) {.
172
+ // add_action( 'admin_notices', array( $this, 'fails_to_load' ) );.
173
+ // return;.
174
+ // }.
175
+ $this->load_helper_files_components();
176
+ $this->load_core_files();
177
+ $this->load_core_components();
178
+
179
+ add_action( 'wp_loaded', array( $this, 'initialize' ) );
180
+ add_action( 'cartflows_pro_init', array( $this, 'after_cartflows_pro_init' ) );
181
+
182
+ if ( ! $this->is_woo_active ) {
183
+ add_action( 'admin_notices', array( $this, 'fails_to_load' ) );
184
+ }
185
+
186
+ /**
187
+ * CartFlows Init.
188
+ *
189
+ * Fires when Cartflows is instantiated.
190
+ *
191
+ * @since 1.0.0
192
+ */
193
+ do_action( 'cartflows_init' );
194
+ }
195
+
196
+ /**
197
+ * After CartFlows Pro init.
198
+ *
199
+ * @since 1.1.19
200
+ *
201
+ * @return void
202
+ */
203
+ function after_cartflows_pro_init() {
204
+
205
+ if ( ! is_admin() ) {
206
+ return;
207
+ }
208
+
209
+ if ( version_compare( CARTFLOWS_PRO_VER, '1.1.19', '<' ) ) {
210
+ add_action( 'admin_notices', array( $this, 'required_cartflows_pro_notice' ) );
211
+ }
212
+
213
+ $this->licence_setup();
214
+ }
215
+
216
+ /**
217
+ * Required CartFlows Pro Notice.
218
+ *
219
+ * @since 1.1.19
220
+ *
221
+ * @return void
222
+ */
223
+ function required_cartflows_pro_notice() {
224
+
225
+ $required_pro_version = '1.1.19';
226
+
227
+ $class = 'notice notice-warning';
228
+ /* translators: %s: html tags */
229
+ $message = sprintf( __( 'You are using older version of %1$sCartFlows Pro%2$s. Please update %1$sCartFlows Pro%2$s plugin to version %1$s%3$s%2$s or higher.', 'cartflows' ), '<strong>', '</strong>', $required_pro_version );
230
+
231
+ printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
232
+ }
233
+
234
+ /**
235
+ * Licence Setup Fallback.
236
+ *
237
+ * @since 1.1.16
238
+ *
239
+ * @return void
240
+ */
241
+ function licence_setup() {
242
+
243
+ if ( version_compare( CARTFLOWS_PRO_VER, '1.1.13', '<' ) ) {
244
+
245
+ if ( method_exists( 'Cartflows_Pro_Loader', 'licence_setup' ) ) {
246
+ wcf_pro()->licence_setup();
247
+ }
248
+ }
249
+ }
250
+
251
+ /**
252
+ * Load Helper Files and Components.
253
+ *
254
+ * @since 1.0.0
255
+ *
256
+ * @return void
257
+ */
258
+ function load_helper_files_components() {
259
+
260
+ $this->is_woo_active = function_exists( 'WC' );
261
+
262
+ /* Public Utils */
263
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-utils.php';
264
+
265
+ /* Public Session */
266
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-session.php';
267
+
268
+ /* Public Global namespace functions */
269
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-functions.php';
270
+
271
+ /* Admin Helper */
272
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-helper.php';
273
+
274
+ /* Meta Default Values */
275
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-default-meta.php';
276
+
277
+ $this->utils = Cartflows_Utils::get_instance();
278
+ $this->session = Cartflows_Session::get_instance();
279
+ $this->options = Cartflows_Default_Meta::get_instance();
280
+ }
281
+
282
+ /**
283
+ * Init hooked function.
284
+ *
285
+ * @since 1.0.0
286
+ *
287
+ * @return void
288
+ */
289
+ function initialize() {
290
+ $this->assets_vars = $this->utils->get_assets_path();
291
+ }
292
+
293
+ /**
294
+ * Load Core Files.
295
+ *
296
+ * @since 1.0.0
297
+ *
298
+ * @return void
299
+ */
300
+ function load_core_files() {
301
+
302
+ /* Update compatibility. */
303
+ require_once CARTFLOWS_DIR . 'classes/class-cartflows-update.php';
304
+
305
+ /* Page builder compatibilty class */
306
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-compatibility.php';
307
+
308
+ /* Admin Meta Fields*/
309
+ include_once CARTFLOWS_DIR . 'classes/fields/typography/class-cartflows-font-families.php';
310
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-meta-fields.php';
311
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-meta.php';
312
+
313
+ /* Cloning */
314
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-cloning.php';
315
+
316
+ /* Admin Settings */
317
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin.php';
318
+
319
+ /* Logger */
320
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-log-handler-interface.php';
321
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-log-handler.php';
322
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-log-handler-file.php';
323
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-log-levels.php';
324
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-logger-interface.php';
325
+ include_once CARTFLOWS_DIR . 'classes/logger/class-cartflows-wc-logger.php';
326
+
327
+ /* Core Modules */
328
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-logger.php';
329
+
330
+ /* Frontend Global */
331
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-frontend.php';
332
+ require_once CARTFLOWS_DIR . 'classes/class-cartflows-flow-frontend.php';
333
+
334
+ /* Modules */
335
+ include_once CARTFLOWS_DIR . 'modules/flow/class-cartflows-flow.php';
336
+ include_once CARTFLOWS_DIR . 'modules/landing/class-cartflows-landing.php';
337
+
338
+ if ( $this->is_woo_active ) {
339
+ include_once CARTFLOWS_DIR . 'modules/checkout/class-cartflows-checkout.php';
340
+ include_once CARTFLOWS_DIR . 'modules/thankyou/class-cartflows-thankyou.php';
341
+ }
342
+
343
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-api.php';
344
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-importer-core.php';
345
+
346
+ include_once CARTFLOWS_DIR . 'classes/batch-process/class-cartflows-batch-process.php';
347
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-importer.php';
348
+
349
+ include_once CARTFLOWS_DIR . 'classes/class-cartflows-wizard.php';
350
+
351
+ }
352
+
353
+ /**
354
+ * Load Core Components.
355
+ *
356
+ * @since 1.0.0
357
+ *
358
+ * @return void
359
+ */
360
+ function load_core_components() {
361
+
362
+ $this->meta = Cartflows_Meta_Fields::get_instance();
363
+ $this->logger = Cartflows_Logger::get_instance();
364
+ $this->flow = Cartflows_Flow_Frontend::get_instance();
365
+ }
366
+
367
+ /**
368
+ * Create files/directories.
369
+ */
370
+ function create_files() {
371
+
372
+ // Install files and folders for uploading files and prevent hotlinking.
373
+ $upload_dir = wp_upload_dir();
374
+
375
+ $files = array(
376
+ array(
377
+ 'base' => CARTFLOWS_LOG_DIR,
378
+ 'file' => '.htaccess',
379
+ 'content' => 'deny from all',
380
+ ),
381
+ array(
382
+ 'base' => CARTFLOWS_LOG_DIR,
383
+ 'file' => 'index.html',
384
+ 'content' => '',
385
+ ),
386
+ );
387
+
388
+ foreach ( $files as $file ) {
389
+ if ( wp_mkdir_p( $file['base'] ) && ! file_exists( trailingslashit( $file['base'] ) . $file['file'] ) ) {
390
+ $file_handle = @fopen( trailingslashit( $file['base'] ) . $file['file'], 'w' ); // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_system_read_fopen
391
+ if ( $file_handle ) {
392
+ fwrite( $file_handle, $file['content'] ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_fwrite
393
+ fclose( $file_handle ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_fclose
394
+ }
395
+ }
396
+ }
397
+ }
398
+ /**
399
+ * Load CartFlows Pro Text Domain.
400
+ * This will load the translation textdomain depending on the file priorities.
401
+ * 1. Global Languages /wp-content/languages/cartflows/ folder
402
+ * 2. Local dorectory /wp-content/plugins/cartflows/languages/ folder
403
+ *
404
+ * @since 1.0.3
405
+ * @return void
406
+ */
407
+ public function load_cf_textdomain() {
408
+
409
+ // Default languages directory for CartFlows Pro.
410
+ $lang_dir = CARTFLOWS_DIR . 'languages/';
411
+
412
+ /**
413
+ * Filters the languages directory path to use for CartFlows Pro.
414
+ *
415
+ * @param string $lang_dir The languages directory path.
416
+ */
417
+ $lang_dir = apply_filters( 'cartflows_languages_directory', $lang_dir );
418
+
419
+ // Traditional WordPress plugin locale filter.
420
+ global $wp_version;
421
+
422
+ $get_locale = get_locale();
423
+
424
+ if ( $wp_version >= 4.7 ) {
425
+ $get_locale = get_user_locale();
426
+ }
427
+
428
+ /**
429
+ * Language Locale for CartFlows Pro
430
+ *
431
+ * @var $get_locale The locale to use.
432
+ * Uses get_user_locale()` in WordPress 4.7 or greater,
433
+ * otherwise uses `get_locale()`.
434
+ */
435
+ $locale = apply_filters( 'plugin_locale', $get_locale, 'cartflows' );
436
+ $mofile = sprintf( '%1$s-%2$s.mo', 'cartflows', $locale );
437
+
438
+ // Setup paths to current locale file.
439
+ $mofile_local = $lang_dir . $mofile;
440
+ $mofile_global = WP_LANG_DIR . '/plugins/' . $mofile;
441
+
442
+ if ( file_exists( $mofile_global ) ) {
443
+ // Look in global /wp-content/languages/cartflows/ folder.
444
+ load_textdomain( 'cartflows', $mofile_global );
445
+ } elseif ( file_exists( $mofile_local ) ) {
446
+ // Look in local /wp-content/plugins/cartflows/languages/ folder.
447
+ load_textdomain( 'cartflows', $mofile_local );
448
+ } else {
449
+ // Load the default language files.
450
+ load_plugin_textdomain( 'cartflows', false, $lang_dir );
451
+ }
452
+ }
453
+
454
+ /**
455
+ * Fires admin notice when Elementor is not installed and activated.
456
+ *
457
+ * @since 1.0.0
458
+ *
459
+ * @return void
460
+ */
461
+ public function fails_to_load() {
462
+
463
+ $screen = get_current_screen();
464
+
465
+ if ( ! wcf()->utils->is_step_post_type() ) {
466
+ return;
467
+ }
468
+
469
+ if ( ! wcf()->utils->check_is_woo_required_page() ) {
470
+ return;
471
+ }
472
+
473
+ $skip_notice = false;
474
+
475
+ wp_localize_script( 'wcf-global-admin', 'cartflows_woo', array( 'show_update_post' => $skip_notice ) );
476
+
477
+ $class = 'notice notice-warning';
478
+ /* translators: %s: html tags */
479
+ $message = sprintf( __( 'This %1$sCartFlows%2$s page requires %1$sWooCommerce%2$s plugin installed & activated.', 'cartflows' ), '<strong>', '</strong>' );
480
+
481
+ $plugin = 'woocommerce/woocommerce.php';
482
+
483
+ if ( _is_woo_installed() ) {
484
+ if ( ! current_user_can( 'activate_plugins' ) ) {
485
+ return;
486
+ }
487
+
488
+ $action_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $plugin . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $plugin );
489
+ $button_label = __( 'Activate WooCommerce', 'cartflows' );
490
+
491
+ } else {
492
+ if ( ! current_user_can( 'install_plugins' ) ) {
493
+ return;
494
+ }
495
+
496
+ $action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
497
+ $button_label = __( 'Install WooCommerce', 'cartflows' );
498
+ }
499
+
500
+ $button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
501
+
502
+ printf( '<div class="%1$s"><p>%2$s</p>%3$s</div>', esc_attr( $class ), $message, $button );
503
+ }
504
+
505
+ /**
506
+ * Activation Reset
507
+ */
508
+ function activation_reset() {
509
+
510
+ if ( ! defined( 'CARTFLOWS_LOG_DIR' ) ) {
511
+
512
+ $upload_dir = wp_upload_dir( null, false );
513
+
514
+ define( 'CARTFLOWS_LOG_DIR', $upload_dir['basedir'] . '/cartflows-logs/' );
515
+ }
516
+
517
+ $this->create_files();
518
+
519
+ include_once CARTFLOWS_DIR . 'modules/flow/classes/class-cartflows-flow-post-type.php';
520
+ include_once CARTFLOWS_DIR . 'modules/flow/classes/class-cartflows-step-post-type.php';
521
+
522
+ Cartflows_Flow_Post_Type::get_instance()->flow_post_type();
523
+ Cartflows_Step_Post_Type::get_instance()->step_post_type();
524
+ flush_rewrite_rules();
525
+ }
526
+
527
+ /**
528
+ * Deactivation Reset
529
+ */
530
+ function deactivation_reset() {
531
+ }
532
+
533
+ /**
534
+ * Logger Class Instance
535
+ */
536
+ function logger() {
537
+ return Cartflows_Logger::get_instance();
538
+ }
539
+
540
+
541
+ }
542
+
543
+ /**
544
+ * Prepare if class 'Cartflows_Loader' exist.
545
+ * Kicking this off by calling 'get_instance()' method
546
+ */
547
+ Cartflows_Loader::get_instance();
548
+ }
549
+
550
+ /**
551
+ * Get global class.
552
+ *
553
+ * @return object
554
+ */
555
+ function wcf() {
556
+ return Cartflows_Loader::get_instance();
557
+ }
558
+
559
+ if ( ! function_exists( '_is_woo_installed' ) ) {
560
+
561
+ /**
562
+ * Is woocommerce plugin installed.
563
+ *
564
+ * @since 1.0.0
565
+ *
566
+ * @access public
567
+ */
568
+ function _is_woo_installed() {
569
+
570
+ $path = 'woocommerce/woocommerce.php';
571
+ $plugins = get_plugins();
572
+
573
+ return isset( $plugins[ $path ] );
574
+ }
575
+ }
classes/class-cartflows-logger.php CHANGED
@@ -44,6 +44,28 @@ class Cartflows_Logger {
44
 
45
  /* Load WC Logger */
46
  add_action( 'init', array( $this, 'init_wc_logger' ), 99 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  }
48
 
49
  /**
@@ -52,7 +74,9 @@ class Cartflows_Logger {
52
  * @since 1.0.0
53
  */
54
  function init_wc_logger() {
55
- $this->logger = new WC_Logger();
 
 
56
  }
57
 
58
  /**
@@ -67,7 +91,7 @@ class Cartflows_Logger {
67
  $enable_log = apply_filters( 'cartflows_enable_log', 'enable' );
68
 
69
  if ( 'enable' === $enable_log &&
70
- is_a( $this->logger, 'WC_Logger' ) &&
71
  did_action( 'plugins_loaded' )
72
  ) {
73
 
@@ -86,13 +110,71 @@ class Cartflows_Logger {
86
 
87
  if ( defined( 'WP_DEBUG' ) &&
88
  WP_DEBUG &&
89
- is_a( $this->logger, 'WC_Logger' ) &&
90
  did_action( 'plugins_loaded' )
91
  ) {
92
 
93
  $this->logger->log( $level, $message, array( 'source' => 'cartflows-import' ) );
94
  }
95
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
 
98
  /**
44
 
45
  /* Load WC Logger */
46
  add_action( 'init', array( $this, 'init_wc_logger' ), 99 );
47
+
48
+ $page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
49
+
50
+ if ( CARTFLOWS_SETTINGS === $page ) {
51
+ add_filter( 'admin_footer_text', array( $this, 'add_footer_link' ), 99 );
52
+ }
53
+
54
+ }
55
+
56
+ /**
57
+ * Add footer link.
58
+ */
59
+ function add_footer_link() {
60
+ $settings_url = add_query_arg(
61
+ array(
62
+ 'page' => CARTFLOWS_SETTINGS,
63
+ 'cartflows-error-log' => 1,
64
+ ),
65
+ admin_url( '/admin.php' )
66
+ );
67
+
68
+ echo '<span id="footer-thankyou"> Thank you for using <a href="https://cartflows.com/">CartFlows</a></span> | <a href="' . $settings_url . '"> View Logs </a>';
69
  }
70
 
71
  /**
74
  * @since 1.0.0
75
  */
76
  function init_wc_logger() {
77
+ if ( class_exists( 'CartFlows_WC_Logger' ) ) {
78
+ $this->logger = new CartFlows_WC_Logger();
79
+ }
80
  }
81
 
82
  /**
91
  $enable_log = apply_filters( 'cartflows_enable_log', 'enable' );
92
 
93
  if ( 'enable' === $enable_log &&
94
+ is_a( $this->logger, 'CartFlows_WC_Logger' ) &&
95
  did_action( 'plugins_loaded' )
96
  ) {
97
 
110
 
111
  if ( defined( 'WP_DEBUG' ) &&
112
  WP_DEBUG &&
113
+ is_a( $this->logger, 'CartFlows_WC_Logger' ) &&
114
  did_action( 'plugins_loaded' )
115
  ) {
116
 
117
  $this->logger->log( $level, $message, array( 'source' => 'cartflows-import' ) );
118
  }
119
  }
120
+
121
+ /**
122
+ * Get all log files in the log directory.
123
+ *
124
+ * @return array
125
+ */
126
+ public static function get_log_files() {
127
+ $files = scandir( CARTFLOWS_LOG_DIR );
128
+ $result = array();
129
+
130
+ if ( ! empty( $files ) ) {
131
+ foreach ( $files as $key => $value ) {
132
+ if ( ! in_array( $value, array( '.', '..' ), true ) ) {
133
+ if ( ! is_dir( $value ) && strstr( $value, '.log' ) ) {
134
+ $result[ sanitize_title( $value ) ] = $value;
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ return $result;
141
+ }
142
+
143
+ /**
144
+ * Return the log file handle.
145
+ *
146
+ * @param string $filename Filename to get the handle for.
147
+ * @return string
148
+ */
149
+ public static function get_log_file_handle( $filename ) {
150
+ return substr( $filename, 0, strlen( $filename ) > 48 ? strlen( $filename ) - 48 : strlen( $filename ) - 4 );
151
+ }
152
+
153
+ /**
154
+ * Show the log page contents for file log handler.
155
+ */
156
+ public static function status_logs_file() {
157
+
158
+ if ( ! empty( $_REQUEST['handle'] ) ) {
159
+
160
+ if ( empty( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( wp_unslash( $_REQUEST['_wpnonce'] ), 'remove_log' ) ) {
161
+ wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'cartflows' ) );
162
+ }
163
+ wp_delete_file( CARTFLOWS_LOG_DIR . rtrim( $_REQUEST['handle'], '-log' ) . '.log' );
164
+ echo "<div style='padding: 15px;' class='updated inline'> Log deleted successfully! </div>";
165
+ }
166
+
167
+ $logs = self::get_log_files();
168
+ if ( ! empty( $_REQUEST['log_file'] ) && isset( $logs[ sanitize_title( wp_unslash( $_REQUEST['log_file'] ) ) ] ) ) {
169
+ $viewed_log = $logs[ sanitize_title( wp_unslash( $_REQUEST['log_file'] ) ) ];
170
+ } elseif ( ! empty( $logs ) ) {
171
+ $viewed_log = current( $logs );
172
+ }
173
+ $handle = ! empty( $viewed_log ) ? self::get_log_file_handle( $viewed_log ) : '';
174
+
175
+ include_once CARTFLOWS_DIR . 'includes/admin/cartflows-error-log.php';
176
+ }
177
+
178
  }
179
 
180
  /**
classes/class-cartflows-meta-fields.php CHANGED
@@ -70,7 +70,7 @@ class Cartflows_Meta_Fields {
70
  wp_enqueue_script(
71
  'wcf-admin-meta',
72
  CARTFLOWS_URL . 'admin/meta-assets/js/admin-edit.js',
73
- array( 'jquery', 'select2', 'wp-color-picker' ),
74
  CARTFLOWS_VER,
75
  true
76
  );
70
  wp_enqueue_script(
71
  'wcf-admin-meta',
72
  CARTFLOWS_URL . 'admin/meta-assets/js/admin-edit.js',
73
+ array( 'jquery', 'wp-color-picker' ),
74
  CARTFLOWS_VER,
75
  true
76
  );
classes/class-cartflows-update.php CHANGED
@@ -36,7 +36,7 @@ if ( ! class_exists( 'Cartflows_Update' ) ) :
36
  * Constructor
37
  */
38
  public function __construct() {
39
- add_action( 'admin_init', __CLASS__ . '::init' );
40
  }
41
 
42
  /**
@@ -45,7 +45,7 @@ if ( ! class_exists( 'Cartflows_Update' ) ) :
45
  * @since 1.0.0
46
  * @return void
47
  */
48
- static public function init() {
49
 
50
  do_action( 'cartflows_update_before' );
51
 
@@ -63,11 +63,31 @@ if ( ! class_exists( 'Cartflows_Update' ) ) :
63
  return;
64
  }
65
 
 
 
66
  // Update auto saved version number.
67
  update_option( 'cartflows-version', CARTFLOWS_VER );
68
 
69
  do_action( 'cartflows_update_after' );
70
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
 
73
  /**
36
  * Constructor
37
  */
38
  public function __construct() {
39
+ add_action( 'admin_init', array( $this, 'init' ) );
40
  }
41
 
42
  /**
45
  * @since 1.0.0
46
  * @return void
47
  */
48
+ function init() {
49
 
50
  do_action( 'cartflows_update_before' );
51
 
63
  return;
64
  }
65
 
66
+ $this->logger_files();
67
+
68
  // Update auto saved version number.
69
  update_option( 'cartflows-version', CARTFLOWS_VER );
70
 
71
  do_action( 'cartflows_update_after' );
72
  }
73
+
74
+ /**
75
+ * Loading logger files.
76
+ *
77
+ * @since 1.0.0
78
+ * @return void
79
+ */
80
+ function logger_files() {
81
+
82
+ if ( ! defined( 'CARTFLOWS_LOG_DIR' ) ) {
83
+
84
+ $upload_dir = wp_upload_dir( null, false );
85
+
86
+ define( 'CARTFLOWS_LOG_DIR', $upload_dir['basedir'] . '/cartflows-logs/' );
87
+ }
88
+
89
+ wcf()->create_files();
90
+ }
91
  }
92
 
93
  /**
classes/class-cartflows-utils.php CHANGED
@@ -287,6 +287,21 @@ class Cartflows_Utils {
287
  return false;
288
  }
289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  /**
291
  * Define constant for cache
292
  *
@@ -294,9 +309,9 @@ class Cartflows_Utils {
294
  */
295
  function do_not_cache() {
296
 
297
- wc_maybe_define_constant( 'DONOTCACHEPAGE', true );
298
- wc_maybe_define_constant( 'DONOTCACHEOBJECT', true );
299
- wc_maybe_define_constant( 'DONOTCACHEDB', true );
300
 
301
  nocache_headers();
302
  }
287
  return false;
288
  }
289
 
290
+ /**
291
+ * Check if loaded page requires woo.
292
+ *
293
+ * @return bool
294
+ */
295
+ function check_is_woo_required_page() {
296
+
297
+ global $post;
298
+ $step_id = $post->ID;
299
+ $woo_not_required_type = array( 'landing' );
300
+ $step_type = $this->get_step_type( $step_id );
301
+
302
+ return ( ! in_array( $step_type, $woo_not_required_type ) );
303
+ }
304
+
305
  /**
306
  * Define constant for cache
307
  *
309
  */
310
  function do_not_cache() {
311
 
312
+ wcf_maybe_define_constant( 'DONOTCACHEPAGE', true );
313
+ wcf_maybe_define_constant( 'DONOTCACHEOBJECT', true );
314
+ wcf_maybe_define_constant( 'DONOTCACHEDB', true );
315
 
316
  nocache_headers();
317
  }
classes/class-cartflows-wizard.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * Schema Pro - Schema Wizard
4
  *
5
- * @package Schema Pro
6
  */
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
@@ -20,14 +20,31 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
20
  * Hook in tabs.
21
  */
22
  public function __construct() {
 
23
  if ( apply_filters( 'cartflows_enable_setup_wizard', true ) && current_user_can( 'manage_options' ) ) {
24
  add_action( 'admin_menu', array( $this, 'admin_menus' ) );
25
  add_action( 'admin_init', array( $this, 'setup_wizard' ) );
26
  add_action( 'admin_notices', array( $this, 'show_setup_wizard' ) );
27
  add_action( 'wp_ajax_page_builder_step_save', array( $this, 'page_builder_step_save' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- add_filter( 'cartflows_admin_js_localize', array( $this, 'localize_vars' ) );
 
30
  }
 
 
31
  }
32
 
33
  /**
@@ -75,7 +92,14 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
75
  'page-builder' => array(
76
  'name' => __( 'Page Builder', 'cartflows' ),
77
  'view' => array( $this, 'page_builder_step' ),
78
- // 'handler' => array( $this, 'page_builder_step_save' ),
 
 
 
 
 
 
 
79
  ),
80
  'setup-ready' => array(
81
  'name' => __( 'Ready!', 'cartflows' ),
@@ -88,8 +112,11 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
88
 
89
  wp_enqueue_style( 'cartflows-setup', CARTFLOWS_URL . 'admin/assets/css/setup-wizard.css', array( 'dashicons' ), CARTFLOWS_VER );
90
  wp_style_add_data( 'cartflows-setup', 'rtl', 'replace' );
 
91
  wp_enqueue_script( 'cartflows-setup', CARTFLOWS_URL . 'admin/assets/js/setup-wizard.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );
92
 
 
 
93
  wp_enqueue_media();
94
 
95
  if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->step ]['handler'] ) ) {
@@ -132,8 +159,10 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
132
  * Get next step link
133
  */
134
  public function get_next_step_plain_link() {
135
- $keys = array_keys( $this->steps );
136
- $step = $keys[ array_search( $this->step, array_keys( $this->steps ) ) + 1 ];
 
 
137
  return admin_url( 'index.php?page=cartflow-setup&step=' . $step );
138
  }
139
 
@@ -160,7 +189,7 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
160
  </head>
161
  <body class="cartflows-setup wp-core-ui cartflows-step-<?php echo esc_attr( $this->get_current_step_slug() ); ?>">
162
  <div id="cartflows-logo">
163
- <h1>CartFlows</h1>
164
  </div>
165
  <?php
166
  }
@@ -212,6 +241,10 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
212
  * Output the content for the current step.
213
  */
214
  public function setup_wizard_content() {
 
 
 
 
215
  echo '<div class="cartflows-setup-content">';
216
  call_user_func( $this->steps[ $this->step ]['view'] );
217
  echo '</div>';
@@ -222,14 +255,14 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
222
  */
223
  public function welcome_step() {
224
  ?>
225
- <h1><?php _e( 'Thank you for choosing CartFlows!', 'cartflows' ); ?></h1>
226
- <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
227
  <form method="post">
228
  <div class="cartflows-setup-actions step">
229
  <div class="button-prev-wrap">
230
  </div>
231
  <div class="button-next-wrap">
232
- <input type="submit" class="uct-activate button-primary button button-large button-next" value="<?php _e( 'Lets Go »', 'cartflows' ); ?>" name="save_step" />
233
  </div>
234
  <?php wp_nonce_field( 'cartflow-setup' ); ?>
235
  </div>
@@ -256,14 +289,13 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
256
  public function page_builder_step() {
257
  ?>
258
 
259
- <h1><?php _e( 'Page Builder', 'cartflows' ); ?></h1>
260
- <p class="description"><?php _e( 'Select a page builder which you want to use for creating your new flows.', 'cartflows' ); ?></p>
261
  <form method="post">
262
  <table class="cartflows-table widefat">
263
  <tr class="cartflows-row">
264
  <td class="cartflows-row-heading">
265
  <label><?php esc_html_e( 'Select Page Builder', 'cartflows' ); ?></label>
266
- <i class="cartflows-heading-help dashicons dashicons-editor-help" title="<?php echo esc_attr__( 'Add locations for where this Schema should appear.', 'cartflows' ); ?>"></i>
267
  </td>
268
  <td class="cartflows-row-content">
269
  <?php
@@ -279,8 +311,39 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
279
  'install' => isset( $installed_plugins['elementor/elementor.php'] ) ? 'yes' : 'no',
280
  ),
281
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  );
283
  ?>
 
284
  <select name="page-builder" class="page-builder-list" data-redirect-link="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>">
285
  <?php
286
  foreach ( $plugins as $key => $plugin ) {
@@ -291,14 +354,14 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
291
  </td>
292
  </tr>
293
  </table>
294
- <p><?php _e( 'The above plugin will be installed and activated for you!', 'cartflows' ); ?></p>
295
  <div class="cartflows-setup-actions step">
296
  <div class="button-prev-wrap">
297
  <a href="<?php echo esc_url( $this->get_prev_step_link() ); ?>" class="button-primary button button-large button-prev" ><?php _e( '« Previous', 'cartflows' ); ?></a>
298
  </div>
299
  <div class="button-next-wrap">
 
300
  <a href="#" class="button button-primary wcf-install-plugins"><?php _e( 'Next »', 'cartflows' ); ?></a>
301
- <!-- <input type="submit" class="button-primary button button-large button-next" value="<?php esc_attr_e( 'Next »', 'cartflows' ); ?>" name="save_step" /> -->
302
  </div>
303
  <?php wp_nonce_field( 'cartflow-setup' ); ?>
304
  </div>
@@ -306,6 +369,87 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
306
  <?php
307
  }
308
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  /**
310
  * Save Locale Settings.
311
  */
@@ -313,17 +457,20 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
313
 
314
  check_ajax_referer( 'wcf-page-builder-step-save', 'security' );
315
 
316
- $stored = get_option( 'wcf_setup', array() );
317
- $page_builder = isset( $_POST['page_builder'] ) ? sanitize_text_field( $_POST['page_builder'] ) : '';
318
- $plugin_init = isset( $_POST['plugin_init'] ) ? sanitize_text_field( $_POST['plugin_init'] ) : '';
319
 
320
- if ( $page_builder ) {
321
- $stored['page-builder'] = $page_builder;
 
322
  }
323
 
324
- update_option( 'wcf_setup', $stored );
325
 
326
- $activate = activate_plugin( $plugin_init, '', false, true );
 
 
327
 
328
  if ( is_wp_error( $activate ) ) {
329
  wp_send_json_error(
@@ -334,52 +481,32 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
334
  );
335
  }
336
 
337
- wp_send_json_success( $stored );
 
 
338
  }
339
 
340
  /**
341
- * Get Location rules of schema for Custom meta box.
342
- *
343
- * @param array $enabled_on Enabled on rules.
344
- * @param array $exclude_from Exlcude on rules.
345
- * @return array
346
  */
347
- public static function get_display_rules_for_meta_box( $enabled_on, $exclude_from ) {
348
- $locations = array();
349
- $enabled_location = array();
350
- $exclude_location = array();
351
-
352
- $args = array(
353
- 'public' => true,
354
- '_builtin' => true,
355
- );
356
- $post_types = get_post_types( $args );
357
- unset( $post_types['attachment'] );
358
 
359
- $args['_builtin'] = false;
360
- $custom_post_type = get_post_types( $args );
361
- $post_types = array_merge( $post_types, $custom_post_type );
362
 
363
- if ( ! empty( $enabled_on ) && isset( $enabled_on['rule'] ) ) {
364
- $enabled_location = $enabled_on['rule'];
365
- }
366
- if ( ! empty( $exclude_from ) && isset( $exclude_from['rule'] ) ) {
367
- $exclude_location = $exclude_from['rule'];
368
- }
369
 
370
- if ( in_array( 'specifics', $enabled_location ) || ( in_array( 'basic-singulars', $enabled_location ) && ! in_array( 'basic-singulars', $exclude_location ) ) ) {
371
- foreach ( $post_types as $post_type ) {
372
- $locations[ $post_type ] = 1;
373
- }
374
- } else {
375
- foreach ( $post_types as $post_type ) {
376
- $key = $post_type . '|all';
377
- if ( in_array( $key, $enabled_location ) && ! in_array( $key, $exclude_location ) ) {
378
- $locations[ $post_type ] = 1;
379
- }
380
- }
381
  }
382
- return $locations;
 
 
 
 
 
 
 
 
383
  }
384
 
385
  /**
@@ -390,14 +517,14 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
390
  // Set setup wizard status to complete.
391
  update_option( 'wcf_setup_complete', true );
392
  ?>
393
- <h1><?php _e( 'Congratulations!', 'cartflows' ); ?></h1>
394
 
395
  <div class="cartflows-setup-next-steps">
396
  <div class="cartflows-setup-next-steps-last">
397
 
398
  <p class="success">
399
  <?php
400
- _e( 'You\'ve successfully completed the setup before you begin setting now you can use it.', 'cartflows' )
401
  ?>
402
  </p>
403
 
@@ -422,15 +549,60 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
422
  <?php
423
  }
424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  /**
426
  * Localize variables in admin
427
- *
428
- * @param array $vars variables.
429
  */
430
- function localize_vars( $vars ) {
 
 
431
 
432
  $ajax_actions = array(
433
  'wcf_page_builder_step_save',
 
434
  );
435
 
436
  foreach ( $ajax_actions as $action ) {
@@ -440,6 +612,37 @@ if ( ! class_exists( 'CartFlows_Wizard' ) ) :
440
 
441
  return $vars;
442
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  }
444
 
445
  new CartFlows_Wizard();
1
  <?php
2
  /**
3
+ * CartFlows- Onboarding Wizard
4
  *
5
+ * @package cartflows
6
  */
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
20
  * Hook in tabs.
21
  */
22
  public function __construct() {
23
+
24
  if ( apply_filters( 'cartflows_enable_setup_wizard', true ) && current_user_can( 'manage_options' ) ) {
25
  add_action( 'admin_menu', array( $this, 'admin_menus' ) );
26
  add_action( 'admin_init', array( $this, 'setup_wizard' ) );
27
  add_action( 'admin_notices', array( $this, 'show_setup_wizard' ) );
28
  add_action( 'wp_ajax_page_builder_step_save', array( $this, 'page_builder_step_save' ) );
29
+ add_action( 'wp_ajax_page_builder_save_option', array( $this, 'save_page_builder_option' ) );
30
+ add_action( 'admin_head', array( $this, 'add_mautic_form_script' ) );
31
+ add_action( 'woocommerce_installed', array( $this, 'disable_woo_setup_redirect' ) );
32
+
33
+ add_action( 'wp_ajax_wcf_activate_wc_plugins', array( $this, 'activate_wc_plugins' ) );
34
+
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Disable the woo redirect for new setup.
40
+ */
41
+ function disable_woo_setup_redirect() {
42
 
43
+ if ( empty( $_GET['page'] ) || 'cartflow-setup' !== $_GET['page'] ) {
44
+ return;
45
  }
46
+
47
+ delete_transient( '_wc_activation_redirect' );
48
  }
49
 
50
  /**
92
  'page-builder' => array(
93
  'name' => __( 'Page Builder', 'cartflows' ),
94
  'view' => array( $this, 'page_builder_step' ),
95
+ ),
96
+ 'checkout' => array(
97
+ 'name' => __( 'Checkout', 'cartflows' ),
98
+ 'view' => array( $this, 'checkout_step' ),
99
+ ),
100
+ 'training' => array(
101
+ 'name' => __( 'Training', 'cartflows' ),
102
+ 'view' => array( $this, 'training_step' ),
103
  ),
104
  'setup-ready' => array(
105
  'name' => __( 'Ready!', 'cartflows' ),
112
 
113
  wp_enqueue_style( 'cartflows-setup', CARTFLOWS_URL . 'admin/assets/css/setup-wizard.css', array( 'dashicons' ), CARTFLOWS_VER );
114
  wp_style_add_data( 'cartflows-setup', 'rtl', 'replace' );
115
+
116
  wp_enqueue_script( 'cartflows-setup', CARTFLOWS_URL . 'admin/assets/js/setup-wizard.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );
117
 
118
+ wp_localize_script( 'cartflows-setup', 'cartflows_setup_vars', self::localize_vars() );
119
+
120
  wp_enqueue_media();
121
 
122
  if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->step ]['handler'] ) ) {
159
  * Get next step link
160
  */
161
  public function get_next_step_plain_link() {
162
+ $keys = array_keys( $this->steps );
163
+ $step_index = array_search( $this->step, $keys );
164
+ $step_index = ( count( $keys ) == $step_index + 1 ) ? $step_index : $step_index + 1;
165
+ $step = $keys[ $step_index ];
166
  return admin_url( 'index.php?page=cartflow-setup&step=' . $step );
167
  }
168
 
189
  </head>
190
  <body class="cartflows-setup wp-core-ui cartflows-step-<?php echo esc_attr( $this->get_current_step_slug() ); ?>">
191
  <div id="cartflows-logo">
192
+ <img height="40" class="wcf-logo" src="<?php echo CARTFLOWS_URL . 'assets/images/cartflows-logo.svg'; ?>" />
193
  </div>
194
  <?php
195
  }
241
  * Output the content for the current step.
242
  */
243
  public function setup_wizard_content() {
244
+ ?>
245
+ <input type="hidden" class="wcf-redirect-link" data-redirect-link="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>" >
246
+ <?php
247
+
248
  echo '<div class="cartflows-setup-content">';
249
  call_user_func( $this->steps[ $this->step ]['view'] );
250
  echo '</div>';
255
  */
256
  public function welcome_step() {
257
  ?>
258
+ <h1><?php _e( 'Welcome to CartFlows!', 'cartflows' ); ?></h1>
259
+ <p><?php _e( 'Thank you for choosing CartFlows to get more leads, increase conversions, & maximize profits. This short setup wizard will guide you though configuring CartFlows and creating your first funnel.', 'cartflows' ); ?></p>
260
  <form method="post">
261
  <div class="cartflows-setup-actions step">
262
  <div class="button-prev-wrap">
263
  </div>
264
  <div class="button-next-wrap">
265
+ <input type="submit" class="uct-activate button-primary button button-large " value="<?php _e( 'Lets Go »', 'cartflows' ); ?>" name="save_step" />
266
  </div>
267
  <?php wp_nonce_field( 'cartflow-setup' ); ?>
268
  </div>
289
  public function page_builder_step() {
290
  ?>
291
 
292
+ <h1><?php _e( 'Page Builder Setup', 'cartflows' ); ?></h1>
293
+ <p class="description"><?php _e( 'Please select a page builder you would like to use with CartFlows.', 'cartflows' ); ?></p>
294
  <form method="post">
295
  <table class="cartflows-table widefat">
296
  <tr class="cartflows-row">
297
  <td class="cartflows-row-heading">
298
  <label><?php esc_html_e( 'Select Page Builder', 'cartflows' ); ?></label>
 
299
  </td>
300
  <td class="cartflows-row-content">
301
  <?php
311
  'install' => isset( $installed_plugins['elementor/elementor.php'] ) ? 'yes' : 'no',
312
  ),
313
  ),
314
+ array(
315
+ 'title' => __( 'Beaver Builder Plugin (Lite Version)', 'cartflows' ),
316
+ 'value' => 'beaver-builder',
317
+ 'data' => array(
318
+ 'slug' => 'beaver-builder-lite-version',
319
+ 'init' => 'beaver-builder-lite-version/fl-builder.php',
320
+ 'active' => is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) ? 'yes' : 'no',
321
+ 'install' => isset( $installed_plugins['beaver-builder-lite-version/fl-builder.php'] ) ? 'yes' : 'no',
322
+ ),
323
+ ),
324
+ array(
325
+ 'title' => __( 'Divi', 'cartflows' ),
326
+ 'value' => 'divi',
327
+ 'data' => array(
328
+ 'slug' => 'divi',
329
+ 'init' => 'divi',
330
+ 'active' => 'yes',
331
+ 'install' => 'NA',
332
+ ),
333
+ ),
334
+ array(
335
+ 'title' => __( 'Other', 'cartflows' ),
336
+ 'value' => 'other',
337
+ 'data' => array(
338
+ 'slug' => 'other',
339
+ 'init' => false,
340
+ 'active' => 'yes',
341
+ 'install' => 'NA',
342
+ ),
343
+ ),
344
  );
345
  ?>
346
+ <input type="hidden" name="save-pb-input" id="save-pb-option" value="1" />
347
  <select name="page-builder" class="page-builder-list" data-redirect-link="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>">
348
  <?php
349
  foreach ( $plugins as $key => $plugin ) {
354
  </td>
355
  </tr>
356
  </table>
357
+ <p><?php _e( 'While CartFlows Should work with most page builders, we offer templates for the above page builders.', 'cartflows' ); ?></p>
358
  <div class="cartflows-setup-actions step">
359
  <div class="button-prev-wrap">
360
  <a href="<?php echo esc_url( $this->get_prev_step_link() ); ?>" class="button-primary button button-large button-prev" ><?php _e( '« Previous', 'cartflows' ); ?></a>
361
  </div>
362
  <div class="button-next-wrap">
363
+ <a href="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>" class="button button-large button-next" ><?php _e( 'Skip this step', 'cartflows' ); ?></a>
364
  <a href="#" class="button button-primary wcf-install-plugins"><?php _e( 'Next »', 'cartflows' ); ?></a>
 
365
  </div>
366
  <?php wp_nonce_field( 'cartflow-setup' ); ?>
367
  </div>
369
  <?php
370
  }
371
 
372
+ /**
373
+ * Render checkout step.
374
+ */
375
+ public function checkout_step() {
376
+
377
+ $installed_plugins = get_plugins();
378
+ $is_wc_installed = isset( $installed_plugins['woocommerce/woocommerce.php'] ) ? 'yes' : 'no';
379
+ $is_wcf_ca_installed = isset( $installed_plugins['woo-cart-abandonment-recovery/woo-cart-abandonment-recovery.php'] ) ? 'yes' : 'no';
380
+ $is_active = class_exists( 'WooCommerce' ) ? 'yes' : 'no';
381
+ $is_wcf_ca_active = class_exists( 'CARTFLOWS_CA_Loader' ) ? 'yes' : 'no';
382
+ ?>
383
+ <h1><?php _e( 'Choose a checkout', 'cartflows' ); ?></h1>
384
+ <div class="cartflows-setup-message">
385
+ <p>
386
+ <?php _e( 'While CartFlows is designed to use WooCommerce sell digital and physical products, not all funnels need a checkout system.', 'cartflows' ); ?>
387
+ </p>
388
+ <h4 class="cartflows-setup-message-title"><?php _e( 'Would you like to install WooCommerce to sell digital and physical products in your funnels?', 'cartflows' ); ?></h4>
389
+ <span><input data-wcf-ca-active="<?php echo esc_attr( $is_wcf_ca_active ); ?>" data-wcf-ca-install="<?php echo esc_attr( $is_wcf_ca_installed ); ?>" data-woo-active="<?php echo esc_attr( $is_active ); ?>" data-woo-install="<?php echo esc_attr( $is_wc_installed ); ?>" type="hidden" class="wcf-install-wc-input" name="installl-woocommerce" value="" checked></span>
390
+ </div>
391
+
392
+ <div class="cartflows-setup-extra-notice">
393
+
394
+ <span>
395
+ <?php _e( 'The following plugin will be installed and activated for you:', 'cartflows' ); ?>
396
+ <a target="_blank" href="https://wordpress.org/plugins/woo-cart-abandonment-recovery/"> <?php _e( 'WooCommerce', 'cartflows' ); ?></a>,
397
+ <a target="_blank" href="https://wordpress.org/plugins/woo-cart-abandonment-recovery/"> <?php _e( 'WooCommerce Cart Abandonment Recovery', 'cartflows' ); ?></a>
398
+
399
+ </span>
400
+
401
+ </div>
402
+
403
+ <div class="cartflows-setup-actions step">
404
+ <div class="button-prev-wrap">
405
+ <a href="<?php echo esc_url( $this->get_prev_step_link() ); ?>" class="button-primary button button-large button-prev" ><?php _e( '« Previous', 'cartflows' ); ?></a>
406
+ </div>
407
+ <div class="button-next-wrap">
408
+ <a href="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>" class="button button-large button-next"><?php _e( 'No thanks', 'cartflows' ); ?></a>
409
+ <a class="wcf-install-wc button-primary button button-large" name="save_step" > <?php _e( 'Yes', 'cartflows' ); ?> </a>
410
+ </div>
411
+ </div>
412
+
413
+ <?php
414
+ }
415
+
416
+ /**
417
+ * Save Locale Settings.
418
+ */
419
+ function activate_wc_plugins() {
420
+
421
+ check_ajax_referer( 'wcf-wc-plugins-activate', 'security' );
422
+
423
+ $plugin_slug_arr = array(
424
+ 'woocommerce/woocommerce.php' => true,
425
+ 'woo-cart-abandonment-recovery/woo-cart-abandonment-recovery.php' => false,
426
+ );
427
+
428
+ $activate = array(
429
+ 'woocommerce/woocommerce.php' => false,
430
+ 'woo-cart-abandonment-recovery/woo-cart-abandonment-recovery.php' => false,
431
+ );
432
+
433
+ foreach ( $plugin_slug_arr as $slug => $do_silently ) {
434
+
435
+ $activate[ $slug ] = activate_plugin( $slug, '', false, $do_silently );
436
+ }
437
+
438
+ foreach ( $activate as $slug => $data ) {
439
+
440
+ if ( is_wp_error( $data ) ) {
441
+ wp_send_json_error(
442
+ array(
443
+ 'success' => false,
444
+ 'message' => $data->get_error_message(),
445
+ )
446
+ );
447
+ }
448
+ }
449
+
450
+ wp_send_json_success();
451
+ }
452
+
453
  /**
454
  * Save Locale Settings.
455
  */
457
 
458
  check_ajax_referer( 'wcf-page-builder-step-save', 'security' );
459
 
460
+ $plugin_init = isset( $_POST['plugin_init'] ) ? sanitize_text_field( $_POST['plugin_init'] ) : '';
461
+ $save_option = ( isset( $_POST['save_builder_option'] ) && 'true' == $_POST['save_builder_option'] ) ? true : false;
462
+ $plugin_slug = filter_input( INPUT_POST, 'page_builder', FILTER_SANITIZE_STRING );
463
 
464
+ $do_sliently = true;
465
+ if ( 'woo-cart-abandonment-recovery' === $plugin_slug ) {
466
+ $do_sliently = false;
467
  }
468
 
469
+ $activate = activate_plugin( $plugin_init, '', false, $do_sliently );
470
 
471
+ if ( $save_option ) {
472
+ $this->save_page_builder_option();
473
+ }
474
 
475
  if ( is_wp_error( $activate ) ) {
476
  wp_send_json_error(
481
  );
482
  }
483
 
484
+ wp_send_json_success(
485
+ array( 'plugin' => $plugin_slug )
486
+ );
487
  }
488
 
489
  /**
490
+ * Save selected page builder in options database.
 
 
 
 
491
  */
492
+ public function save_page_builder_option() {
 
 
 
 
 
 
 
 
 
 
493
 
494
+ $page_builder = isset( $_POST['page_builder'] ) ? sanitize_text_field( $_POST['page_builder'] ) : '';
 
 
495
 
496
+ $wcf_settings = get_option( '_cartflows_common', array() );
 
 
 
 
 
497
 
498
+ if ( false !== strpos( $page_builder, 'beaver-builder' ) ) {
499
+ $page_builder = 'beaver-builder';
 
 
 
 
 
 
 
 
 
500
  }
501
+
502
+ $wcf_settings['default_page_builder'] = $page_builder;
503
+
504
+ update_option( '_cartflows_common', $wcf_settings );
505
+
506
+ wp_send_json_success(
507
+ array( 'plugin' => $page_builder )
508
+ );
509
+
510
  }
511
 
512
  /**
517
  // Set setup wizard status to complete.
518
  update_option( 'wcf_setup_complete', true );
519
  ?>
520
+ <h1><?php _e( 'Congratulations, You Did It!', 'cartflows' ); ?></h1>
521
 
522
  <div class="cartflows-setup-next-steps">
523
  <div class="cartflows-setup-next-steps-last">
524
 
525
  <p class="success">
526
  <?php
527
+ _e( 'CartFlows is ready to use on your website. You\'ve successfully completed the setup process and all that is left for you to do is create your first flow.', 'cartflows' )
528
  ?>
529
  </p>
530
 
549
  <?php
550
  }
551
 
552
+ /**
553
+ * Training course step.
554
+ */
555
+ public function training_step() {
556
+ $current_user = wp_get_current_user();
557
+ ?>
558
+ <h1><?php _e( 'Exclusive CartFlows Training Course Offer', 'cartflows' ); ?></h1>
559
+
560
+ <div id="mauticform_wrapper_cartflowsonboarding" class="mauticform_wrapper">
561
+ <form autocomplete="false" role="form" method="post" action="https://go.cartflows.com/form/submit?formId=2" id="mauticform_cartflowsonboarding" data-mautic-form="cartflowsonboarding" enctype="multipart/form-data">
562
+ <div class="mauticform-error" id="mauticform_cartflowsonboarding_error"></div>
563
+ <div class="mauticform-message" id="mauticform_cartflowsonboarding_message"></div>
564
+ <div class="mauticform-innerform">
565
+ <div class="mauticform-page-wrapper mauticform-page-1" data-mautic-form-page="1">
566
+ <div id="mauticform_cartflowsonboarding_enter_your_email" class="mauticform-row mauticform-email mauticform-field-1">
567
+ <div class="cartflows-setup-message">
568
+ <p>
569
+ <?php _e( 'We want you to get off to a great start using CartFlows, so we would like to give access to our exclusive training course.', 'cartflows' ); ?>
570
+ <?php _e( 'Get access to this couse, for free, by entering your email below.', 'cartflows' ); ?>
571
+ </p>
572
+ <input id="mauticform_input_cartflowsonboarding_enter_your_email" name="mauticform[enter_your_email]" placeholder="<?php _e( 'Enter Email address', 'cartflows' ); ?>" value="<?php echo $current_user->user_email; ?>" class="mauticform-input" type="email">
573
+ </div>
574
+ <span class="mauticform-errormsg" style="display: none;"></span>
575
+ </div>
576
+ </div>
577
+ </div>
578
+
579
+ <input type="hidden" name="mauticform[formId]" id="mauticform_cartflowsonboarding_id" value="2">
580
+ <input type="hidden" name="mauticform[return]" id="mauticform_cartflowsonboarding_return" value="">
581
+ <input type="hidden" name="mauticform[formName]" id="mauticform_cartflowsonboarding_name" value="cartflowsonboarding">
582
+ <div class="cartflows-setup-actions step">
583
+ <div class="button-prev-wrap">
584
+ <a href="<?php echo esc_url( $this->get_prev_step_link() ); ?>" class="button-primary button button-large button-prev" ><?php _e( '« Previous', 'cartflows' ); ?></a>
585
+ </div>
586
+ <div class="button-next-wrap">
587
+ <a href="<?php echo esc_url_raw( $this->get_next_step_plain_link() ); ?>" class="button button-large button-next"><?php _e( 'No thanks', 'cartflows' ); ?></a>
588
+ <button type="submit" name="mauticform[submit]" id="mauticform_input_cartflowsonboarding_submit" value="<?php _e( 'Allow', 'cartflows' ); ?>" class="mautic-form-submit btn btn-default button-primary button button-large button-next" name="save_step"><?php _e( 'Allow', 'cartflows' ); ?></button>
589
+ </div>
590
+ </div>
591
+ </form>
592
+ </div>
593
+ <?php
594
+ }
595
+
596
  /**
597
  * Localize variables in admin
 
 
598
  */
599
+ function localize_vars() {
600
+
601
+ $vars = array();
602
 
603
  $ajax_actions = array(
604
  'wcf_page_builder_step_save',
605
+ 'wcf_wc_plugins_activate',
606
  );
607
 
608
  foreach ( $ajax_actions as $action ) {
612
 
613
  return $vars;
614
  }
615
+
616
+ /**
617
+ * Add JS script for mautic form
618
+ */
619
+ function add_mautic_form_script() {
620
+
621
+ if ( ! isset( $_REQUEST['page'] ) || ( isset( $_REQUEST['page'] ) && 'cartflow-setup' != $_REQUEST['page'] ) ) {
622
+ return;
623
+ }
624
+ ?>
625
+
626
+ <script type="text/javascript">
627
+ /** This section is only needed once per page if manually copying **/
628
+ if (typeof MauticSDKLoaded == 'undefined') {
629
+ var MauticSDKLoaded = true;
630
+ var head = document.getElementsByTagName('head')[0];
631
+ var script = document.createElement('script');
632
+ script.type = 'text/javascript';
633
+ script.src = 'https://go.cartflows.com/media/js/mautic-form.js';
634
+ script.onload = function() {
635
+ MauticSDK.onLoad();
636
+ };
637
+ head.appendChild(script);
638
+ var MauticDomain = 'https://go.cartflows.com';
639
+ var MauticLang = {
640
+ 'submittingMessage': "Please wait..."
641
+ };
642
+ }
643
+ </script>
644
+ <?php
645
+ }
646
  }
647
 
648
  new CartFlows_Wizard();
classes/logger/class-cartflows-log-handler-file.php CHANGED
@@ -1,442 +1,442 @@
1
- <?php
2
- /**
3
- * Class Cartflows_Log_Handler_File file.
4
- *
5
- * @package WooCommerce\Log Handlers
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit; // Exit if accessed directly.
10
- }
11
-
12
- /**
13
- * Handles log entries by writing to a file.
14
- *
15
- * @class Cartflows_Log_Handler_File
16
- * @version 1.0.0
17
- * @package WooCommerce/Classes/Log_Handlers
18
- */
19
- class Cartflows_Log_Handler_File extends Cartflows_Log_Handler {
20
-
21
- /**
22
- * Stores open file handles.
23
- *
24
- * @var array
25
- */
26
- protected $handles = array();
27
-
28
- /**
29
- * File size limit for log files in bytes.
30
- *
31
- * @var int
32
- */
33
- protected $log_size_limit;
34
-
35
- /**
36
- * Cache logs that could not be written.
37
- *
38
- * If a log is written too early in the request, pluggable functions may be unavailable. These
39
- * logs will be cached and written on 'plugins_loaded' action.
40
- *
41
- * @var array
42
- */
43
- protected $cached_logs = array();
44
-
45
- /**
46
- * Constructor for the logger.
47
- *
48
- * @param int $log_size_limit Optional. Size limit for log files. Default 5mb.
49
- */
50
- public function __construct( $log_size_limit = null ) {
51
- if ( null === $log_size_limit ) {
52
- $log_size_limit = 5 * 1024 * 1024;
53
- }
54
-
55
- $this->log_size_limit = apply_filters( 'cartflows_log_file_size_limit', $log_size_limit );
56
-
57
- add_action( 'plugins_loaded', array( $this, 'write_cached_logs' ) );
58
- }
59
-
60
- /**
61
- * Destructor.
62
- *
63
- * Cleans up open file handles.
64
- */
65
- public function __destruct() {
66
- foreach ( $this->handles as $handle ) {
67
- if ( is_resource( $handle ) ) {
68
- fclose( $handle ); // @codingStandardsIgnoreLine.
69
- }
70
- }
71
- }
72
-
73
- /**
74
- * Handle a log entry.
75
- *
76
- * @param int $timestamp Log timestamp.
77
- * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
78
- * @param string $message Log message.
79
- * @param array $context {
80
- * Additional information for log handlers.
81
- *
82
- * @type string $source Optional. Determines log file to write to. Default 'log'.
83
- * @type bool $_legacy Optional. Default false. True to use outdated log format
84
- * originally used in deprecated Cartflows_WC_Logger::add calls.
85
- * }
86
- *
87
- * @return bool False if value was not handled and true if value was handled.
88
- */
89
- public function handle( $timestamp, $level, $message, $context ) {
90
-
91
- if ( isset( $context['source'] ) && $context['source'] ) {
92
- $handle = $context['source'];
93
- } else {
94
- $handle = 'log';
95
- }
96
-
97
- $entry = self::format_entry( $timestamp, $level, $message, $context );
98
-
99
- return $this->add( $entry, $handle );
100
- }
101
-
102
- /**
103
- * Builds a log entry text from timestamp, level and message.
104
- *
105
- * @param int $timestamp Log timestamp.
106
- * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
107
- * @param string $message Log message.
108
- * @param array $context Additional information for log handlers.
109
- *
110
- * @return string Formatted log entry.
111
- */
112
- protected static function format_entry( $timestamp, $level, $message, $context ) {
113
-
114
- if ( isset( $context['_legacy'] ) && true === $context['_legacy'] ) {
115
- if ( isset( $context['source'] ) && $context['source'] ) {
116
- $handle = $context['source'];
117
- } else {
118
- $handle = 'log';
119
- }
120
- $message = apply_filters( 'cartflows_logger_add_message', $message, $handle );
121
- $time = date_i18n( 'm-d-Y @ H:i:s' );
122
- $entry = "{$time} - {$message}";
123
- } else {
124
- $entry = parent::format_entry( $timestamp, $level, $message, $context );
125
- }
126
-
127
- return $entry;
128
- }
129
-
130
- /**
131
- * Open log file for writing.
132
- *
133
- * @param string $handle Log handle.
134
- * @param string $mode Optional. File mode. Default 'a'.
135
- * @return bool Success.
136
- */
137
- protected function open( $handle, $mode = 'a' ) {
138
- if ( $this->is_open( $handle ) ) {
139
- return true;
140
- }
141
-
142
- $file = self::get_log_file_path( $handle );
143
-
144
- if ( $file ) {
145
- if ( ! file_exists( $file ) ) {
146
- $temphandle = @fopen( $file, 'w+' ); // @codingStandardsIgnoreLine.
147
- @fclose( $temphandle ); // @codingStandardsIgnoreLine.
148
-
149
- if ( defined( 'FS_CHMOD_FILE' ) ) {
150
- @chmod( $file, FS_CHMOD_FILE ); // @codingStandardsIgnoreLine.
151
- }
152
- }
153
-
154
- $resource = @fopen( $file, $mode ); // @codingStandardsIgnoreLine.
155
-
156
- if ( $resource ) {
157
- $this->handles[ $handle ] = $resource;
158
- return true;
159
- }
160
- }
161
-
162
- return false;
163
- }
164
-
165
- /**
166
- * Check if a handle is open.
167
- *
168
- * @param string $handle Log handle.
169
- * @return bool True if $handle is open.
170
- */
171
- protected function is_open( $handle ) {
172
- return array_key_exists( $handle, $this->handles ) && is_resource( $this->handles[ $handle ] );
173
- }
174
-
175
- /**
176
- * Close a handle.
177
- *
178
- * @param string $handle Log handle.
179
- * @return bool success
180
- */
181
- protected function close( $handle ) {
182
- $result = false;
183
-
184
- if ( $this->is_open( $handle ) ) {
185
- $result = fclose( $this->handles[ $handle ] ); // @codingStandardsIgnoreLine.
186
- unset( $this->handles[ $handle ] );
187
- }
188
-
189
- return $result;
190
- }
191
-
192
- /**
193
- * Add a log entry to chosen file.
194
- *
195
- * @param string $entry Log entry text.
196
- * @param string $handle Log entry handle.
197
- *
198
- * @return bool True if write was successful.
199
- */
200
- protected function add( $entry, $handle ) {
201
- $result = false;
202
-
203
- if ( $this->should_rotate( $handle ) ) {
204
- $this->log_rotate( $handle );
205
- }
206
-
207
- if ( $this->open( $handle ) && is_resource( $this->handles[ $handle ] ) ) {
208
- $result = fwrite( $this->handles[ $handle ], $entry . PHP_EOL ); // @codingStandardsIgnoreLine.
209
- } else {
210
- $this->cache_log( $entry, $handle );
211
- }
212
-
213
- return false !== $result;
214
- }
215
-
216
- /**
217
- * Clear entries from chosen file.
218
- *
219
- * @param string $handle Log handle.
220
- *
221
- * @return bool
222
- */
223
- public function clear( $handle ) {
224
- $result = false;
225
-
226
- // Close the file if it's already open.
227
- $this->close( $handle );
228
-
229
- /**
230
- * $this->open( $handle, 'w' ) == Open the file for writing only. Place the file pointer at
231
- * the beginning of the file, and truncate the file to zero length.
232
- */
233
- if ( $this->open( $handle, 'w' ) && is_resource( $this->handles[ $handle ] ) ) {
234
- $result = true;
235
- }
236
-
237
- do_action( 'cartflows_log_clear', $handle );
238
-
239
- return $result;
240
- }
241
-
242
- /**
243
- * Remove/delete the chosen file.
244
- *
245
- * @param string $handle Log handle.
246
- *
247
- * @return bool
248
- */
249
- public function remove( $handle ) {
250
- $removed = false;
251
- $logs = $this->get_log_files();
252
- $handle = sanitize_title( $handle );
253
-
254
- if ( isset( $logs[ $handle ] ) && $logs[ $handle ] ) {
255
- $file = realpath( trailingslashit( CARTFLOWS_LOG_DIR ) . $logs[ $handle ] );
256
- if ( 0 === stripos( $file, realpath( trailingslashit( CARTFLOWS_LOG_DIR ) ) ) && is_file( $file ) && is_writable( $file ) ) { // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_is_writable
257
- $this->close( $file ); // Close first to be certain no processes keep it alive after it is unlinked.
258
- $removed = unlink( $file ); // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_unlink
259
- }
260
- do_action( 'cartflows_log_remove', $handle, $removed );
261
- }
262
- return $removed;
263
- }
264
-
265
- /**
266
- * Check if log file should be rotated.
267
- *
268
- * Compares the size of the log file to determine whether it is over the size limit.
269
- *
270
- * @param string $handle Log handle.
271
- * @return bool True if if should be rotated.
272
- */
273
- protected function should_rotate( $handle ) {
274
- $file = self::get_log_file_path( $handle );
275
- if ( $file ) {
276
- if ( $this->is_open( $handle ) ) {
277
- $file_stat = fstat( $this->handles[ $handle ] );
278
- return $file_stat['size'] > $this->log_size_limit;
279
- } elseif ( file_exists( $file ) ) {
280
- return filesize( $file ) > $this->log_size_limit;
281
- } else {
282
- return false;
283
- }
284
- } else {
285
- return false;
286
- }
287
- }
288
-
289
- /**
290
- * Rotate log files.
291
- *
292
- * Logs are rotated by prepending '.x' to the '.log' suffix.
293
- * The current log plus 10 historical logs are maintained.
294
- * For example:
295
- * base.9.log -> [ REMOVED ]
296
- * base.8.log -> base.9.log
297
- * ...
298
- * base.0.log -> base.1.log
299
- * base.log -> base.0.log
300
- *
301
- * @param string $handle Log handle.
302
- */
303
- protected function log_rotate( $handle ) {
304
- for ( $i = 8; $i >= 0; $i-- ) {
305
- $this->increment_log_infix( $handle, $i );
306
- }
307
- $this->increment_log_infix( $handle );
308
- }
309
-
310
- /**
311
- * Increment a log file suffix.
312
- *
313
- * @param string $handle Log handle.
314
- * @param null|int $number Optional. Default null. Log suffix number to be incremented.
315
- * @return bool True if increment was successful, otherwise false.
316
- */
317
- protected function increment_log_infix( $handle, $number = null ) {
318
- if ( null === $number ) {
319
- $suffix = '';
320
- $next_suffix = '.0';
321
- } else {
322
- $suffix = '.' . $number;
323
- $next_suffix = '.' . ( $number + 1 );
324
- }
325
-
326
- $rename_from = self::get_log_file_path( "{$handle}{$suffix}" );
327
- $rename_to = self::get_log_file_path( "{$handle}{$next_suffix}" );
328
-
329
- if ( $this->is_open( $rename_from ) ) {
330
- $this->close( $rename_from );
331
- }
332
-
333
- if ( is_writable( $rename_from ) ) { // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_is_writable
334
- return rename( $rename_from, $rename_to ); // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_rename
335
- } else {
336
- return false;
337
- }
338
-
339
- }
340
-
341
- /**
342
- * Get a log file path.
343
- *
344
- * @param string $handle Log name.
345
- * @return bool|string The log file path or false if path cannot be determined.
346
- */
347
- public static function get_log_file_path( $handle ) {
348
- if ( function_exists( 'wp_hash' ) ) {
349
- return trailingslashit( CARTFLOWS_LOG_DIR ) . self::get_log_file_name( $handle );
350
- } else {
351
- wc_doing_it_wrong( __METHOD__, __( 'This method should not be called before plugins_loaded.', 'cartflows' ), '3.0' );
352
- return false;
353
- }
354
- }
355
-
356
- /**
357
- * Get a log file name.
358
- *
359
- * File names consist of the handle, followed by the date, followed by a hash, .log.
360
- *
361
- * @since 3.3
362
- * @param string $handle Log name.
363
- * @return bool|string The log file name or false if cannot be determined.
364
- */
365
- public static function get_log_file_name( $handle ) {
366
- if ( function_exists( 'wp_hash' ) ) {
367
- $date_suffix = date( 'Y-m-d', current_time( 'timestamp', true ) );
368
- $hash_suffix = wp_hash( $handle );
369
- return sanitize_file_name( implode( '-', array( $handle, $date_suffix, $hash_suffix ) ) . '.log' );
370
- } else {
371
- wc_doing_it_wrong( __METHOD__, __( 'This method should not be called before plugins_loaded.', 'cartflows' ), '3.3' );
372
- return false;
373
- }
374
- }
375
-
376
- /**
377
- * Cache log to write later.
378
- *
379
- * @param string $entry Log entry text.
380
- * @param string $handle Log entry handle.
381
- */
382
- protected function cache_log( $entry, $handle ) {
383
- $this->cached_logs[] = array(
384
- 'entry' => $entry,
385
- 'handle' => $handle,
386
- );
387
- }
388
-
389
- /**
390
- * Write cached logs.
391
- */
392
- public function write_cached_logs() {
393
- foreach ( $this->cached_logs as $log ) {
394
- $this->add( $log['entry'], $log['handle'] );
395
- }
396
- }
397
-
398
- /**
399
- * Delete all logs older than a defined timestamp.
400
- *
401
- * @since 3.4.0
402
- * @param integer $timestamp Timestamp to delete logs before.
403
- */
404
- public static function delete_logs_before_timestamp( $timestamp = 0 ) {
405
- if ( ! $timestamp ) {
406
- return;
407
- }
408
-
409
- $log_files = self::get_log_files();
410
-
411
- foreach ( $log_files as $log_file ) {
412
- $last_modified = filemtime( trailingslashit( CARTFLOWS_LOG_DIR ) . $log_file );
413
-
414
- if ( $last_modified < $timestamp ) {
415
- @unlink( trailingslashit( CARTFLOWS_LOG_DIR ) . $log_file ); // @codingStandardsIgnoreLine.
416
- }
417
- }
418
- }
419
-
420
- /**
421
- * Get all log files in the log directory.
422
- *
423
- * @since 3.4.0
424
- * @return array
425
- */
426
- public static function get_log_files() {
427
- $files = @scandir( CARTFLOWS_LOG_DIR ); // @codingStandardsIgnoreLine.
428
- $result = array();
429
-
430
- if ( ! empty( $files ) ) {
431
- foreach ( $files as $key => $value ) {
432
- if ( ! in_array( $value, array( '.', '..' ), true ) ) {
433
- if ( ! is_dir( $value ) && strstr( $value, '.log' ) ) {
434
- $result[ sanitize_title( $value ) ] = $value;
435
- }
436
- }
437
- }
438
- }
439
-
440
- return $result;
441
- }
442
- }
1
+ <?php
2
+ /**
3
+ * Class Cartflows_Log_Handler_File file.
4
+ *
5
+ * @package WooCommerce\Log Handlers
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) {
9
+ exit; // Exit if accessed directly.
10
+ }
11
+
12
+ /**
13
+ * Handles log entries by writing to a file.
14
+ *
15
+ * @class Cartflows_Log_Handler_File
16
+ * @version 1.0.0
17
+ * @package WooCommerce/Classes/Log_Handlers
18
+ */
19
+ class Cartflows_Log_Handler_File extends Cartflows_Log_Handler {
20
+
21
+ /**
22
+ * Stores open file handles.
23
+ *
24
+ * @var array
25
+ */
26
+ protected $handles = array();
27
+
28
+ /**
29
+ * File size limit for log files in bytes.
30
+ *
31
+ * @var int
32
+ */
33
+ protected $log_size_limit;
34
+
35
+ /**
36
+ * Cache logs that could not be written.
37
+ *
38
+ * If a log is written too early in the request, pluggable functions may be unavailable. These
39
+ * logs will be cached and written on 'plugins_loaded' action.
40
+ *
41
+ * @var array
42
+ */
43
+ protected $cached_logs = array();
44
+
45
+ /**
46
+ * Constructor for the logger.
47
+ *
48
+ * @param int $log_size_limit Optional. Size limit for log files. Default 5mb.
49
+ */
50
+ public function __construct( $log_size_limit = null ) {
51
+ if ( null === $log_size_limit ) {
52
+ $log_size_limit = 5 * 1024 * 1024;
53
+ }
54
+
55
+ $this->log_size_limit = apply_filters( 'cartflows_log_file_size_limit', $log_size_limit );
56
+
57
+ add_action( 'plugins_loaded', array( $this, 'write_cached_logs' ) );
58
+ }
59
+
60
+ /**
61
+ * Destructor.
62
+ *
63
+ * Cleans up open file handles.
64
+ */
65
+ public function __destruct() {
66
+ foreach ( $this->handles as $handle ) {
67
+ if ( is_resource( $handle ) ) {
68
+ fclose( $handle ); // @codingStandardsIgnoreLine.
69
+ }
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Handle a log entry.
75
+ *
76
+ * @param int $timestamp Log timestamp.
77
+ * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
78
+ * @param string $message Log message.
79
+ * @param array $context {
80
+ * Additional information for log handlers.
81
+ *
82
+ * @type string $source Optional. Determines log file to write to. Default 'log'.
83
+ * @type bool $_legacy Optional. Default false. True to use outdated log format
84
+ * originally used in deprecated Cartflows_WC_Logger::add calls.
85
+ * }
86
+ *
87
+ * @return bool False if value was not handled and true if value was handled.
88
+ */
89
+ public function handle( $timestamp, $level, $message, $context ) {
90
+
91
+ if ( isset( $context['source'] ) && $context['source'] ) {
92
+ $handle = $context['source'];
93
+ } else {
94
+ $handle = 'log';
95
+ }
96
+
97
+ $entry = self::format_entry( $timestamp, $level, $message, $context );
98
+
99
+ return $this->add( $entry, $handle );
100
+ }
101
+
102
+ /**
103
+ * Builds a log entry text from timestamp, level and message.
104
+ *
105
+ * @param int $timestamp Log timestamp.
106
+ * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
107
+ * @param string $message Log message.
108
+ * @param array $context Additional information for log handlers.
109
+ *
110
+ * @return string Formatted log entry.
111
+ */
112
+ protected static function format_entry( $timestamp, $level, $message, $context ) {
113
+
114
+ if ( isset( $context['_legacy'] ) && true === $context['_legacy'] ) {
115
+ if ( isset( $context['source'] ) && $context['source'] ) {
116
+ $handle = $context['source'];
117
+ } else {
118
+ $handle = 'log';
119
+ }
120
+ $message = apply_filters( 'cartflows_logger_add_message', $message, $handle );
121
+ $time = date_i18n( 'm-d-Y @ H:i:s' );
122
+ $entry = "{$time} - {$message}";
123
+ } else {
124
+ $entry = parent::format_entry( $timestamp, $level, $message, $context );
125
+ }
126
+
127
+ return $entry;
128
+ }
129
+
130
+ /**
131
+ * Open log file for writing.
132
+ *
133
+ * @param string $handle Log handle.
134
+ * @param string $mode Optional. File mode. Default 'a'.
135
+ * @return bool Success.
136
+ */
137
+ protected function open( $handle, $mode = 'a' ) {
138
+ if ( $this->is_open( $handle ) ) {
139
+ return true;
140
+ }
141
+
142
+ $file = self::get_log_file_path( $handle );
143
+
144
+ if ( $file ) {
145
+ if ( ! file_exists( $file ) ) {
146
+ $temphandle = @fopen( $file, 'w+' ); // @codingStandardsIgnoreLine.
147
+ @fclose( $temphandle ); // @codingStandardsIgnoreLine.
148
+
149
+ if ( defined( 'FS_CHMOD_FILE' ) ) {
150
+ @chmod( $file, FS_CHMOD_FILE ); // @codingStandardsIgnoreLine.
151
+ }
152
+ }
153
+
154
+ $resource = @fopen( $file, $mode ); // @codingStandardsIgnoreLine.
155
+
156
+ if ( $resource ) {
157
+ $this->handles[ $handle ] = $resource;
158
+ return true;
159
+ }
160
+ }
161
+
162
+ return false;
163
+ }
164
+
165
+ /**
166
+ * Check if a handle is open.
167
+ *
168
+ * @param string $handle Log handle.
169
+ * @return bool True if $handle is open.
170
+ */
171
+ protected function is_open( $handle ) {
172
+ return array_key_exists( $handle, $this->handles ) && is_resource( $this->handles[ $handle ] );
173
+ }
174
+
175
+ /**
176
+ * Close a handle.
177
+ *
178
+ * @param string $handle Log handle.
179
+ * @return bool success
180
+ */
181
+ protected function close( $handle ) {
182
+ $result = false;
183
+
184
+ if ( $this->is_open( $handle ) ) {
185
+ $result = fclose( $this->handles[ $handle ] ); // @codingStandardsIgnoreLine.
186
+ unset( $this->handles[ $handle ] );
187
+ }
188
+
189
+ return $result;
190
+ }
191
+
192
+ /**
193
+ * Add a log entry to chosen file.
194
+ *
195
+ * @param string $entry Log entry text.
196
+ * @param string $handle Log entry handle.
197
+ *
198
+ * @return bool True if write was successful.
199
+ */
200
+ protected function add( $entry, $handle ) {
201
+ $result = false;
202
+
203
+ if ( $this->should_rotate( $handle ) ) {
204
+ $this->log_rotate( $handle );
205
+ }
206
+
207
+ if ( $this->open( $handle ) && is_resource( $this->handles[ $handle ] ) ) {
208
+ $result = fwrite( $this->handles[ $handle ], $entry . PHP_EOL ); // @codingStandardsIgnoreLine.
209
+ } else {
210
+ $this->cache_log( $entry, $handle );
211
+ }
212
+
213
+ return false !== $result;
214
+ }
215
+
216
+ /**
217
+ * Clear entries from chosen file.
218
+ *
219
+ * @param string $handle Log handle.
220
+ *
221
+ * @return bool
222
+ */
223
+ public function clear( $handle ) {
224
+ $result = false;
225
+
226
+ // Close the file if it's already open.
227
+ $this->close( $handle );
228
+
229
+ /**
230
+ * $this->open( $handle, 'w' ) == Open the file for writing only. Place the file pointer at
231
+ * the beginning of the file, and truncate the file to zero length.
232
+ */
233
+ if ( $this->open( $handle, 'w' ) && is_resource( $this->handles[ $handle ] ) ) {
234
+ $result = true;
235
+ }
236
+
237
+ do_action( 'cartflows_log_clear', $handle );
238
+
239
+ return $result;
240
+ }
241
+
242
+ /**
243
+ * Remove/delete the chosen file.
244
+ *
245
+ * @param string $handle Log handle.
246
+ *
247
+ * @return bool
248
+ */
249
+ public function remove( $handle ) {
250
+ $removed = false;
251
+ $logs = $this->get_log_files();
252
+ $handle = sanitize_title( $handle );
253
+
254
+ if ( isset( $logs[ $handle ] ) && $logs[ $handle ] ) {
255
+ $file = realpath( trailingslashit( CARTFLOWS_LOG_DIR ) . $logs[ $handle ] );
256
+ if ( 0 === stripos( $file, realpath( trailingslashit( CARTFLOWS_LOG_DIR ) ) ) && is_file( $file ) && is_writable( $file ) ) { // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_is_writable
257
+ $this->close( $file ); // Close first to be certain no processes keep it alive after it is unlinked.
258
+ $removed = unlink( $file ); // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_unlink
259
+ }
260
+ do_action( 'cartflows_log_remove', $handle, $removed );
261
+ }
262
+ return $removed;
263
+ }
264
+
265
+ /**
266
+ * Check if log file should be rotated.
267
+ *
268
+ * Compares the size of the log file to determine whether it is over the size limit.
269
+ *
270
+ * @param string $handle Log handle.
271
+ * @return bool True if if should be rotated.
272
+ */
273
+ protected function should_rotate( $handle ) {
274
+ $file = self::get_log_file_path( $handle );
275
+ if ( $file ) {
276
+ if ( $this->is_open( $handle ) ) {
277
+ $file_stat = fstat( $this->handles[ $handle ] );
278
+ return $file_stat['size'] > $this->log_size_limit;
279
+ } elseif ( file_exists( $file ) ) {
280
+ return filesize( $file ) > $this->log_size_limit;
281
+ } else {
282
+ return false;
283
+ }
284
+ } else {
285
+ return false;
286
+ }
287
+ }
288
+
289
+ /**
290
+ * Rotate log files.
291
+ *
292
+ * Logs are rotated by prepending '.x' to the '.log' suffix.
293
+ * The current log plus 10 historical logs are maintained.
294
+ * For example:
295
+ * base.9.log -> [ REMOVED ]
296
+ * base.8.log -> base.9.log
297
+ * ...
298
+ * base.0.log -> base.1.log
299
+ * base.log -> base.0.log
300
+ *
301
+ * @param string $handle Log handle.
302
+ */
303
+ protected function log_rotate( $handle ) {
304
+ for ( $i = 8; $i >= 0; $i-- ) {
305
+ $this->increment_log_infix( $handle, $i );
306
+ }
307
+ $this->increment_log_infix( $handle );
308
+ }
309
+
310
+ /**
311
+ * Increment a log file suffix.
312
+ *
313
+ * @param string $handle Log handle.
314
+ * @param null|int $number Optional. Default null. Log suffix number to be incremented.
315
+ * @return bool True if increment was successful, otherwise false.
316
+ */
317
+ protected function increment_log_infix( $handle, $number = null ) {
318
+ if ( null === $number ) {
319
+ $suffix = '';
320
+ $next_suffix = '.0';
321
+ } else {
322
+ $suffix = '.' . $number;
323
+ $next_suffix = '.' . ( $number + 1 );
324
+ }
325
+
326
+ $rename_from = self::get_log_file_path( "{$handle}{$suffix}" );
327
+ $rename_to = self::get_log_file_path( "{$handle}{$next_suffix}" );
328
+
329
+ if ( $this->is_open( $rename_from ) ) {
330
+ $this->close( $rename_from );
331
+ }
332
+
333
+ if ( is_writable( $rename_from ) ) { // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_is_writable
334
+ return rename( $rename_from, $rename_to ); // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_rename
335
+ } else {
336
+ return false;
337
+ }
338
+
339
+ }
340
+
341
+ /**
342
+ * Get a log file path.
343
+ *
344
+ * @param string $handle Log name.
345
+ * @return bool|string The log file path or false if path cannot be determined.
346
+ */
347
+ public static function get_log_file_path( $handle ) {
348
+ if ( function_exists( 'wp_hash' ) ) {
349
+ return trailingslashit( CARTFLOWS_LOG_DIR ) . self::get_log_file_name( $handle );
350
+ } else {
351
+ wc_doing_it_wrong( __METHOD__, __( 'This method should not be called before plugins_loaded.', 'cartflows' ), '3.0' );
352
+ return false;
353
+ }
354
+ }
355
+
356
+ /**
357
+ * Get a log file name.
358
+ *
359
+ * File names consist of the handle, followed by the date, followed by a hash, .log.
360
+ *
361
+ * @since 3.3
362
+ * @param string $handle Log name.
363
+ * @return bool|string The log file name or false if cannot be determined.
364
+ */
365
+ public static function get_log_file_name( $handle ) {
366
+ if ( function_exists( 'wp_hash' ) ) {
367
+ $date_suffix = date( 'Y-m-d', current_time( 'timestamp', true ) );
368
+ $hash_suffix = wp_hash( $handle );
369
+ return sanitize_file_name( implode( '-', array( $handle, $date_suffix, $hash_suffix ) ) . '.log' );
370
+ } else {
371
+ wc_doing_it_wrong( __METHOD__, __( 'This method should not be called before plugins_loaded.', 'cartflows' ), '3.3' );
372
+ return false;
373
+ }
374
+ }
375
+
376
+ /**
377
+ * Cache log to write later.
378
+ *
379
+ * @param string $entry Log entry text.
380
+ * @param string $handle Log entry handle.
381
+ */
382
+ protected function cache_log( $entry, $handle ) {
383
+ $this->cached_logs[] = array(
384
+ 'entry' => $entry,
385
+ 'handle' => $handle,
386
+ );
387
+ }
388
+
389
+ /**
390
+ * Write cached logs.
391
+ */
392
+ public function write_cached_logs() {
393
+ foreach ( $this->cached_logs as $log ) {
394
+ $this->add( $log['entry'], $log['handle'] );
395
+ }
396
+ }
397
+
398
+ /**
399
+ * Delete all logs older than a defined timestamp.
400
+ *
401
+ * @since 3.4.0
402
+ * @param integer $timestamp Timestamp to delete logs before.
403
+ */
404
+ public static function delete_logs_before_timestamp( $timestamp = 0 ) {
405
+ if ( ! $timestamp ) {
406
+ return;
407
+ }
408
+
409
+ $log_files = self::get_log_files();
410
+
411
+ foreach ( $log_files as $log_file ) {
412
+ $last_modified = filemtime( trailingslashit( CARTFLOWS_LOG_DIR ) . $log_file );
413
+
414
+ if ( $last_modified < $timestamp ) {
415
+ @unlink( trailingslashit( CARTFLOWS_LOG_DIR ) . $log_file ); // @codingStandardsIgnoreLine.
416
+ }
417
+ }
418
+ }
419
+
420
+ /**
421
+ * Get all log files in the log directory.
422
+ *
423
+ * @since 3.4.0
424
+ * @return array
425
+ */
426
+ public static function get_log_files() {
427
+ $files = @scandir( CARTFLOWS_LOG_DIR ); // @codingStandardsIgnoreLine.
428
+ $result = array();
429
+
430
+ if ( ! empty( $files ) ) {
431
+ foreach ( $files as $key => $value ) {
432
+ if ( ! in_array( $value, array( '.', '..' ), true ) ) {
433
+ if ( ! is_dir( $value ) && strstr( $value, '.log' ) ) {
434
+ $result[ sanitize_title( $value ) ] = $value;
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ return $result;
441
+ }
442
+ }
classes/logger/class-cartflows-log-handler-interface.php CHANGED
@@ -1,33 +1,33 @@
1
- <?php
2
- /**
3
- * Log Handler Interface
4
- *
5
- * @version 3.3.0
6
- * @package WooCommerce/Interface
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly.
11
- }
12
-
13
- /**
14
- * WC Log Handler Interface
15
- *
16
- * Functions that must be defined to correctly fulfill log handler API.
17
- *
18
- * @version 3.3.0
19
- */
20
- interface Cartflows_Log_Handler_Interface {
21
-
22
- /**
23
- * Handle a log entry.
24
- *
25
- * @param int $timestamp Log timestamp.
26
- * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
27
- * @param string $message Log message.
28
- * @param array $context Additional information for log handlers.
29
- *
30
- * @return bool False if value was not handled and true if value was handled.
31
- */
32
- public function handle( $timestamp, $level, $message, $context );
33
- }
1
+ <?php
2
+ /**
3
+ * Log Handler Interface
4
+ *
5
+ * @version 3.3.0
6
+ * @package WooCommerce/Interface
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly.
11
+ }
12
+
13
+ /**
14
+ * WC Log Handler Interface
15
+ *
16
+ * Functions that must be defined to correctly fulfill log handler API.
17
+ *
18
+ * @version 3.3.0
19
+ */
20
+ interface Cartflows_Log_Handler_Interface {
21
+
22
+ /**
23
+ * Handle a log entry.
24
+ *
25
+ * @param int $timestamp Log timestamp.
26
+ * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
27
+ * @param string $message Log message.
28
+ * @param array $context Additional information for log handlers.
29
+ *
30
+ * @return bool False if value was not handled and true if value was handled.
31
+ */
32
+ public function handle( $timestamp, $level, $message, $context );
33
+ }
classes/logger/class-cartflows-log-handler.php CHANGED
@@ -1,57 +1,57 @@
1
- <?php
2
- /**
3
- * Log handling functionality.
4
- *
5
- * @class Cartflows_Log_Handler
6
- * @package WooCommerce/Abstracts
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly.
11
- }
12
-
13
- /**
14
- * Abstract WC Log Handler Class
15
- *
16
- * @version 1.0.0
17
- * @package WooCommerce/Abstracts
18
- */
19
- abstract class Cartflows_Log_Handler implements Cartflows_Log_Handler_Interface {
20
-
21
- /**
22
- * Formats a timestamp for use in log messages.
23
- *
24
- * @param int $timestamp Log timestamp.
25
- * @return string Formatted time for use in log entry.
26
- */
27
- protected static function format_time( $timestamp ) {
28
- return date( 'c', $timestamp );
29
- }
30
-
31
- /**
32
- * Builds a log entry text from level, timestamp and message.
33
- *
34
- * @param int $timestamp Log timestamp.
35
- * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
36
- * @param string $message Log message.
37
- * @param array $context Additional information for log handlers.
38
- *
39
- * @return string Formatted log entry.
40
- */
41
- protected static function format_entry( $timestamp, $level, $message, $context ) {
42
- $time_string = self::format_time( $timestamp );
43
- $level_string = strtoupper( $level );
44
- $entry = "{$time_string} {$level_string} {$message}";
45
-
46
- return apply_filters(
47
- 'cartflows_format_log_entry',
48
- $entry,
49
- array(
50
- 'timestamp' => $timestamp,
51
- 'level' => $level,
52
- 'message' => $message,
53
- 'context' => $context,
54
- )
55
- );
56
- }
57
- }
1
+ <?php
2
+ /**
3
+ * Log handling functionality.
4
+ *
5
+ * @class Cartflows_Log_Handler
6
+ * @package WooCommerce/Abstracts
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly.
11
+ }
12
+
13
+ /**
14
+ * Abstract WC Log Handler Class
15
+ *
16
+ * @version 1.0.0
17
+ * @package WooCommerce/Abstracts
18
+ */
19
+ abstract class Cartflows_Log_Handler implements Cartflows_Log_Handler_Interface {
20
+
21
+ /**
22
+ * Formats a timestamp for use in log messages.
23
+ *
24
+ * @param int $timestamp Log timestamp.
25
+ * @return string Formatted time for use in log entry.
26
+ */
27
+ protected static function format_time( $timestamp ) {
28
+ return date( 'c', $timestamp );
29
+ }
30
+
31
+ /**
32
+ * Builds a log entry text from level, timestamp and message.
33
+ *
34
+ * @param int $timestamp Log timestamp.
35
+ * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
36
+ * @param string $message Log message.
37
+ * @param array $context Additional information for log handlers.
38
+ *
39
+ * @return string Formatted log entry.
40
+ */
41
+ protected static function format_entry( $timestamp, $level, $message, $context ) {
42
+ $time_string = self::format_time( $timestamp );
43
+ $level_string = strtoupper( $level );
44
+ $entry = "{$time_string} {$level_string} {$message}";
45
+
46
+ return apply_filters(
47
+ 'cartflows_format_log_entry',
48
+ $entry,
49
+ array(
50
+ 'timestamp' => $timestamp,
51
+ 'level' => $level,
52
+ 'message' => $message,
53
+ 'context' => $context,
54
+ )
55
+ );
56
+ }
57
+ }
classes/logger/class-cartflows-log-levels.php CHANGED
@@ -1,108 +1,108 @@
1
- <?php
2
- /**
3
- * Standard log levels
4
- *
5
- * @version 3.2.0
6
- * @package WooCommerce/Classes
7
- */
8
-
9
- defined( 'ABSPATH' ) || exit;
10
-
11
- /**
12
- * Log levels class.
13
- */
14
- abstract class Cartflows_Log_Levels {
15
-
16
- /**
17
- * Log Levels
18
- *
19
- * Description of levels:
20
- * 'emergency': System is unusable.
21
- * 'alert': Action must be taken immediately.
22
- * 'critical': Critical conditions.
23
- * 'error': Error conditions.
24
- * 'warning': Warning conditions.
25
- * 'notice': Normal but significant condition.
26
- * 'info': Informational messages.
27
- * 'debug': Debug-level messages.
28
- *
29
- * @see @link {https://tools.ietf.org/html/rfc5424}
30
- */
31
- const EMERGENCY = 'emergency';
32
- const ALERT = 'alert';
33
- const CRITICAL = 'critical';
34
- const ERROR = 'error';
35
- const WARNING = 'warning';
36
- const NOTICE = 'notice';
37
- const INFO = 'info';
38
- const DEBUG = 'debug';
39
-
40
- /**
41
- * Level strings mapped to integer severity.
42
- *
43
- * @var array
44
- */
45
- protected static $level_to_severity = array(
46
- self::EMERGENCY => 800,
47
- self::ALERT => 700,
48
- self::CRITICAL => 600,
49
- self::ERROR => 500,
50
- self::WARNING => 400,
51
- self::NOTICE => 300,
52
- self::INFO => 200,
53
- self::DEBUG => 100,
54
- );
55
-
56
- /**
57
- * Severity integers mapped to level strings.
58
- *
59
- * This is the inverse of $level_severity.
60
- *
61
- * @var array
62
- */
63
- protected static $severity_to_level = array(
64
- 800 => self::EMERGENCY,
65
- 700 => self::ALERT,
66
- 600 => self::CRITICAL,
67
- 500 => self::ERROR,
68
- 400 => self::WARNING,
69
- 300 => self::NOTICE,
70
- 200 => self::INFO,
71
- 100 => self::DEBUG,
72
- );
73
-
74
-
75
- /**
76
- * Validate a level string.
77
- *
78
- * @param string $level Log level.
79
- * @return bool True if $level is a valid level.
80
- */
81
- public static function is_valid_level( $level ) {
82
- return array_key_exists( strtolower( $level ), self::$level_to_severity );
83
- }
84
-
85
- /**
86
- * Translate level string to integer.
87
- *
88
- * @param string $level Log level, options: emergency|alert|critical|error|warning|notice|info|debug.
89
- * @return int 100 (debug) - 800 (emergency) or 0 if not recognized
90
- */
91
- public static function get_level_severity( $level ) {
92
- return self::is_valid_level( $level ) ? self::$level_to_severity[ strtolower( $level ) ] : 0;
93
- }
94
-
95
- /**
96
- * Translate severity integer to level string.
97
- *
98
- * @param int $severity Serevity level.
99
- * @return bool|string False if not recognized. Otherwise string representation of level.
100
- */
101
- public static function get_severity_level( $severity ) {
102
- if ( ! array_key_exists( $severity, self::$severity_to_level ) ) {
103
- return false;
104
- }
105
- return self::$severity_to_level[ $severity ];
106
- }
107
-
108
- }
1
+ <?php
2
+ /**
3
+ * Standard log levels
4
+ *
5
+ * @version 3.2.0
6
+ * @package WooCommerce/Classes
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ /**
12
+ * Log levels class.
13
+ */
14
+ abstract class Cartflows_Log_Levels {
15
+
16
+ /**
17
+ * Log Levels
18
+ *
19
+ * Description of levels:
20
+ * 'emergency': System is unusable.
21
+ * 'alert': Action must be taken immediately.
22
+ * 'critical': Critical conditions.
23
+ * 'error': Error conditions.
24
+ * 'warning': Warning conditions.
25
+ * 'notice': Normal but significant condition.
26
+ * 'info': Informational messages.
27
+ * 'debug': Debug-level messages.
28
+ *
29
+ * @see @link {https://tools.ietf.org/html/rfc5424}
30
+ */
31
+ const EMERGENCY = 'emergency';
32
+ const ALERT = 'alert';
33
+ const CRITICAL = 'critical';
34
+ const ERROR = 'error';
35
+ const WARNING = 'warning';
36
+ const NOTICE = 'notice';
37
+ const INFO = 'info';
38
+ const DEBUG = 'debug';
39
+
40
+ /**
41
+ * Level strings mapped to integer severity.
42
+ *
43
+ * @var array
44
+ */
45
+ protected static $level_to_severity = array(
46
+ self::EMERGENCY => 800,
47
+ self::ALERT => 700,
48
+ self::CRITICAL => 600,
49
+ self::ERROR => 500,
50
+ self::WARNING => 400,
51
+ self::NOTICE => 300,
52
+ self::INFO => 200,
53
+ self::DEBUG => 100,
54
+ );
55
+
56
+ /**
57
+ * Severity integers mapped to level strings.
58
+ *
59
+ * This is the inverse of $level_severity.
60
+ *
61
+ * @var array
62
+ */
63
+ protected static $severity_to_level = array(
64
+ 800 => self::EMERGENCY,
65
+ 700 => self::ALERT,
66
+ 600 => self::CRITICAL,
67
+ 500 => self::ERROR,
68
+ 400 => self::WARNING,
69
+ 300 => self::NOTICE,
70
+ 200 => self::INFO,
71
+ 100 => self::DEBUG,
72
+ );
73
+
74
+
75
+ /**
76
+ * Validate a level string.
77
+ *
78
+ * @param string $level Log level.
79
+ * @return bool True if $level is a valid level.
80
+ */
81
+ public static function is_valid_level( $level ) {
82
+ return array_key_exists( strtolower( $level ), self::$level_to_severity );
83
+ }
84
+
85
+ /**
86
+ * Translate level string to integer.
87
+ *
88
+ * @param string $level Log level, options: emergency|alert|critical|error|warning|notice|info|debug.
89
+ * @return int 100 (debug) - 800 (emergency) or 0 if not recognized
90
+ */
91
+ public static function get_level_severity( $level ) {
92
+ return self::is_valid_level( $level ) ? self::$level_to_severity[ strtolower( $level ) ] : 0;
93
+ }
94
+
95
+ /**
96
+ * Translate severity integer to level string.
97
+ *
98
+ * @param int $severity Serevity level.
99
+ * @return bool|string False if not recognized. Otherwise string representation of level.
100
+ */
101
+ public static function get_severity_level( $severity ) {
102
+ if ( ! array_key_exists( $severity, self::$severity_to_level ) ) {
103
+ return false;
104
+ }
105
+ return self::$severity_to_level[ $severity ];
106
+ }
107
+
108
+ }
classes/logger/class-cartflows-logger-interface.php CHANGED
@@ -1,139 +1,139 @@
1
- <?php
2
- /**
3
- * Logger Interface
4
- *
5
- * @version 3.0.0
6
- * @package WooCommerce/Interface
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly.
11
- }
12
-
13
- /**
14
- * WC Logger Interface
15
- *
16
- * Functions that must be defined to correctly fulfill logger API.
17
- *
18
- * @version 3.0.0
19
- */
20
- interface Cartflows_WC_Logger_Interface {
21
-
22
- /**
23
- * Add a log entry.
24
- *
25
- * This is not the preferred method for adding log messages. Please use log() or any one of
26
- * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
27
- *
28
- * @param string $handle File handle.
29
- * @param string $message Log message.
30
- * @param string $level Log level.
31
- *
32
- * @return bool True if log was added, otherwise false.
33
- */
34
- public function add( $handle, $message, $level = Cartflows_Log_Levels::NOTICE );
35
-
36
- /**
37
- * Add a log entry.
38
- *
39
- * @param string $level One of the following:
40
- * 'emergency': System is unusable.
41
- * 'alert': Action must be taken immediately.
42
- * 'critical': Critical conditions.
43
- * 'error': Error conditions.
44
- * 'warning': Warning conditions.
45
- * 'notice': Normal but significant condition.
46
- * 'info': Informational messages.
47
- * 'debug': Debug-level messages.
48
- * @param string $message Log message.
49
- * @param array $context Optional. Additional information for log handlers.
50
- */
51
- public function log( $level, $message, $context = array() );
52
-
53
- /**
54
- * Adds an emergency level message.
55
- *
56
- * System is unusable.
57
- *
58
- * @param string $message Log message.
59
- * @param array $context Optional. Additional information for log handlers.
60
- */
61
- public function emergency( $message, $context = array() );
62
-
63
- /**
64
- * Adds an alert level message.
65
- *
66
- * Action must be taken immediately.
67
- * Example: Entire website down, database unavailable, etc.
68
- *
69
- * @param string $message Log message.
70
- * @param array $context Optional. Additional information for log handlers.
71
- */
72
- public function alert( $message, $context = array() );
73
-
74
- /**
75
- * Adds a critical level message.
76
- *
77
- * Critical conditions.
78
- * Example: Application component unavailable, unexpected exception.
79
- *
80
- * @param string $message Log message.
81
- * @param array $context Optional. Additional information for log handlers.
82
- */
83
- public function critical( $message, $context = array() );
84
-
85
- /**
86
- * Adds an error level message.
87
- *
88
- * Runtime errors that do not require immediate action but should typically be logged
89
- * and monitored.
90
- *
91
- * @param string $message Log message.
92
- * @param array $context Optional. Additional information for log handlers.
93
- */
94
- public function error( $message, $context = array() );
95
-
96
- /**
97
- * Adds a warning level message.
98
- *
99
- * Exceptional occurrences that are not errors.
100
- *
101
- * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
102
- * necessarily wrong.
103
- *
104
- * @param string $message Log message.
105
- * @param array $context Optional. Additional information for log handlers.
106
- */
107
- public function warning( $message, $context = array() );
108
-
109
- /**
110
- * Adds a notice level message.
111
- *
112
- * Normal but significant events.
113
- *
114
- * @param string $message Log message.
115
- * @param array $context Optional. Additional information for log handlers.
116
- */
117
- public function notice( $message, $context = array() );
118
-
119
- /**
120
- * Adds a info level message.
121
- *
122
- * Interesting events.
123
- * Example: User logs in, SQL logs.
124
- *
125
- * @param string $message Log message.
126
- * @param array $context Optional. Additional information for log handlers.
127
- */
128
- public function info( $message, $context = array() );
129
-
130
- /**
131
- * Adds a debug level message.
132
- *
133
- * Detailed debug information.
134
- *
135
- * @param string $message Log message.
136
- * @param array $context Optional. Additional information for log handlers.
137
- */
138
- public function debug( $message, $context = array() );
139
- }
1
+ <?php
2
+ /**
3
+ * Logger Interface
4
+ *
5
+ * @version 3.0.0
6
+ * @package WooCommerce/Interface
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly.
11
+ }
12
+
13
+ /**
14
+ * WC Logger Interface
15
+ *
16
+ * Functions that must be defined to correctly fulfill logger API.
17
+ *
18
+ * @version 3.0.0
19
+ */
20
+ interface Cartflows_WC_Logger_Interface {
21
+
22
+ /**
23
+ * Add a log entry.
24
+ *
25
+ * This is not the preferred method for adding log messages. Please use log() or any one of
26
+ * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
27
+ *
28
+ * @param string $handle File handle.
29
+ * @param string $message Log message.
30
+ * @param string $level Log level.
31
+ *
32
+ * @return bool True if log was added, otherwise false.
33
+ */
34
+ public function add( $handle, $message, $level = Cartflows_Log_Levels::NOTICE );
35
+
36
+ /**
37
+ * Add a log entry.
38
+ *
39
+ * @param string $level One of the following:
40
+ * 'emergency': System is unusable.
41
+ * 'alert': Action must be taken immediately.
42
+ * 'critical': Critical conditions.
43
+ * 'error': Error conditions.
44
+ * 'warning': Warning conditions.
45
+ * 'notice': Normal but significant condition.
46
+ * 'info': Informational messages.
47
+ * 'debug': Debug-level messages.
48
+ * @param string $message Log message.
49
+ * @param array $context Optional. Additional information for log handlers.
50
+ */
51
+ public function log( $level, $message, $context = array() );
52
+
53
+ /**
54
+ * Adds an emergency level message.
55
+ *
56
+ * System is unusable.
57
+ *
58
+ * @param string $message Log message.
59
+ * @param array $context Optional. Additional information for log handlers.
60
+ */
61
+ public function emergency( $message, $context = array() );
62
+
63
+ /**
64
+ * Adds an alert level message.
65
+ *
66
+ * Action must be taken immediately.
67
+ * Example: Entire website down, database unavailable, etc.
68
+ *
69
+ * @param string $message Log message.
70
+ * @param array $context Optional. Additional information for log handlers.
71
+ */
72
+ public function alert( $message, $context = array() );
73
+
74
+ /**
75
+ * Adds a critical level message.
76
+ *
77
+ * Critical conditions.
78
+ * Example: Application component unavailable, unexpected exception.
79
+ *
80
+ * @param string $message Log message.
81
+ * @param array $context Optional. Additional information for log handlers.
82
+ */
83
+ public function critical( $message, $context = array() );
84
+
85
+ /**
86
+ * Adds an error level message.
87
+ *
88
+ * Runtime errors that do not require immediate action but should typically be logged
89
+ * and monitored.
90
+ *
91
+ * @param string $message Log message.
92
+ * @param array $context Optional. Additional information for log handlers.
93
+ */
94
+ public function error( $message, $context = array() );
95
+
96
+ /**
97
+ * Adds a warning level message.
98
+ *
99
+ * Exceptional occurrences that are not errors.
100
+ *
101
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
102
+ * necessarily wrong.
103
+ *
104
+ * @param string $message Log message.
105
+ * @param array $context Optional. Additional information for log handlers.
106
+ */
107
+ public function warning( $message, $context = array() );
108
+
109
+ /**
110
+ * Adds a notice level message.
111
+ *
112
+ * Normal but significant events.
113
+ *
114
+ * @param string $message Log message.
115
+ * @param array $context Optional. Additional information for log handlers.
116
+ */
117
+ public function notice( $message, $context = array() );
118
+
119
+ /**
120
+ * Adds a info level message.
121
+ *
122
+ * Interesting events.
123
+ * Example: User logs in, SQL logs.
124
+ *
125
+ * @param string $message Log message.
126
+ * @param array $context Optional. Additional information for log handlers.
127
+ */
128
+ public function info( $message, $context = array() );
129
+
130
+ /**
131
+ * Adds a debug level message.
132
+ *
133
+ * Detailed debug information.
134
+ *
135
+ * @param string $message Log message.
136
+ * @param array $context Optional. Additional information for log handlers.
137
+ */
138
+ public function debug( $message, $context = array() );
139
+ }
classes/logger/class-cartflows-wc-logger.php CHANGED
@@ -1,301 +1,301 @@
1
- <?php
2
- /**
3
- * Provides logging capabilities for debugging purposes.
4
- *
5
- * @class Cartflows_WC_Logger
6
- * @version 2.0.0
7
- * @package WooCommerce/Classes
8
- */
9
-
10
- defined( 'ABSPATH' ) || exit;
11
-
12
- /**
13
- * Cartflows_WC_Logger class.
14
- */
15
- class Cartflows_WC_Logger implements Cartflows_WC_Logger_Interface {
16
-
17
- /**
18
- * Stores registered log handlers.
19
- *
20
- * @var array
21
- */
22
- protected $handlers;
23
-
24
- /**
25
- * Minimum log level this handler will process.
26
- *
27
- * @var int Integer representation of minimum log level to handle.
28
- */
29
- protected $threshold;
30
-
31
- /**
32
- * Constructor for the logger.
33
- *
34
- * @param array $handlers Optional. Array of log handlers. If $handlers is not provided, the filter 'woocommerce_register_log_handlers' will be used to define the handlers. If $handlers is provided, the filter will not be applied and the handlers will be used directly.
35
- * @param string $threshold Optional. Define an explicit threshold. May be configured via WC_LOG_THRESHOLD. By default, all logs will be processed.
36
- */
37
- public function __construct( $handlers = null, $threshold = null ) {
38
- if ( null === $handlers ) {
39
- $handlers = apply_filters( 'cartflows_register_log_handlers', array() );
40
-
41
- $default_handler = new Cartflows_Log_Handler_File();
42
-
43
- array_push( $handlers, $default_handler );
44
- }
45
-
46
- $register_handlers = array();
47
-
48
- if ( ! empty( $handlers ) && is_array( $handlers ) ) {
49
- foreach ( $handlers as $handler ) {
50
- $implements = class_implements( $handler );
51
- if ( is_object( $handler ) && is_array( $implements ) && in_array( 'Cartflows_Log_Handler_Interface', $implements, true ) ) {
52
- $register_handlers[] = $handler;
53
- } else {
54
- wc_doing_it_wrong(
55
- __METHOD__,
56
- sprintf(
57
- /* translators: 1: class name 2: Cartflows_Log_Handler_Interface */
58
- __( 'The provided handler %1$s does not implement %2$s.', 'cartflows' ),
59
- '<code>' . esc_html( is_object( $handler ) ? get_class( $handler ) : $handler ) . '</code>',
60
- '<code>Cartflows_Log_Handler_Interface</code>'
61
- ),
62
- '3.0'
63
- );
64
- }
65
- }
66
- }
67
-
68
- if ( null !== $threshold ) {
69
- $threshold = Cartflows_Log_Levels::get_level_severity( $threshold );
70
- } elseif ( defined( 'WC_LOG_THRESHOLD' ) && Cartflows_Log_Levels::is_valid_level( WC_LOG_THRESHOLD ) ) {
71
- $threshold = Cartflows_Log_Levels::get_level_severity( WC_LOG_THRESHOLD );
72
- } else {
73
- $threshold = null;
74
- }
75
-
76
- $this->handlers = $register_handlers;
77
- $this->threshold = $threshold;
78
- }
79
-
80
- /**
81
- * Determine whether to handle or ignore log.
82
- *
83
- * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
84
- * @return bool True if the log should be handled.
85
- */
86
- protected function should_handle( $level ) {
87
- if ( null === $this->threshold ) {
88
- return true;
89
- }
90
- return $this->threshold <= Cartflows_Log_Levels::get_level_severity( $level );
91
- }
92
-
93
- /**
94
- * Add a log entry.
95
- *
96
- * This is not the preferred method for adding log messages. Please use log() or any one of
97
- * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
98
- *
99
- * @param string $handle File handle.
100
- * @param string $message Message to log.
101
- * @param string $level Logging level.
102
- * @return bool
103
- */
104
- public function add( $handle, $message, $level = Cartflows_Log_Levels::NOTICE ) {
105
- $message = apply_filters( 'cartflows_logger_add_message', $message, $handle );
106
- $this->log(
107
- $level,
108
- $message,
109
- array(
110
- 'source' => $handle,
111
- '_legacy' => true,
112
- )
113
- );
114
- wc_do_deprecated_action( 'cartflows_log_add', array( $handle, $message ), '3.0', 'This action has been deprecated with no alternative.' );
115
- return true;
116
- }
117
-
118
- /**
119
- * Add a log entry.
120
- *
121
- * @param string $level One of the following:
122
- * 'emergency': System is unusable.
123
- * 'alert': Action must be taken immediately.
124
- * 'critical': Critical conditions.
125
- * 'error': Error conditions.
126
- * 'warning': Warning conditions.
127
- * 'notice': Normal but significant condition.
128
- * 'info': Informational messages.
129
- * 'debug': Debug-level messages.
130
- * @param string $message Log message.
131
- * @param array $context Optional. Additional information for log handlers.
132
- */
133
- public function log( $level, $message, $context = array() ) {
134
- if ( ! Cartflows_Log_Levels::is_valid_level( $level ) ) {
135
- /* translators: 1: Cartflows_WC_Logger::log 2: level */
136
- wc_doing_it_wrong( __METHOD__, sprintf( __( '%1$s was called with an invalid level "%2$s".', 'cartflows' ), '<code>Cartflows_WC_Logger::log</code>', $level ), '3.0' );
137
- }
138
-
139
- if ( $this->should_handle( $level ) ) {
140
- $timestamp = current_time( 'timestamp', 1 );
141
- $message = apply_filters( 'cartflows_logger_log_message', $message, $level, $context );
142
-
143
- foreach ( $this->handlers as $handler ) {
144
- $handler->handle( $timestamp, $level, $message, $context );
145
- }
146
- }
147
- }
148
-
149
- /**
150
- * Adds an emergency level message.
151
- *
152
- * System is unusable.
153
- *
154
- * @see Cartflows_WC_Logger::log
155
- *
156
- * @param string $message Message to log.
157
- * @param array $context Log context.
158
- */
159
- public function emergency( $message, $context = array() ) {
160
- $this->log( Cartflows_Log_Levels::EMERGENCY, $message, $context );
161
- }
162
-
163
- /**
164
- * Adds an alert level message.
165
- *
166
- * Action must be taken immediately.
167
- * Example: Entire website down, database unavailable, etc.
168
- *
169
- * @see Cartflows_WC_Logger::log
170
- *
171
- * @param string $message Message to log.
172
- * @param array $context Log context.
173
- */
174
- public function alert( $message, $context = array() ) {
175
- $this->log( Cartflows_Log_Levels::ALERT, $message, $context );
176
- }
177
-
178
- /**
179
- * Adds a critical level message.
180
- *
181
- * Critical conditions.
182
- * Example: Application component unavailable, unexpected exception.
183
- *
184
- * @see Cartflows_WC_Logger::log
185
- *
186
- * @param string $message Message to log.
187
- * @param array $context Log context.
188
- */
189
- public function critical( $message, $context = array() ) {
190
- $this->log( Cartflows_Log_Levels::CRITICAL, $message, $context );
191
- }
192
-
193
- /**
194
- * Adds an error level message.
195
- *
196
- * Runtime errors that do not require immediate action but should typically be logged
197
- * and monitored.
198
- *
199
- * @see Cartflows_WC_Logger::log
200
- *
201
- * @param string $message Message to log.
202
- * @param array $context Log context.
203
- */
204
- public function error( $message, $context = array() ) {
205
- $this->log( Cartflows_Log_Levels::ERROR, $message, $context );
206
- }
207
-
208
- /**
209
- * Adds a warning level message.
210
- *
211
- * Exceptional occurrences that are not errors.
212
- *
213
- * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
214
- * necessarily wrong.
215
- *
216
- * @see Cartflows_WC_Logger::log
217
- *
218
- * @param string $message Message to log.
219
- * @param array $context Log context.
220
- */
221
- public function warning( $message, $context = array() ) {
222
- $this->log( Cartflows_Log_Levels::WARNING, $message, $context );
223
- }
224
-
225
- /**
226
- * Adds a notice level message.
227
- *
228
- * Normal but significant events.
229
- *
230
- * @see Cartflows_WC_Logger::log
231
- *
232
- * @param string $message Message to log.
233
- * @param array $context Log context.
234
- */
235
- public function notice( $message, $context = array() ) {
236
- $this->log( Cartflows_Log_Levels::NOTICE, $message, $context );
237
- }
238
-
239
- /**
240
- * Adds a info level message.
241
- *
242
- * Interesting events.
243
- * Example: User logs in, SQL logs.
244
- *
245
- * @see Cartflows_WC_Logger::log
246
- *
247
- * @param string $message Message to log.
248
- * @param array $context Log context.
249
- */
250
- public function info( $message, $context = array() ) {
251
- $this->log( Cartflows_Log_Levels::INFO, $message, $context );
252
- }
253
-
254
- /**
255
- * Adds a debug level message.
256
- *
257
- * Detailed debug information.
258
- *
259
- * @see Cartflows_WC_Logger::log
260
- *
261
- * @param string $message Message to log.
262
- * @param array $context Log context.
263
- */
264
- public function debug( $message, $context = array() ) {
265
- $this->log( Cartflows_Log_Levels::DEBUG, $message, $context );
266
- }
267
-
268
- /**
269
- * Clear entries for a chosen file/source.
270
- *
271
- * @param string $source Source/handle to clear.
272
- * @return bool
273
- */
274
- public function clear( $source = '' ) {
275
- if ( ! $source ) {
276
- return false;
277
- }
278
- foreach ( $this->handlers as $handler ) {
279
- if ( is_callable( array( $handler, 'clear' ) ) ) {
280
- $handler->clear( $source );
281
- }
282
- }
283
- return true;
284
- }
285
-
286
- /**
287
- * Clear all logs older than a defined number of days. Defaults to 30 days.
288
- *
289
- * @since 3.4.0
290
- */
291
- public function clear_expired_logs() {
292
- $days = absint( apply_filters( 'cartflows_logger_days_to_retain_logs', 30 ) );
293
- $timestamp = strtotime( "-{$days} days" );
294
-
295
- foreach ( $this->handlers as $handler ) {
296
- if ( is_callable( array( $handler, 'delete_logs_before_timestamp' ) ) ) {
297
- $handler->delete_logs_before_timestamp( $timestamp );
298
- }
299
- }
300
- }
301
- }
1
+ <?php
2
+ /**
3
+ * Provides logging capabilities for debugging purposes.
4
+ *
5
+ * @class Cartflows_WC_Logger
6
+ * @version 2.0.0
7
+ * @package WooCommerce/Classes
8
+ */
9
+
10
+ defined( 'ABSPATH' ) || exit;
11
+
12
+ /**
13
+ * Cartflows_WC_Logger class.
14
+ */
15
+ class Cartflows_WC_Logger implements Cartflows_WC_Logger_Interface {
16
+
17
+ /**
18
+ * Stores registered log handlers.
19
+ *
20
+ * @var array
21
+ */
22
+ protected $handlers;
23
+
24
+ /**
25
+ * Minimum log level this handler will process.
26
+ *
27
+ * @var int Integer representation of minimum log level to handle.
28
+ */
29
+ protected $threshold;
30
+
31
+ /**
32
+ * Constructor for the logger.
33
+ *
34
+ * @param array $handlers Optional. Array of log handlers. If $handlers is not provided, the filter 'woocommerce_register_log_handlers' will be used to define the handlers. If $handlers is provided, the filter will not be applied and the handlers will be used directly.
35
+ * @param string $threshold Optional. Define an explicit threshold. May be configured via WC_LOG_THRESHOLD. By default, all logs will be processed.
36
+ */
37
+ public function __construct( $handlers = null, $threshold = null ) {
38
+ if ( null === $handlers ) {
39
+ $handlers = apply_filters( 'cartflows_register_log_handlers', array() );
40
+
41
+ $default_handler = new Cartflows_Log_Handler_File();
42
+
43
+ array_push( $handlers, $default_handler );
44
+ }
45
+
46
+ $register_handlers = array();
47
+
48
+ if ( ! empty( $handlers ) && is_array( $handlers ) ) {
49
+ foreach ( $handlers as $handler ) {
50
+ $implements = class_implements( $handler );
51
+ if ( is_object( $handler ) && is_array( $implements ) && in_array( 'Cartflows_Log_Handler_Interface', $implements, true ) ) {
52
+ $register_handlers[] = $handler;
53
+ } else {
54
+ wc_doing_it_wrong(
55
+ __METHOD__,
56
+ sprintf(
57
+ /* translators: 1: class name 2: Cartflows_Log_Handler_Interface */
58
+ __( 'The provided handler %1$s does not implement %2$s.', 'cartflows' ),
59
+ '<code>' . esc_html( is_object( $handler ) ? get_class( $handler ) : $handler ) . '</code>',
60
+ '<code>Cartflows_Log_Handler_Interface</code>'
61
+ ),
62
+ '3.0'
63
+ );
64
+ }
65
+ }
66
+ }
67
+
68
+ if ( null !== $threshold ) {
69
+ $threshold = Cartflows_Log_Levels::get_level_severity( $threshold );
70
+ } elseif ( defined( 'WC_LOG_THRESHOLD' ) && Cartflows_Log_Levels::is_valid_level( WC_LOG_THRESHOLD ) ) {
71
+ $threshold = Cartflows_Log_Levels::get_level_severity( WC_LOG_THRESHOLD );
72
+ } else {
73
+ $threshold = null;
74
+ }
75
+
76
+ $this->handlers = $register_handlers;
77
+ $this->threshold = $threshold;
78
+ }
79
+
80
+ /**
81
+ * Determine whether to handle or ignore log.
82
+ *
83
+ * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
84
+ * @return bool True if the log should be handled.
85
+ */
86
+ protected function should_handle( $level ) {
87
+ if ( null === $this->threshold ) {
88
+ return true;
89
+ }
90
+ return $this->threshold <= Cartflows_Log_Levels::get_level_severity( $level );
91
+ }
92
+
93
+ /**
94
+ * Add a log entry.
95
+ *
96
+ * This is not the preferred method for adding log messages. Please use log() or any one of
97
+ * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
98
+ *
99
+ * @param string $handle File handle.
100
+ * @param string $message Message to log.
101
+ * @param string $level Logging level.
102
+ * @return bool
103
+ */
104
+ public function add( $handle, $message, $level = Cartflows_Log_Levels::NOTICE ) {
105
+ $message = apply_filters( 'cartflows_logger_add_message', $message, $handle );
106
+ $this->log(
107
+ $level,
108
+ $message,
109
+ array(
110
+ 'source' => $handle,
111
+ '_legacy' => true,
112
+ )
113
+ );
114
+ wc_do_deprecated_action( 'cartflows_log_add', array( $handle, $message ), '3.0', 'This action has been deprecated with no alternative.' );
115
+ return true;
116
+ }
117
+
118
+ /**
119
+ * Add a log entry.
120
+ *
121
+ * @param string $level One of the following:
122
+ * 'emergency': System is unusable.
123
+ * 'alert': Action must be taken immediately.
124
+ * 'critical': Critical conditions.
125
+ * 'error': Error conditions.
126
+ * 'warning': Warning conditions.
127
+ * 'notice': Normal but significant condition.
128
+ * 'info': Informational messages.
129
+ * 'debug': Debug-level messages.
130
+ * @param string $message Log message.
131
+ * @param array $context Optional. Additional information for log handlers.
132
+ */
133
+ public function log( $level, $message, $context = array() ) {
134
+ if ( ! Cartflows_Log_Levels::is_valid_level( $level ) ) {
135
+ /* translators: 1: Cartflows_WC_Logger::log 2: level */
136
+ wc_doing_it_wrong( __METHOD__, sprintf( __( '%1$s was called with an invalid level "%2$s".', 'cartflows' ), '<code>Cartflows_WC_Logger::log</code>', $level ), '3.0' );
137
+ }
138
+
139
+ if ( $this->should_handle( $level ) ) {
140
+ $timestamp = current_time( 'timestamp', 1 );
141
+ $message = apply_filters( 'cartflows_logger_log_message', $message, $level, $context );
142
+
143
+ foreach ( $this->handlers as $handler ) {
144
+ $handler->handle( $timestamp, $level, $message, $context );
145
+ }
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Adds an emergency level message.
151
+ *
152
+ * System is unusable.
153
+ *
154
+ * @see Cartflows_WC_Logger::log
155
+ *
156
+ * @param string $message Message to log.
157
+ * @param array $context Log context.
158
+ */
159
+ public function emergency( $message, $context = array() ) {
160
+ $this->log( Cartflows_Log_Levels::EMERGENCY, $message, $context );
161
+ }
162
+
163
+ /**
164
+ * Adds an alert level message.
165
+ *
166
+ * Action must be taken immediately.
167
+ * Example: Entire website down, database unavailable, etc.
168
+ *
169
+ * @see Cartflows_WC_Logger::log
170
+ *
171
+ * @param string $message Message to log.
172
+ * @param array $context Log context.
173
+ */
174
+ public function alert( $message, $context = array() ) {
175
+ $this->log( Cartflows_Log_Levels::ALERT, $message, $context );
176
+ }
177
+
178
+ /**
179
+ * Adds a critical level message.
180
+ *
181
+ * Critical conditions.
182
+ * Example: Application component unavailable, unexpected exception.
183
+ *
184
+ * @see Cartflows_WC_Logger::log
185
+ *
186
+ * @param string $message Message to log.
187
+ * @param array $context Log context.
188
+ */
189
+ public function critical( $message, $context = array() ) {
190
+ $this->log( Cartflows_Log_Levels::CRITICAL, $message, $context );
191
+ }
192
+
193
+ /**
194
+ * Adds an error level message.
195
+ *
196
+ * Runtime errors that do not require immediate action but should typically be logged
197
+ * and monitored.
198
+ *
199
+ * @see Cartflows_WC_Logger::log
200
+ *
201
+ * @param string $message Message to log.
202
+ * @param array $context Log context.
203
+ */
204
+ public function error( $message, $context = array() ) {
205
+ $this->log( Cartflows_Log_Levels::ERROR, $message, $context );
206
+ }
207
+
208
+ /**
209
+ * Adds a warning level message.
210
+ *
211
+ * Exceptional occurrences that are not errors.
212
+ *
213
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
214
+ * necessarily wrong.
215
+ *
216
+ * @see Cartflows_WC_Logger::log
217
+ *
218
+ * @param string $message Message to log.
219
+ * @param array $context Log context.
220
+ */
221
+ public function warning( $message, $context = array() ) {
222
+ $this->log( Cartflows_Log_Levels::WARNING, $message, $context );
223
+ }
224
+
225
+ /**
226
+ * Adds a notice level message.
227
+ *
228
+ * Normal but significant events.
229
+ *
230
+ * @see Cartflows_WC_Logger::log
231
+ *
232
+ * @param string $message Message to log.
233
+ * @param array $context Log context.
234
+ */
235
+ public function notice( $message, $context = array() ) {
236
+ $this->log( Cartflows_Log_Levels::NOTICE, $message, $context );
237
+ }
238
+
239
+ /**
240
+ * Adds a info level message.
241
+ *
242
+ * Interesting events.
243
+ * Example: User logs in, SQL logs.
244
+ *
245
+ * @see Cartflows_WC_Logger::log
246
+ *
247
+ * @param string $message Message to log.
248
+ * @param array $context Log context.
249
+ */
250
+ public function info( $message, $context = array() ) {
251
+ $this->log( Cartflows_Log_Levels::INFO, $message, $context );
252
+ }
253
+
254
+ /**
255
+ * Adds a debug level message.
256
+ *
257
+ * Detailed debug information.
258
+ *
259
+ * @see Cartflows_WC_Logger::log
260
+ *
261
+ * @param string $message Message to log.
262
+ * @param array $context Log context.
263
+ */
264
+ public function debug( $message, $context = array() ) {
265
+ $this->log( Cartflows_Log_Levels::DEBUG, $message, $context );
266
+ }
267
+
268
+ /**
269
+ * Clear entries for a chosen file/source.
270
+ *
271
+ * @param string $source Source/handle to clear.
272
+ * @return bool
273
+ */
274
+ public function clear( $source = '' ) {
275
+ if ( ! $source ) {
276
+ return false;
277
+ }
278
+ foreach ( $this->handlers as $handler ) {
279
+ if ( is_callable( array( $handler, 'clear' ) ) ) {
280
+ $handler->clear( $source );
281
+ }
282
+ }
283
+ return true;
284
+ }
285
+
286
+ /**
287
+ * Clear all logs older than a defined number of days. Defaults to 30 days.
288
+ *
289
+ * @since 3.4.0
290
+ */
291
+ public function clear_expired_logs() {
292
+ $days = absint( apply_filters( 'cartflows_logger_days_to_retain_logs', 30 ) );
293
+ $timestamp = strtotime( "-{$days} days" );
294
+
295
+ foreach ( $this->handlers as $handler ) {
296
+ if ( is_callable( array( $handler, 'delete_logs_before_timestamp' ) ) ) {
297
+ $handler->delete_logs_before_timestamp( $timestamp );
298
+ }
299
+ }
300
+ }
301
+ }
includes/admin/cartflows-error-log.php CHANGED
@@ -1,71 +1,71 @@
1
- <?php
2
- /**
3
- * Admin View: Page - Status Logs
4
- *
5
- * @package WooCommerce/Admin/Logs
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit;
10
- }
11
-
12
-
13
-
14
- ?>
15
- <?php if ( $logs ) : ?>
16
- <div id="log-viewer-select">
17
- <div class="alignright">
18
- <form action="
19
- <?php
20
- echo esc_url(
21
- add_query_arg(
22
- array(
23
- 'page' => 'cartflows_settings',
24
- 'cartflows-error-log' => 1,
25
- 'tab' => 'logs',
26
- ),
27
- admin_url( '/admin.php' )
28
- )
29
- );
30
- ?>
31
- " method="post">
32
- <select name="log_file">
33
- <?php foreach ( $logs as $log_key => $log_file ) : ?>
34
- <?php
35
- $timestamp = filemtime( CARTFLOWS_LOG_DIR . $log_file );
36
- $date = sprintf( __( '%1$s at %2$s', 'cartflows' ), date_i18n( 'F j, Y', $timestamp ), date_i18n( 'g:i a', $timestamp ) ); // phpcs:ignore
37
- ?>
38
- <option value="<?php echo esc_attr( $log_key ); ?>" <?php selected( sanitize_title( $viewed_log ), $log_key ); ?>><?php echo esc_html( $log_file ); ?> (<?php echo esc_html( $date ); ?>)</option>
39
- <?php endforeach; ?>
40
- </select>
41
- <button type="submit" class="button" value="<?php esc_attr_e( 'View', 'cartflows' ); ?>"><?php esc_html_e( 'View', 'cartflows' ); ?></button>
42
- </form>
43
- </div>
44
- <div class="clear"></div>
45
- </div>
46
- <div id="log-viewer">
47
- <div class="wcf-log-container">
48
- <pre><?php echo esc_html( file_get_contents( CARTFLOWS_LOG_DIR . $viewed_log ) ); ?></pre>
49
- </div>
50
- <?php if ( ! empty( $viewed_log ) ) : ?>
51
- <a onclick="return confirm('Are you sure to delete this log?');" style="float: right" href="
52
- <?php
53
- echo esc_url(
54
- wp_nonce_url(
55
- add_query_arg(
56
- array(
57
- 'handle' => sanitize_title( $viewed_log ),
58
- 'tab' => 'logs',
59
- )
60
- ),
61
- 'remove_log'
62
- )
63
- );
64
- ?>
65
- "><?php esc_html_e( 'Delete log', 'cartflows' ); ?></a>
66
- <?php endif; ?>
67
-
68
- </div>
69
- <?php else : ?>
70
- <div class="updated woocommerce-message inline"><p><?php esc_html_e( 'There are currently no logs to view.', 'cartflows' ); ?></p></div>
71
- <?php endif; ?>
1
+ <?php
2
+ /**
3
+ * Admin View: Page - Status Logs
4
+ *
5
+ * @package WooCommerce/Admin/Logs
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) {
9
+ exit;
10
+ }
11
+
12
+
13
+
14
+ ?>
15
+ <?php if ( $logs ) : ?>
16
+ <div id="log-viewer-select">
17
+ <div class="alignright">
18
+ <form action="
19
+ <?php
20
+ echo esc_url(
21
+ add_query_arg(
22
+ array(
23
+ 'page' => 'cartflows_settings',
24
+ 'cartflows-error-log' => 1,
25
+ 'tab' => 'logs',
26
+ ),
27
+ admin_url( '/admin.php' )
28
+ )
29
+ );
30
+ ?>
31
+ " method="post">
32
+ <select name="log_file">
33
+ <?php foreach ( $logs as $log_key => $log_file ) : ?>
34
+ <?php
35
+ $timestamp = filemtime( CARTFLOWS_LOG_DIR . $log_file );
36
+ $date = sprintf( __( '%1$s at %2$s', 'cartflows' ), date_i18n( 'F j, Y', $timestamp ), date_i18n( 'g:i a', $timestamp ) ); // phpcs:ignore
37
+ ?>
38
+ <option value="<?php echo esc_attr( $log_key ); ?>" <?php selected( sanitize_title( $viewed_log ), $log_key ); ?>><?php echo esc_html( $log_file ); ?> (<?php echo esc_html( $date ); ?>)</option>
39
+ <?php endforeach; ?>
40
+ </select>
41
+ <button type="submit" class="button" value="<?php esc_attr_e( 'View', 'cartflows' ); ?>"><?php esc_html_e( 'View', 'cartflows' ); ?></button>
42
+ </form>
43
+ </div>
44
+ <div class="clear"></div>
45
+ </div>
46
+ <div id="log-viewer">
47
+ <div class="wcf-log-container">
48
+ <pre><?php echo esc_html( file_get_contents( CARTFLOWS_LOG_DIR . $viewed_log ) ); ?></pre>
49
+ </div>
50
+ <?php if ( ! empty( $viewed_log ) ) : ?>
51
+ <a onclick="return confirm('Are you sure to delete this log?');" style="float: right" href="
52
+ <?php
53
+ echo esc_url(
54
+ wp_nonce_url(
55
+ add_query_arg(
56
+ array(
57
+ 'handle' => sanitize_title( $viewed_log ),
58
+ 'tab' => 'logs',
59
+ )
60
+ ),
61
+ 'remove_log'
62
+ )
63
+ );
64
+ ?>
65
+ "><?php esc_html_e( 'Delete log', 'cartflows' ); ?></a>
66
+ <?php endif; ?>
67
+
68
+ </div>
69
+ <?php else : ?>
70
+ <div class="updated woocommerce-message inline"><p><?php esc_html_e( 'There are currently no logs to view.', 'cartflows' ); ?></p></div>
71
+ <?php endif; ?>
includes/admin/cartflows-general.php CHANGED
@@ -10,9 +10,16 @@ $settings = Cartflows_Helper::get_common_settings();
10
  $debug_data = Cartflows_Helper::get_debug_settings();
11
 
12
  $debug_on = ( isset( $_GET['debug'] ) ) ? sanitize_text_field( $_GET['debug'] ) : 'false';
 
 
13
  ?>
14
 
15
 
 
 
 
 
 
16
  <div class="wrap wcf-addon-wrap wcf-clear wcf-container">
17
  <input type="hidden" name="action" value="wcf_save_common_settings">
18
  <h1 class="screen-reader-text"><?php _e( 'General Settings', 'cartflows' ); ?></h1>
@@ -56,15 +63,16 @@ $debug_on = ( isset( $_GET['debug'] ) ) ? sanitize_text_field( $_GET['debug'] )
56
  )
57
  );
58
 
59
- echo Cartflows_Admin_Fields::flow_checkout_selection_field(
60
- array(
61
- 'id' => 'wcf_global_checkout',
62
- 'name' => '_cartflows_common[global_checkout]',
63
- 'title' => __( 'Global Checkout', 'cartflows' ),
64
- 'value' => $settings['global_checkout'],
65
- )
66
- );
67
-
 
68
  echo Cartflows_Admin_Fields::select_field(
69
  array(
70
  'id' => 'wcf_default_page_builder',
@@ -176,6 +184,7 @@ $debug_on = ( isset( $_GET['debug'] ) ) ? sanitize_text_field( $_GET['debug'] )
176
  <br class="clear">
177
  </div>
178
  </div>
 
179
 
180
  <?php
181
  /**
10
  $debug_data = Cartflows_Helper::get_debug_settings();
11
 
12
  $debug_on = ( isset( $_GET['debug'] ) ) ? sanitize_text_field( $_GET['debug'] ) : 'false';
13
+
14
+ $error_log = filter_input( INPUT_GET, 'cartflows-error-log', FILTER_VALIDATE_BOOLEAN );
15
  ?>
16
 
17
 
18
+ <?php if ( $error_log ) : ?>
19
+ <div class="wrap wcf-addon-wrap wcf-clear wcf-container">
20
+ <?php Cartflows_Logger::status_logs_file(); ?>
21
+ </div>
22
+ <?php else : ?>
23
  <div class="wrap wcf-addon-wrap wcf-clear wcf-container">
24
  <input type="hidden" name="action" value="wcf_save_common_settings">
25
  <h1 class="screen-reader-text"><?php _e( 'General Settings', 'cartflows' ); ?></h1>
63
  )
64
  );
65
 
66
+ if ( wcf()->is_woo_active ) {
67
+ echo Cartflows_Admin_Fields::flow_checkout_selection_field(
68
+ array(
69
+ 'id' => 'wcf_global_checkout',
70
+ 'name' => '_cartflows_common[global_checkout]',
71
+ 'title' => __( 'Global Checkout', 'cartflows' ),
72
+ 'value' => $settings['global_checkout'],
73
+ )
74
+ );
75
+ }
76
  echo Cartflows_Admin_Fields::select_field(
77
  array(
78
  'id' => 'wcf_default_page_builder',
184
  <br class="clear">
185
  </div>
186
  </div>
187
+ <?php endif; ?>
188
 
189
  <?php
190
  /**
languages/cartflows.pot CHANGED
@@ -1,1443 +1,1588 @@
1
- # Copyright (C) 2019 CartFlows Inc
2
- # This file is distributed under the same license as the CartFlows package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: CartFlows 1.1.18\n"
6
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cartflows\n"
7
- "POT-Creation-Date: 2019-05-10 10:29:04+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=utf-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
- "Language: en\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
- "X-Poedit-Country: United States\n"
17
- "X-Poedit-SourceCharset: UTF-8\n"
18
- "X-Poedit-KeywordsList: "
19
- "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
20
- "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
21
- "X-Poedit-Basepath: ../\n"
22
- "X-Poedit-SearchPath-0: .\n"
23
- "X-Poedit-Bookmarks: \n"
24
- "X-Textdomain-Support: yes\n"
25
- "X-Generator: grunt-wp-i18n 1.0.3\n"
26
-
27
- #: classes/batch-process/class-cartflows-importer-elementor.php:44
28
- msgid "Invalid content."
29
- msgstr ""
30
-
31
- #: classes/batch-process/class-cartflows-importer-elementor.php:52
32
- msgid "Invalid content. Expected an array."
33
- msgstr ""
34
-
35
- #: classes/batch-process/helpers/class-wp-background-process.php:435
36
- msgid "Every %d Minutes"
37
- msgstr ""
38
-
39
- #: classes/class-cartflows-admin-fields.php:162
40
- msgid "Select"
41
- msgstr ""
42
-
43
- #: classes/class-cartflows-admin-fields.php:165
44
- msgid "No Checkout Steps"
45
- msgstr ""
46
-
47
- #: classes/class-cartflows-admin-fields.php:191
48
- #. translators: %s: link
49
- msgid ""
50
- "Be sure not to add any product in above selected Global Checkout step. "
51
- "Please read information about how to set up Global Checkout %1$shere%2$s."
52
- msgstr ""
53
-
54
- #: classes/class-cartflows-admin.php:136 classes/class-cartflows-admin.php:137
55
- #: includes/admin/cartflows-general-bck.php:34
56
- msgid "Settings"
57
- msgstr ""
58
-
59
- #: classes/class-cartflows-admin.php:380
60
- msgid "Flows Library"
61
- msgstr ""
62
-
63
- #: classes/class-cartflows-admin.php:387
64
- #: modules/flow/view/meta-flow-steps.php:145
65
- msgid "Ready Templates"
66
- msgstr ""
67
-
68
- #: classes/class-cartflows-admin.php:390
69
- #: modules/flow/view/meta-flow-steps.php:148
70
- msgid "Create Your Own"
71
- msgstr ""
72
-
73
- #: classes/class-cartflows-admin.php:401
74
- #: modules/flow/view/meta-flow-steps.php:160
75
- msgid "Search Sites"
76
- msgstr ""
77
-
78
- #: classes/class-cartflows-admin.php:402
79
- #: modules/flow/view/meta-flow-steps.php:161
80
- msgid "Search Flow..."
81
- msgstr ""
82
-
83
- #: classes/class-cartflows-admin.php:419
84
- msgid "Design Your Flow"
85
- msgstr ""
86
-
87
- #: classes/class-cartflows-admin.php:420
88
- #: modules/flow/view/meta-flow-steps.php:192
89
- msgid "Learn How"
90
- msgstr ""
91
-
92
- #: classes/class-cartflows-api.php:368
93
- msgid "Request successfully processed!"
94
- msgstr ""
95
-
96
- #: classes/class-cartflows-cloning.php:423
97
- msgid "Clone this flow"
98
- msgstr ""
99
-
100
- #: classes/class-cartflows-cloning.php:423
101
- msgid "Clone"
102
- msgstr ""
103
-
104
- #: classes/class-cartflows-flow-frontend.php:52
105
- msgid ""
106
- "Test mode is active — which displays random products for previewing. It can "
107
- "be deactivated from the flow settings in the admin dashboard."
108
- msgstr ""
109
-
110
- #: classes/class-cartflows-importer.php:80
111
- msgid "Export this flow"
112
- msgstr ""
113
-
114
- #: classes/class-cartflows-importer.php:80 includes/exporter.php:18
115
- msgid "Export"
116
- msgstr ""
117
-
118
- #: classes/class-cartflows-importer.php:91
119
- msgid "Flow Export"
120
- msgstr ""
121
-
122
- #: classes/class-cartflows-importer.php:92
123
- msgid "Flow Import"
124
- msgstr ""
125
-
126
- #: classes/class-cartflows-importer.php:103
127
- msgid "No post to export has been supplied!"
128
- msgstr ""
129
-
130
- #: classes/class-cartflows-importer.php:294
131
- msgid "Please upload a valid .json file"
132
- msgstr ""
133
-
134
- #: classes/class-cartflows-importer.php:300
135
- msgid "Please upload a file to import"
136
- msgstr ""
137
-
138
- #: classes/class-cartflows-importer.php:438
139
- msgid "Successfully imported flows."
140
- msgstr ""
141
-
142
- #: classes/class-cartflows-importer.php:470
143
- msgid "Loading Steps"
144
- msgstr ""
145
-
146
- #: classes/class-cartflows-importer.php:472
147
- msgid "Getting steps from the cloud. Please wait for the moment."
148
- msgstr ""
149
-
150
- #: classes/class-cartflows-importer.php:483
151
- msgid "Searching Template.."
152
- msgstr ""
153
-
154
- #: classes/class-cartflows-importer.php:485
155
- msgid "Getting templates from the cloud. Please wait for the moment."
156
- msgstr ""
157
-
158
- #: classes/class-cartflows-importer.php:494
159
- msgid "Importing.."
160
- msgstr ""
161
-
162
- #: classes/class-cartflows-importer.php:503
163
- #: classes/class-cartflows-importer.php:543
164
- msgid "Imported"
165
- msgstr ""
166
-
167
- #: classes/class-cartflows-importer.php:504
168
- #: classes/class-cartflows-importer.php:544
169
- msgid "Thanks for patience"
170
- msgstr ""
171
-
172
- #: classes/class-cartflows-importer.php:513
173
- #: classes/class-cartflows-importer.php:525
174
- msgid "Coming Soon!"
175
- msgstr ""
176
-
177
- #: classes/class-cartflows-importer.php:544
178
- msgid "Redirecting to the Elementor edit window."
179
- msgstr ""
180
-
181
- #: classes/class-cartflows-importer.php:591
182
- #: classes/class-cartflows-importer.php:675
183
- msgid "Pro"
184
- msgstr ""
185
-
186
- #: classes/class-cartflows-importer.php:614
187
- #: classes/class-cartflows-importer.php:701
188
- msgid "Activate License"
189
- msgstr ""
190
-
191
- #: classes/class-cartflows-importer.php:616
192
- #: classes/class-cartflows-importer.php:703
193
- msgid "Get Pro"
194
- msgstr ""
195
-
196
- #: classes/class-cartflows-importer.php:641
197
- msgid "Create"
198
- msgstr ""
199
-
200
- #: classes/class-cartflows-importer.php:720
201
- msgid "Under Maintenance.."
202
- msgstr ""
203
-
204
- #: classes/class-cartflows-importer.php:721
205
- msgid ""
206
- "If you are seeing this message, most likely our servers are under routine "
207
- "maintenance and we will be back shortly."
208
- msgstr ""
209
-
210
- #: classes/class-cartflows-importer.php:722
211
- msgid ""
212
- "In rare case, it is possible your website is having trouble connecting with "
213
- "ours. If you need help, please feel free to get in touch with us from our "
214
- "website.."
215
- msgstr ""
216
-
217
- #: classes/class-cartflows-importer.php:752
218
- #. translators: %s: Plugin string
219
- msgid ""
220
- "%1$s to see CartFlows templates. If you prefer another page builder tool, "
221
- "you can <a href=\"%2$s\" target=\"blank\">select it here</a>."
222
- msgstr ""
223
-
224
- #: classes/class-cartflows-importer.php:767
225
- msgid "All"
226
- msgstr ""
227
-
228
- #: classes/class-cartflows-importer.php:770
229
- msgid "Select Step Type"
230
- msgstr ""
231
-
232
- #: classes/class-cartflows-importer.php:847
233
- msgid "Import from Cloud"
234
- msgstr ""
235
-
236
- #: classes/class-cartflows-importer.php:1149
237
- #: modules/flow/classes/class-cartflows-flow-meta.php:224
238
- msgid "Landing Page"
239
- msgstr ""
240
-
241
- #: classes/class-cartflows-importer.php:1150
242
- #: modules/flow/classes/class-cartflows-flow-meta.php:225
243
- msgid "Checkout Page"
244
- msgstr ""
245
-
246
- #: classes/class-cartflows-importer.php:1151
247
- #: modules/flow/classes/class-cartflows-flow-meta.php:226
248
- msgid "Thank You Page"
249
- msgstr ""
250
-
251
- #: classes/class-cartflows-importer.php:1259
252
- #. translators: %s: template ID
253
- msgid "Invalid template id %1$s or post id %2$s."
254
- msgstr ""
255
-
256
- #: classes/class-cartflows-importer.php:1317
257
- #. translators: %s: flow ID
258
- msgid "Invalid flow id %1$s OR step type %2$s."
259
- msgstr ""
260
-
261
- #: classes/class-cartflows-importer.php:1438
262
- msgid ""
263
- "Elementor is not activated. Please activate plugin Elementor Page Builder "
264
- "to import the step."
265
- msgstr ""
266
-
267
- #: classes/class-cartflows-importer.php:1556
268
- msgid "Plugin Successfully Activated"
269
- msgstr ""
270
-
271
- #: classes/class-cartflows-loader.php:368
272
- #. translators: %s: html tags
273
- msgid ""
274
- "The %1$sCartFlows%2$s plugin requires %1$sWooCommerce%2$s plugin installed "
275
- "& activated."
276
- msgstr ""
277
-
278
- #: classes/class-cartflows-loader.php:378
279
- msgid "Activate WooCommerce"
280
- msgstr ""
281
-
282
- #: classes/class-cartflows-loader.php:386
283
- msgid "Install WooCommerce"
284
- msgstr ""
285
-
286
- #: classes/class-cartflows-meta-fields.php:86
287
- msgid "Thin 100"
288
- msgstr ""
289
-
290
- #: classes/class-cartflows-meta-fields.php:87
291
- msgid "Extra-Light 200"
292
- msgstr ""
293
-
294
- #: classes/class-cartflows-meta-fields.php:88
295
- msgid "Light 300"
296
- msgstr ""
297
-
298
- #: classes/class-cartflows-meta-fields.php:89
299
- msgid "Normal 400"
300
- msgstr ""
301
-
302
- #: classes/class-cartflows-meta-fields.php:90
303
- msgid "Medium 500"
304
- msgstr ""
305
-
306
- #: classes/class-cartflows-meta-fields.php:91
307
- msgid "Semi-Bold 600"
308
- msgstr ""
309
-
310
- #: classes/class-cartflows-meta-fields.php:92
311
- msgid "Bold 700"
312
- msgstr ""
313
-
314
- #: classes/class-cartflows-meta-fields.php:93
315
- msgid "Extra-Bold 800"
316
- msgstr ""
317
-
318
- #: classes/class-cartflows-meta-fields.php:94
319
- msgid "Ultra-Bold 900"
320
- msgstr ""
321
-
322
- #: classes/class-cartflows-meta-fields.php:217
323
- #: classes/class-cartflows-meta-fields.php:325
324
- #: classes/class-cartflows-meta-fields.php:1417
325
- msgid "Remove"
326
- msgstr ""
327
-
328
- #: classes/class-cartflows-meta-fields.php:446
329
- msgid "Field Width"
330
- msgstr ""
331
-
332
- #: classes/class-cartflows-meta-fields.php:450
333
- msgid "33%"
334
- msgstr ""
335
-
336
- #: classes/class-cartflows-meta-fields.php:451
337
- msgid "50%"
338
- msgstr ""
339
-
340
- #: classes/class-cartflows-meta-fields.php:452
341
- msgid "100%"
342
- msgstr ""
343
-
344
- #: classes/class-cartflows-meta-fields.php:463
345
- msgid "Field Label"
346
- msgstr ""
347
-
348
- #: classes/class-cartflows-meta-fields.php:477
349
- msgid "Options"
350
- msgstr ""
351
-
352
- #: classes/class-cartflows-meta-fields.php:492
353
- #: classes/class-cartflows-meta-fields.php:505
354
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:459
355
- msgid "Default"
356
- msgstr ""
357
-
358
- #: classes/class-cartflows-meta-fields.php:496
359
- msgid "Checked"
360
- msgstr ""
361
-
362
- #: classes/class-cartflows-meta-fields.php:497
363
- msgid "Un-Checked"
364
- msgstr ""
365
-
366
- #: classes/class-cartflows-meta-fields.php:518
367
- msgid "Placeholder"
368
- msgstr ""
369
-
370
- #: classes/class-cartflows-meta-fields.php:530
371
- msgid "Required"
372
- msgstr ""
373
-
374
- #: classes/class-cartflows-meta-fields.php:542
375
- msgid "Enable this field"
376
- msgstr ""
377
-
378
- #: classes/class-cartflows-meta-fields.php:562
379
- msgid "Label"
380
- msgstr ""
381
-
382
- #: classes/class-cartflows-meta-fields.php:990
383
- #: classes/class-cartflows-meta-fields.php:1409
384
- msgid "Search for a product&hellip;"
385
- msgstr ""
386
-
387
- #: classes/class-cartflows-meta-fields.php:1031
388
- msgid "Search for a coupon&hellip;"
389
- msgstr ""
390
-
391
- #: classes/class-cartflows-meta.php:34
392
- msgid "Update"
393
- msgstr ""
394
-
395
- #: classes/class-cartflows-meta.php:42
396
- #: modules/flow/classes/class-cartflows-flow-meta.php:84
397
- msgid "Back to edit Flow"
398
- msgstr ""
399
-
400
- #: classes/class-cartflows-meta.php:63
401
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:191
402
- #: modules/landing/classes/class-cartflows-landing-meta.php:136
403
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:148
404
- msgid "Custom Script"
405
- msgstr ""
406
-
407
- #: classes/class-cartflows-meta.php:66
408
- msgid ""
409
- "Custom script lets you add your own custom script on front end of this flow "
410
- "page."
411
- msgstr ""
412
-
413
- #: classes/class-cartflows-wizard.php:45
414
- msgid "Thanks for installing and using CartFlows!"
415
- msgstr ""
416
-
417
- #: classes/class-cartflows-wizard.php:46
418
- msgid ""
419
- "It is easy to use the CartFlows. Please use the setup wizard to quick start "
420
- "setup."
421
- msgstr ""
422
-
423
- #: classes/class-cartflows-wizard.php:71
424
- #: includes/admin/cartflows-general-bck.php:24
425
- msgid "Welcome"
426
- msgstr ""
427
-
428
- #: classes/class-cartflows-wizard.php:76 classes/class-cartflows-wizard.php:259
429
- msgid "Page Builder"
430
- msgstr ""
431
-
432
- #: classes/class-cartflows-wizard.php:81
433
- msgid "Ready!"
434
- msgstr ""
435
-
436
- #: classes/class-cartflows-wizard.php:150
437
- msgid "CartFlows Setup"
438
- msgstr ""
439
-
440
- #: classes/class-cartflows-wizard.php:176
441
- msgid "Exit Setup Wizard"
442
- msgstr ""
443
-
444
- #: classes/class-cartflows-wizard.php:225
445
- msgid "Thank you for choosing CartFlows!"
446
- msgstr ""
447
-
448
- #: classes/class-cartflows-wizard.php:232
449
- msgid "Lets Go »"
450
- msgstr ""
451
-
452
- #: classes/class-cartflows-wizard.php:260
453
- msgid "Select a page builder which you want to use for creating your new flows."
454
- msgstr ""
455
-
456
- #: classes/class-cartflows-wizard.php:265
457
- msgid "Select Page Builder"
458
- msgstr ""
459
-
460
- #: classes/class-cartflows-wizard.php:266
461
- msgid "Add locations for where this Schema should appear."
462
- msgstr ""
463
-
464
- #: classes/class-cartflows-wizard.php:273
465
- #: includes/admin/cartflows-general.php:76
466
- msgid "Elementor"
467
- msgstr ""
468
-
469
- #: classes/class-cartflows-wizard.php:294
470
- msgid "The above plugin will be installed and activated for you!"
471
- msgstr ""
472
-
473
- #: classes/class-cartflows-wizard.php:297
474
- msgid "« Previous"
475
- msgstr ""
476
-
477
- #: classes/class-cartflows-wizard.php:300
478
- #: classes/class-cartflows-wizard.php:301
479
- msgid "Next »"
480
- msgstr ""
481
-
482
- #: classes/class-cartflows-wizard.php:393
483
- msgid "Congratulations!"
484
- msgstr ""
485
-
486
- #: classes/class-cartflows-wizard.php:400
487
- msgid ""
488
- "You've successfully completed the setup before you begin setting now you "
489
- "can use it."
490
- msgstr ""
491
-
492
- #: classes/class-cartflows-wizard.php:414
493
- msgid "Create a flow"
494
- msgstr ""
495
-
496
- #: includes/admin/cartflows-admin.php:19
497
- #: includes/admin/cartflows-general.php:33
498
- msgid "Modernizing WordPress eCommerce!"
499
- msgstr ""
500
-
501
- #: includes/admin/cartflows-admin.php:29
502
- msgid "Settings saved successfully."
503
- msgstr ""
504
-
505
- #: includes/admin/cartflows-general-bck.php:10
506
- msgid "Selec"
507
- msgstr ""
508
-
509
- #: includes/admin/cartflows-general-bck.php:22
510
- msgid "General"
511
- msgstr ""
512
-
513
- #: includes/admin/cartflows-general.php:18
514
- #: includes/admin/cartflows-general.php:41
515
- msgid "General Settings"
516
- msgstr ""
517
-
518
- #: includes/admin/cartflows-general.php:25
519
- msgid "Getting Started"
520
- msgstr ""
521
-
522
- #: includes/admin/cartflows-general.php:54
523
- msgid "Disallow search engines from indexing flows"
524
- msgstr ""
525
-
526
- #: includes/admin/cartflows-general.php:63
527
- #: modules/flow/view/meta-flow-steps.php:87
528
- msgid "Global Checkout"
529
- msgstr ""
530
-
531
- #: includes/admin/cartflows-general.php:72
532
- msgid "Show Templates designed with"
533
- msgstr ""
534
-
535
- #: includes/admin/cartflows-general.php:73
536
- msgid ""
537
- "CartFlows offers flow templates that can be imported in one click. These "
538
- "templates are available in few different page builders. Please choose your "
539
- "preferred page builder from the list so you will only see templates that "
540
- "are made using that page builder.."
541
- msgstr ""
542
-
543
- #: includes/admin/cartflows-general.php:77
544
- msgid "Beaver Builder"
545
- msgstr ""
546
-
547
- #: includes/admin/cartflows-general.php:78
548
- msgid "Divi"
549
- msgstr ""
550
-
551
- #: includes/admin/cartflows-general.php:79
552
- msgid "Other"
553
- msgstr ""
554
-
555
- #: includes/admin/cartflows-general.php:88
556
- msgid "Save Changes"
557
- msgstr ""
558
-
559
- #: includes/admin/cartflows-general.php:100
560
- msgid "Knowledge Base"
561
- msgstr ""
562
-
563
- #: includes/admin/cartflows-general.php:104
564
- msgid "Not sure how something works? Take a peek at the knowledge base and learn."
565
- msgstr ""
566
-
567
- #: includes/admin/cartflows-general.php:107
568
- msgid "Visit Knowledge Base »"
569
- msgstr ""
570
-
571
- #: includes/admin/cartflows-general.php:115
572
- msgid "Community"
573
- msgstr ""
574
-
575
- #: includes/admin/cartflows-general.php:119
576
- msgid ""
577
- "Join the community of super helpful CartFlows users. Say hello, ask "
578
- "questions, give feedback and help each other!"
579
- msgstr ""
580
-
581
- #: includes/admin/cartflows-general.php:122
582
- msgid "Join Our Facebook Group »"
583
- msgstr ""
584
-
585
- #: includes/admin/cartflows-general.php:130
586
- msgid "Five Star Support"
587
- msgstr ""
588
-
589
- #: includes/admin/cartflows-general.php:134
590
- msgid "Got a question? Get in touch with CartFlows developers. We're happy to help!"
591
- msgstr ""
592
-
593
- #: includes/admin/cartflows-general.php:137
594
- msgid "Submit a Ticket »"
595
- msgstr ""
596
-
597
- #: includes/admin/cartflows-general.php:147
598
- msgid "Load Minified CSS"
599
- msgstr ""
600
-
601
- #: includes/admin/cartflows-general.php:152
602
- msgid ""
603
- "Load the Minified CSS from here. Just Enable it by checking the below given "
604
- "checkbox."
605
- msgstr ""
606
-
607
- #: includes/admin/cartflows-general.php:159
608
- msgid "Load minified CSS & JS Files"
609
- msgstr ""
610
-
611
- #: includes/admin/cartflows-general.php:164
612
- msgid "Save"
613
- msgstr ""
614
-
615
- #: includes/exporter.php:12
616
- msgid "Export Flows to a JSON file"
617
- msgstr ""
618
-
619
- #: includes/exporter.php:13
620
- msgid ""
621
- "This tool allows you to generate and download a JSON file containing a list "
622
- "of all flows."
623
- msgstr ""
624
-
625
- #: includes/importer.php:12
626
- msgid "Import Flows to a JSON file"
627
- msgstr ""
628
-
629
- #: includes/importer.php:13
630
- msgid "This tool allows you to import the flows from the JSON file."
631
- msgstr ""
632
-
633
- #: includes/importer.php:21
634
- msgid "Import"
635
- msgstr ""
636
-
637
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:161
638
- #: modules/thankyou/classes/class-cartflows-thankyou-markup.php:62
639
- msgid ""
640
- "WooCommerce functions not exists. If you are in iframe, please reload the "
641
- "iframe"
642
- msgstr ""
643
-
644
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:177
645
- msgid "Checkout ID not found"
646
- msgstr ""
647
-
648
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:343
649
- msgid "Variations Not set"
650
- msgstr ""
651
-
652
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:352
653
- msgid "This product can't be purcahsed"
654
- msgstr ""
655
-
656
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:948
657
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:979
658
- msgid "Coupon Code"
659
- msgstr ""
660
-
661
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:953
662
- #: modules/checkout/classes/class-cartflows-checkout-markup.php:988
663
- msgid "Apply"
664
- msgstr ""
665
-
666
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:68
667
- msgid "Checkout Layout"
668
- msgstr ""
669
-
670
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:155
671
- #: modules/landing/classes/class-cartflows-landing-meta.php:130
672
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:130
673
- msgid "Shortcodes"
674
- msgstr ""
675
-
676
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:161
677
- msgid "Select Product"
678
- msgstr ""
679
-
680
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:167
681
- msgid "Order Bump"
682
- msgstr ""
683
-
684
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:173
685
- msgid "Checkout Design"
686
- msgstr ""
687
-
688
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:179
689
- msgid "Checkout Fields"
690
- msgstr ""
691
-
692
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:185
693
- msgid "Logo (Optional)"
694
- msgstr ""
695
-
696
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:250
697
- msgid "Add this shortcode to your checkout page"
698
- msgstr ""
699
-
700
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:302
701
- #. translators: %s: link
702
- msgid "Upgrade to %1$sCartFlows Pro%2$s for Order Bump feature"
703
- msgstr ""
704
-
705
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:330
706
- #. translators: %s: link
707
- msgid "Upgrade to %1$sCartFlows Pro%2$s for Custom Fields feature"
708
- msgstr ""
709
-
710
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:358
711
- msgid "One Column (Available in CartFlows Pro) "
712
- msgstr ""
713
-
714
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:359
715
- msgid "Two Step (Available in CartFlows Pro) "
716
- msgstr ""
717
-
718
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:365
719
- msgid "Checkout Skin"
720
- msgstr ""
721
-
722
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:369
723
- msgid "One Column"
724
- msgstr ""
725
-
726
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:370
727
- msgid "Two Column"
728
- msgstr ""
729
-
730
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:371
731
- msgid "Two Step"
732
- msgstr ""
733
-
734
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:380
735
- msgid "Primary Color"
736
- msgstr ""
737
-
738
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:389
739
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:424
740
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:470
741
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:562
742
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:203
743
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:226
744
- msgid "Font Family"
745
- msgstr ""
746
-
747
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:397
748
- msgid "Advance Options"
749
- msgstr ""
750
-
751
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:409
752
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:211
753
- msgid "Heading"
754
- msgstr ""
755
-
756
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:415
757
- msgid "Heading Color"
758
- msgstr ""
759
-
760
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:433
761
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:479
762
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:571
763
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:235
764
- msgid "Font Weight"
765
- msgstr ""
766
-
767
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:441
768
- msgid "Input Fields"
769
- msgstr ""
770
-
771
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:449
772
- msgid "Floating Labels (Available in CartFlows Pro)"
773
- msgstr ""
774
-
775
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:455
776
- msgid "Style"
777
- msgstr ""
778
-
779
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:460
780
- msgid "Floating Labels"
781
- msgstr ""
782
-
783
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:487
784
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:579
785
- msgid "Size"
786
- msgstr ""
787
-
788
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:491
789
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:583
790
- msgid "Extra Small"
791
- msgstr ""
792
-
793
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:492
794
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:584
795
- msgid "Small"
796
- msgstr ""
797
-
798
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:493
799
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:585
800
- msgid "Medium"
801
- msgstr ""
802
-
803
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:494
804
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:586
805
- msgid "Large"
806
- msgstr ""
807
-
808
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:495
809
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:587
810
- msgid "Extra Large"
811
- msgstr ""
812
-
813
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:496
814
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:588
815
- msgid "Custom"
816
- msgstr ""
817
-
818
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:503
819
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:595
820
- msgid "Top Bottom Spacing"
821
- msgstr ""
822
-
823
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:511
824
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:603
825
- msgid "Left Right Spacing"
826
- msgstr ""
827
-
828
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:519
829
- msgid "Text / Placeholder Color"
830
- msgstr ""
831
-
832
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:527
833
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:627
834
- msgid "Background Color"
835
- msgstr ""
836
-
837
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:535
838
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:643
839
- msgid "Border Color"
840
- msgstr ""
841
-
842
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:542
843
- msgid "Label Color"
844
- msgstr ""
845
-
846
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:555
847
- msgid "Buttons"
848
- msgstr ""
849
-
850
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:611
851
- msgid "Text Color"
852
- msgstr ""
853
-
854
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:619
855
- msgid "Text Hover Color"
856
- msgstr ""
857
-
858
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:635
859
- msgid "Background Hover Color"
860
- msgstr ""
861
-
862
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:651
863
- msgid "Border Hover Color"
864
- msgstr ""
865
-
866
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:664
867
- msgid "Sections"
868
- msgstr ""
869
-
870
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:670
871
- msgid "Highlight Area Background Color"
872
- msgstr ""
873
-
874
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:709
875
- msgid "Header Logo"
876
- msgstr ""
877
-
878
- #: modules/checkout/classes/class-cartflows-checkout-meta.php:717
879
- msgid "Logo Width (In px)"
880
- msgstr ""
881
-
882
- #: modules/checkout/templates/embed/checkout-template-simple.php:25
883
- #: modules/checkout/templates/wcf-template.php:36
884
- msgid "Your cart is currently empty."
885
- msgstr ""
886
-
887
- #: modules/checkout/templates/wcf-template.php:46
888
- msgid "Copyright &copy;"
889
- msgstr ""
890
-
891
- #: modules/checkout/templates/wcf-template.php:50
892
- msgid "All Rights Reserved"
893
- msgstr ""
894
-
895
- #: modules/flow/classes/class-cartflows-flow-meta.php:199
896
- #. translators: %s flow id
897
- msgid "Steps not created for flow - %s"
898
- msgstr ""
899
-
900
- #: modules/flow/classes/class-cartflows-flow-meta.php:213
901
- #. translators: %s flow id
902
- msgid "Steps already exists. Flow - %s"
903
- msgstr ""
904
-
905
- #: modules/flow/classes/class-cartflows-flow-meta.php:262
906
- #. translators: %s flow id
907
- msgid "Steps created for flow - %s"
908
- msgstr ""
909
-
910
- #: modules/flow/classes/class-cartflows-flow-meta.php:333
911
- #. translators: %s flow id
912
- msgid "Step not deleted for flow - %s"
913
- msgstr ""
914
-
915
- #: modules/flow/classes/class-cartflows-flow-meta.php:364
916
- #. translators: %s flow id
917
- msgid "Step deleted for flow - %s"
918
- msgstr ""
919
-
920
- #: modules/flow/classes/class-cartflows-flow-meta.php:387
921
- #. translators: %s flow id
922
- msgid "Steps not sorted for flow - %s"
923
- msgstr ""
924
-
925
- #: modules/flow/classes/class-cartflows-flow-meta.php:410
926
- #. translators: %s flow id
927
- msgid "Steps sorted for flow - %s"
928
- msgstr ""
929
-
930
- #: modules/flow/classes/class-cartflows-flow-meta.php:521
931
- msgid "Flow Settings"
932
- msgstr ""
933
-
934
- #: modules/flow/classes/class-cartflows-flow-meta.php:606
935
- msgid "Enable Test Mode"
936
- msgstr ""
937
-
938
- #: modules/flow/classes/class-cartflows-flow-meta.php:613
939
- msgid ""
940
- "Test mode adds random products in your flow, so you can preview it easily "
941
- "while testing."
942
- msgstr ""
943
-
944
- #: modules/flow/classes/class-cartflows-flow-post-type.php:57
945
- msgid "Search Flows"
946
- msgstr ""
947
-
948
- #: modules/flow/classes/class-cartflows-flow-post-type.php:58
949
- msgid "All Flows"
950
- msgstr ""
951
-
952
- #: modules/flow/classes/class-cartflows-flow-post-type.php:59
953
- msgid "Edit Flow"
954
- msgstr ""
955
-
956
- #: modules/flow/classes/class-cartflows-flow-post-type.php:60
957
- msgid "View Flow"
958
- msgstr ""
959
-
960
- #: modules/flow/classes/class-cartflows-flow-post-type.php:61
961
- #: modules/flow/classes/class-cartflows-flow-post-type.php:63
962
- #: modules/flow/classes/class-cartflows-step-post-type.php:150
963
- #: modules/flow/classes/class-cartflows-step-post-type.php:152
964
- msgid "Add New"
965
- msgstr ""
966
-
967
- #: modules/flow/classes/class-cartflows-flow-post-type.php:62
968
- msgid "Update Flow"
969
- msgstr ""
970
-
971
- #: modules/flow/classes/class-cartflows-flow-post-type.php:64
972
- msgid "New Flow Name"
973
- msgstr ""
974
-
975
- #: modules/flow/classes/class-cartflows-flow-post-type.php:123
976
- msgid "View"
977
- msgstr ""
978
-
979
- #: modules/flow/classes/class-cartflows-flow-post-type.php:230
980
- msgid "Flows"
981
- msgstr ""
982
-
983
- #: modules/flow/classes/class-cartflows-flow-post-type.php:252
984
- #: modules/flow/classes/class-cartflows-flow-post-type.php:258
985
- #: modules/flow/classes/class-cartflows-step-post-type.php:413
986
- #: modules/flow/classes/class-cartflows-step-post-type.php:419
987
- #. translators: %s: singular custom post type name
988
- msgid "%s updated."
989
- msgstr ""
990
-
991
- #: modules/flow/classes/class-cartflows-flow-post-type.php:254
992
- #: modules/flow/classes/class-cartflows-step-post-type.php:415
993
- #. translators: %s: singular custom post type name
994
- msgid "Custom %s updated."
995
- msgstr ""
996
-
997
- #: modules/flow/classes/class-cartflows-flow-post-type.php:256
998
- #: modules/flow/classes/class-cartflows-step-post-type.php:417
999
- #. translators: %s: singular custom post type name
1000
- msgid "Custom %s deleted."
1001
- msgstr ""
1002
-
1003
- #: modules/flow/classes/class-cartflows-flow-post-type.php:260
1004
- #: modules/flow/classes/class-cartflows-step-post-type.php:421
1005
- #. translators: %1$s: singular custom post type name ,%2$s: date and time of
1006
- #. the revision
1007
- msgid "%1$s restored to revision from %2$s"
1008
- msgstr ""
1009
-
1010
- #: modules/flow/classes/class-cartflows-flow-post-type.php:262
1011
- #: modules/flow/classes/class-cartflows-step-post-type.php:423
1012
- #. translators: %s: singular custom post type name
1013
- msgid "%s published."
1014
- msgstr ""
1015
-
1016
- #: modules/flow/classes/class-cartflows-flow-post-type.php:264
1017
- #: modules/flow/classes/class-cartflows-step-post-type.php:425
1018
- #. translators: %s: singular custom post type name
1019
- msgid "%s saved."
1020
- msgstr ""
1021
-
1022
- #: modules/flow/classes/class-cartflows-flow-post-type.php:266
1023
- #: modules/flow/classes/class-cartflows-step-post-type.php:427
1024
- #. translators: %s: singular custom post type name
1025
- msgid "%s submitted."
1026
- msgstr ""
1027
-
1028
- #: modules/flow/classes/class-cartflows-flow-post-type.php:268
1029
- #: modules/flow/classes/class-cartflows-step-post-type.php:429
1030
- #. translators: %s: singular custom post type name
1031
- msgid "%s scheduled for."
1032
- msgstr ""
1033
-
1034
- #: modules/flow/classes/class-cartflows-flow-post-type.php:270
1035
- #: modules/flow/classes/class-cartflows-step-post-type.php:431
1036
- #. translators: %s: singular custom post type name
1037
- msgid "%s draft updated."
1038
- msgstr ""
1039
-
1040
- #: modules/flow/classes/class-cartflows-flow-shortcodes.php:148
1041
- #: modules/widgets/class-cartflows-next-step.php:79
1042
- msgid "Next Step"
1043
- msgstr ""
1044
-
1045
- #: modules/flow/classes/class-cartflows-step-post-type.php:146
1046
- msgid "Search Steps"
1047
- msgstr ""
1048
-
1049
- #: modules/flow/classes/class-cartflows-step-post-type.php:147
1050
- msgid "All Steps"
1051
- msgstr ""
1052
-
1053
- #: modules/flow/classes/class-cartflows-step-post-type.php:148
1054
- #: modules/flow/view/meta-flow-steps.php:99
1055
- msgid "Edit Step"
1056
- msgstr ""
1057
-
1058
- #: modules/flow/classes/class-cartflows-step-post-type.php:149
1059
- #: modules/flow/view/meta-flow-steps.php:95
1060
- msgid "View Step"
1061
- msgstr ""
1062
-
1063
- #: modules/flow/classes/class-cartflows-step-post-type.php:151
1064
- msgid "Update Step"
1065
- msgstr ""
1066
-
1067
- #: modules/flow/classes/class-cartflows-step-post-type.php:153
1068
- msgid "New Step Name"
1069
- msgstr ""
1070
-
1071
- #: modules/flow/classes/class-cartflows-step-post-type.php:176
1072
- msgid "Step Type"
1073
- msgstr ""
1074
-
1075
- #: modules/flow/classes/class-cartflows-step-post-type.php:185
1076
- msgid "Step Flow"
1077
- msgstr ""
1078
-
1079
- #: modules/flow/classes/class-cartflows-step-post-type.php:202
1080
- #: modules/flow/view/meta-flow-steps.php:11
1081
- msgid "Landing"
1082
- msgstr ""
1083
-
1084
- #: modules/flow/classes/class-cartflows-step-post-type.php:208
1085
- #: modules/flow/view/meta-flow-steps.php:12
1086
- msgid "Checkout"
1087
- msgstr ""
1088
-
1089
- #: modules/flow/classes/class-cartflows-step-post-type.php:214
1090
- #: modules/flow/view/meta-flow-steps.php:13
1091
- msgid "Thank You"
1092
- msgstr ""
1093
-
1094
- #: modules/flow/classes/class-cartflows-step-post-type.php:220
1095
- #: modules/flow/view/meta-flow-steps.php:14
1096
- msgid "Upsell"
1097
- msgstr ""
1098
-
1099
- #: modules/flow/classes/class-cartflows-step-post-type.php:226
1100
- #: modules/flow/view/meta-flow-steps.php:15
1101
- msgid "Downsell"
1102
- msgstr ""
1103
-
1104
- #: modules/flow/view/meta-flow-steps.php:79
1105
- msgid "No Product Assigned"
1106
- msgstr ""
1107
-
1108
- #: modules/flow/view/meta-flow-steps.php:83
1109
- msgid "Global Checkout - Remove selected checkout product"
1110
- msgstr ""
1111
-
1112
- #: modules/flow/view/meta-flow-steps.php:103
1113
- msgid "Clone Step"
1114
- msgstr ""
1115
-
1116
- #: modules/flow/view/meta-flow-steps.php:107
1117
- msgid "Delete Step"
1118
- msgstr ""
1119
-
1120
- #: modules/flow/view/meta-flow-steps.php:122
1121
- msgid "Add New Step"
1122
- msgstr ""
1123
-
1124
- #: modules/flow/view/meta-flow-steps.php:138
1125
- msgid "Steps Library"
1126
- msgstr ""
1127
-
1128
- #: modules/flow/view/meta-flow-steps.php:188
1129
- msgid "Create Step"
1130
- msgstr ""
1131
-
1132
- #: modules/flow/view/meta-flow-steps.php:190
1133
- msgid "You need a Cartflows Pro version to import Upsell / Downsell"
1134
- msgstr ""
1135
-
1136
- #: modules/landing/classes/class-cartflows-landing-meta.php:66
1137
- msgid "Landing Page Settings"
1138
- msgstr ""
1139
-
1140
- #: modules/landing/classes/class-cartflows-landing-meta.php:169
1141
- msgid "Next Step Link"
1142
- msgstr ""
1143
-
1144
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:65
1145
- msgid "Thank You Page Settings"
1146
- msgstr ""
1147
-
1148
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:136
1149
- msgid "Thank You Design"
1150
- msgstr ""
1151
-
1152
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:142
1153
- msgid "Thank You Fields"
1154
- msgstr ""
1155
-
1156
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:176
1157
- msgid "Order Details"
1158
- msgstr ""
1159
-
1160
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:188
1161
- msgid "Text"
1162
- msgstr ""
1163
-
1164
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:194
1165
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:217
1166
- msgid "Color"
1167
- msgstr ""
1168
-
1169
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:243
1170
- msgid "Advanced Options"
1171
- msgstr ""
1172
-
1173
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:253
1174
- msgid "Container Width (In px)"
1175
- msgstr ""
1176
-
1177
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:261
1178
- msgid "Section Background Color"
1179
- msgstr ""
1180
-
1181
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:275
1182
- msgid "Enable Order Overview "
1183
- msgstr ""
1184
-
1185
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:283
1186
- msgid "Enable Order Details "
1187
- msgstr ""
1188
-
1189
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:291
1190
- msgid "Enable Billing Details "
1191
- msgstr ""
1192
-
1193
- #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:299
1194
- msgid "Enable Shipping Details "
1195
- msgstr ""
1196
-
1197
- #: modules/widgets/class-cartflows-next-step.php:25
1198
- msgid "CartFlows Next Step"
1199
- msgstr ""
1200
-
1201
- #: modules/widgets/class-cartflows-next-step.php:27
1202
- msgid "Next Step Widgets"
1203
- msgstr ""
1204
-
1205
- #: modules/widgets/class-cartflows-next-step.php:107
1206
- msgid "New title"
1207
- msgstr ""
1208
-
1209
- #: modules/widgets/class-cartflows-next-step.php:124
1210
- msgid "Title:"
1211
- msgstr ""
1212
-
1213
- #: modules/widgets/class-cartflows-next-step.php:128
1214
- msgid "Flow ID:"
1215
- msgstr ""
1216
-
1217
- #: modules/widgets/class-cartflows-next-step.php:132
1218
- msgid "Step ID:"
1219
- msgstr ""
1220
-
1221
- #: woocommerce/template/cart/cart-shipping.php:51
1222
- #. Translators: $s shipping destination.
1223
- msgid "Estimate for %s."
1224
- msgstr ""
1225
-
1226
- #: woocommerce/template/cart/cart-shipping.php:52
1227
- msgid "Change address"
1228
- msgstr ""
1229
-
1230
- #: woocommerce/template/cart/cart-shipping.php:54
1231
- msgid "This is only an estimate. Prices will be updated during checkout."
1232
- msgstr ""
1233
-
1234
- #: woocommerce/template/cart/cart-shipping.php:61
1235
- msgid "Enter your address to view shipping options."
1236
- msgstr ""
1237
-
1238
- #: woocommerce/template/cart/cart-shipping.php:63
1239
- msgid ""
1240
- "There are no shipping methods available. Please ensure that your address "
1241
- "has been entered correctly, or contact us if you need any help."
1242
- msgstr ""
1243
-
1244
- #: woocommerce/template/cart/cart-shipping.php:66
1245
- #. Translators: $s shipping destination.
1246
- msgid "No shipping options were found for %s."
1247
- msgstr ""
1248
-
1249
- #: woocommerce/template/cart/cart-shipping.php:67
1250
- msgid "Enter a different address"
1251
- msgstr ""
1252
-
1253
- #: woocommerce/template/checkout/form-billing.php:27
1254
- msgid "Billing &amp; Shipping"
1255
- msgstr ""
1256
-
1257
- #: woocommerce/template/checkout/form-billing.php:31
1258
- msgid "Billing details"
1259
- msgstr ""
1260
-
1261
- #: woocommerce/template/checkout/form-billing.php:59
1262
- msgid "Create an account?"
1263
- msgstr ""
1264
-
1265
- #: woocommerce/template/checkout/form-checkout.php:26
1266
- msgid "You must be logged in to checkout."
1267
- msgstr ""
1268
-
1269
- #: woocommerce/template/checkout/form-checkout.php:52
1270
- msgid "Your order"
1271
- msgstr ""
1272
-
1273
- #: woocommerce/template/checkout/form-coupon.php:26
1274
- msgid "Have a coupon?"
1275
- msgstr ""
1276
-
1277
- #: woocommerce/template/checkout/form-coupon.php:26
1278
- msgid "Click here to enter your code"
1279
- msgstr ""
1280
-
1281
- #: woocommerce/template/checkout/form-coupon.php:31
1282
- msgid "If you have a coupon code, please apply it below."
1283
- msgstr ""
1284
-
1285
- #: woocommerce/template/checkout/form-coupon.php:34
1286
- msgid "Coupon code"
1287
- msgstr ""
1288
-
1289
- #: woocommerce/template/checkout/form-coupon.php:38
1290
- msgid "Apply coupon"
1291
- msgstr ""
1292
-
1293
- #: woocommerce/template/checkout/form-login.php:26
1294
- msgid "Returning customer?"
1295
- msgstr ""
1296
-
1297
- #: woocommerce/template/checkout/form-login.php:26
1298
- msgid "Click here to login"
1299
- msgstr ""
1300
-
1301
- #: woocommerce/template/checkout/form-login.php:32
1302
- msgid ""
1303
- "If you have shopped with us before, please enter your details below. If you "
1304
- "are a new customer, please proceed to the Billing &amp; Shipping section."
1305
- msgstr ""
1306
-
1307
- #: woocommerce/template/checkout/payment.php:33
1308
- msgid ""
1309
- "Sorry, it seems that there are no available payment methods for your state. "
1310
- "Please contact us if you require assistance or wish to make alternate "
1311
- "arrangements."
1312
- msgstr ""
1313
-
1314
- #: woocommerce/template/checkout/payment.php:33
1315
- msgid "Please fill in your details above to see available payment methods."
1316
- msgstr ""
1317
-
1318
- #: woocommerce/template/checkout/payment.php:42
1319
- #. translators: $1 and $2 opening and closing emphasis tags respectively
1320
- msgid ""
1321
- "Since your browser does not support JavaScript, or it is disabled, please "
1322
- "ensure you click the %1$sUpdate Totals%2$s button before placing your "
1323
- "order. You may be charged more than the amount stated above if you fail to "
1324
- "do so."
1325
- msgstr ""
1326
-
1327
- #: woocommerce/template/checkout/payment.php:44
1328
- msgid "Update totals"
1329
- msgstr ""
1330
-
1331
- #: woocommerce/template/checkout/review-order.php:26
1332
- msgid "Product"
1333
- msgstr ""
1334
-
1335
- #: woocommerce/template/checkout/review-order.php:27
1336
- #: woocommerce/template/checkout/review-order.php:106
1337
- msgid "Total"
1338
- msgstr ""
1339
-
1340
- #: woocommerce/template/checkout/review-order.php:59
1341
- msgid "Subtotal"
1342
- msgstr ""
1343
-
1344
- #: woocommerce/template/checkout/thankyou.php:30
1345
- msgid ""
1346
- "Unfortunately your order cannot be processed as the originating "
1347
- "bank/merchant has declined your transaction. Please attempt your purchase "
1348
- "again."
1349
- msgstr ""
1350
-
1351
- #: woocommerce/template/checkout/thankyou.php:33
1352
- msgid "Pay"
1353
- msgstr ""
1354
-
1355
- #: woocommerce/template/checkout/thankyou.php:35
1356
- msgid "My account"
1357
- msgstr ""
1358
-
1359
- #: woocommerce/template/checkout/thankyou.php:41
1360
- #: woocommerce/template/checkout/thankyou.php:83
1361
- msgid "Thank you. Your order has been received."
1362
- msgstr ""
1363
-
1364
- #: woocommerce/template/checkout/thankyou.php:46
1365
- msgid "Order number:"
1366
- msgstr ""
1367
-
1368
- #: woocommerce/template/checkout/thankyou.php:51
1369
- msgid "Date:"
1370
- msgstr ""
1371
-
1372
- #: woocommerce/template/checkout/thankyou.php:57
1373
- msgid "Email:"
1374
- msgstr ""
1375
-
1376
- #: woocommerce/template/checkout/thankyou.php:63
1377
- msgid "Total:"
1378
- msgstr ""
1379
-
1380
- #: woocommerce/template/checkout/thankyou.php:69
1381
- msgid "Payment method:"
1382
- msgstr ""
1383
-
1384
- #: woocommerce/template/global/form-login.php:34
1385
- msgid "Username or email"
1386
- msgstr ""
1387
-
1388
- #: woocommerce/template/global/form-login.php:38
1389
- msgid "Password"
1390
- msgstr ""
1391
-
1392
- #: woocommerce/template/global/form-login.php:48
1393
- msgid "Login"
1394
- msgstr ""
1395
-
1396
- #: woocommerce/template/global/form-login.php:53
1397
- msgid "Remember me"
1398
- msgstr ""
1399
-
1400
- #: woocommerce/template/global/form-login.php:57
1401
- msgid "Lost your password?"
1402
- msgstr ""
1403
-
1404
- #. Plugin Name of the plugin/theme
1405
- msgid "CartFlows"
1406
- msgstr ""
1407
-
1408
- #. Author URI of the plugin/theme
1409
- msgid "https://cartflows.com/"
1410
- msgstr ""
1411
-
1412
- #. Description of the plugin/theme
1413
- msgid "Create beautiful checkout pages & sales flows for WooCommerce."
1414
- msgstr ""
1415
-
1416
- #. Author of the plugin/theme
1417
- msgid "CartFlows Inc"
1418
- msgstr ""
1419
-
1420
- #: modules/flow/classes/class-cartflows-flow-post-type.php:55
1421
- msgctxt "flow general name"
1422
- msgid "Flows"
1423
- msgstr ""
1424
-
1425
- #: modules/flow/classes/class-cartflows-flow-post-type.php:56
1426
- msgctxt "flow singular name"
1427
- msgid "Flow"
1428
- msgstr ""
1429
-
1430
- #: modules/flow/classes/class-cartflows-step-post-type.php:144
1431
- msgctxt "flow step general name"
1432
- msgid "Steps"
1433
- msgstr ""
1434
-
1435
- #: modules/flow/classes/class-cartflows-step-post-type.php:145
1436
- msgctxt "flow step singular name"
1437
- msgid "Step"
1438
- msgstr ""
1439
-
1440
- #: modules/flow/classes/class-cartflows-step-post-type.php:264
1441
- msgctxt "cartflows"
1442
- msgid "Template for Page Builders"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1443
  msgstr ""
1
+ # Copyright (C) 2019 CartFlows Inc
2
+ # This file is distributed under the same license as the CartFlows package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: CartFlows 1.1.20\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cartflows\n"
7
+ "POT-Creation-Date: 2019-06-12 10:11:34+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: en\n"
15
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
+ "X-Poedit-Country: United States\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: "
19
+ "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
20
+ "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
21
+ "X-Poedit-Basepath: ../\n"
22
+ "X-Poedit-SearchPath-0: .\n"
23
+ "X-Poedit-Bookmarks: \n"
24
+ "X-Textdomain-Support: yes\n"
25
+ "X-Generator: grunt-wp-i18n 1.0.3\n"
26
+
27
+ #: classes/batch-process/class-cartflows-importer-elementor.php:44
28
+ msgid "Invalid content."
29
+ msgstr ""
30
+
31
+ #: classes/batch-process/class-cartflows-importer-elementor.php:52
32
+ msgid "Invalid content. Expected an array."
33
+ msgstr ""
34
+
35
+ #: classes/batch-process/helpers/class-wp-background-process.php:435
36
+ msgid "Every %d Minutes"
37
+ msgstr ""
38
+
39
+ #: classes/class-cartflows-admin-fields.php:162
40
+ msgid "Select"
41
+ msgstr ""
42
+
43
+ #: classes/class-cartflows-admin-fields.php:165
44
+ msgid "No Checkout Steps"
45
+ msgstr ""
46
+
47
+ #: classes/class-cartflows-admin-fields.php:191
48
+ #. translators: %s: link
49
+ msgid ""
50
+ "Be sure not to add any product in above selected Global Checkout step. "
51
+ "Please read information about how to set up Global Checkout %1$shere%2$s."
52
+ msgstr ""
53
+
54
+ #: classes/class-cartflows-admin.php:137 classes/class-cartflows-admin.php:138
55
+ #: includes/admin/cartflows-general-bck.php:34
56
+ msgid "Settings"
57
+ msgstr ""
58
+
59
+ #: classes/class-cartflows-admin.php:336
60
+ msgid "Installing and activating.."
61
+ msgstr ""
62
+
63
+ #: classes/class-cartflows-admin.php:337
64
+ msgid "There was an error with the installation of plugin."
65
+ msgstr ""
66
+
67
+ #: classes/class-cartflows-admin.php:390
68
+ msgid "Flows Library"
69
+ msgstr ""
70
+
71
+ #: classes/class-cartflows-admin.php:397
72
+ #: modules/flow/view/meta-flow-steps.php:144
73
+ msgid "Ready Templates"
74
+ msgstr ""
75
+
76
+ #: classes/class-cartflows-admin.php:400
77
+ #: modules/flow/view/meta-flow-steps.php:147
78
+ msgid "Create Your Own"
79
+ msgstr ""
80
+
81
+ #: classes/class-cartflows-admin.php:411
82
+ #: modules/flow/view/meta-flow-steps.php:159
83
+ msgid "Search Sites"
84
+ msgstr ""
85
+
86
+ #: classes/class-cartflows-admin.php:412
87
+ #: modules/flow/view/meta-flow-steps.php:160
88
+ msgid "Search Flow..."
89
+ msgstr ""
90
+
91
+ #: classes/class-cartflows-admin.php:429
92
+ msgid "Design Your Flow"
93
+ msgstr ""
94
+
95
+ #: classes/class-cartflows-admin.php:430
96
+ #: classes/class-cartflows-importer.php:597
97
+ #: classes/class-cartflows-importer.php:696
98
+ #: modules/flow/view/meta-flow-steps.php:190
99
+ msgid "Learn How"
100
+ msgstr ""
101
+
102
+ #: classes/class-cartflows-api.php:368
103
+ msgid "Request successfully processed!"
104
+ msgstr ""
105
+
106
+ #: classes/class-cartflows-cloning.php:423
107
+ msgid "Clone this flow"
108
+ msgstr ""
109
+
110
+ #: classes/class-cartflows-cloning.php:423
111
+ msgid "Clone"
112
+ msgstr ""
113
+
114
+ #: classes/class-cartflows-flow-frontend.php:52
115
+ msgid ""
116
+ "Test mode is active — which displays random products for previewing. It can "
117
+ "be deactivated from the flow settings in the admin dashboard."
118
+ msgstr ""
119
+
120
+ #: classes/class-cartflows-importer.php:80
121
+ msgid "Export this flow"
122
+ msgstr ""
123
+
124
+ #: classes/class-cartflows-importer.php:80 includes/exporter.php:18
125
+ msgid "Export"
126
+ msgstr ""
127
+
128
+ #: classes/class-cartflows-importer.php:91
129
+ msgid "Flow Export"
130
+ msgstr ""
131
+
132
+ #: classes/class-cartflows-importer.php:92
133
+ msgid "Flow Import"
134
+ msgstr ""
135
+
136
+ #: classes/class-cartflows-importer.php:103
137
+ msgid "No post to export has been supplied!"
138
+ msgstr ""
139
+
140
+ #: classes/class-cartflows-importer.php:294
141
+ msgid "Please upload a valid .json file"
142
+ msgstr ""
143
+
144
+ #: classes/class-cartflows-importer.php:300
145
+ msgid "Please upload a file to import"
146
+ msgstr ""
147
+
148
+ #: classes/class-cartflows-importer.php:438
149
+ msgid "Successfully imported flows."
150
+ msgstr ""
151
+
152
+ #: classes/class-cartflows-importer.php:470
153
+ msgid "Loading Steps"
154
+ msgstr ""
155
+
156
+ #: classes/class-cartflows-importer.php:472
157
+ msgid "Getting steps from the cloud. Please wait for the moment."
158
+ msgstr ""
159
+
160
+ #: classes/class-cartflows-importer.php:483
161
+ msgid "Searching Template.."
162
+ msgstr ""
163
+
164
+ #: classes/class-cartflows-importer.php:485
165
+ msgid "Getting templates from the cloud. Please wait for the moment."
166
+ msgstr ""
167
+
168
+ #: classes/class-cartflows-importer.php:494
169
+ msgid "Importing.."
170
+ msgstr ""
171
+
172
+ #: classes/class-cartflows-importer.php:503
173
+ #: classes/class-cartflows-importer.php:543
174
+ msgid "Imported"
175
+ msgstr ""
176
+
177
+ #: classes/class-cartflows-importer.php:504
178
+ #: classes/class-cartflows-importer.php:544
179
+ msgid "Thanks for patience"
180
+ msgstr ""
181
+
182
+ #: classes/class-cartflows-importer.php:513
183
+ #: classes/class-cartflows-importer.php:525
184
+ msgid "Coming Soon!"
185
+ msgstr ""
186
+
187
+ #: classes/class-cartflows-importer.php:544
188
+ msgid "Redirecting to the Elementor edit window."
189
+ msgstr ""
190
+
191
+ #: classes/class-cartflows-importer.php:590
192
+ #: classes/class-cartflows-importer.php:706
193
+ msgid "Pro"
194
+ msgstr ""
195
+
196
+ #: classes/class-cartflows-importer.php:631
197
+ #: classes/class-cartflows-importer.php:738
198
+ msgid "Activate License"
199
+ msgstr ""
200
+
201
+ #: classes/class-cartflows-importer.php:633
202
+ #: classes/class-cartflows-importer.php:740
203
+ msgid "Get Pro"
204
+ msgstr ""
205
+
206
+ #: classes/class-cartflows-importer.php:658
207
+ msgid "Create"
208
+ msgstr ""
209
+
210
+ #: classes/class-cartflows-importer.php:757
211
+ msgid "Under Maintenance.."
212
+ msgstr ""
213
+
214
+ #: classes/class-cartflows-importer.php:758
215
+ msgid ""
216
+ "If you are seeing this message, most likely our servers are under routine "
217
+ "maintenance and we will be back shortly."
218
+ msgstr ""
219
+
220
+ #: classes/class-cartflows-importer.php:759
221
+ msgid ""
222
+ "In rare case, it is possible your website is having trouble connecting with "
223
+ "ours. If you need help, please feel free to get in touch with us from our "
224
+ "website.."
225
+ msgstr ""
226
+
227
+ #: classes/class-cartflows-importer.php:789
228
+ #. translators: %s: Plugin string
229
+ msgid ""
230
+ "%1$s to see CartFlows templates. If you prefer another page builder tool, "
231
+ "you can <a href=\"%2$s\" target=\"blank\">select it here</a>."
232
+ msgstr ""
233
+
234
+ #: classes/class-cartflows-importer.php:804
235
+ msgid "All"
236
+ msgstr ""
237
+
238
+ #: classes/class-cartflows-importer.php:807
239
+ msgid "Select Step Type"
240
+ msgstr ""
241
+
242
+ #: classes/class-cartflows-importer.php:884
243
+ msgid "Import from Cloud"
244
+ msgstr ""
245
+
246
+ #: classes/class-cartflows-importer.php:1196
247
+ msgid "Sales Landing"
248
+ msgstr ""
249
+
250
+ #: classes/class-cartflows-importer.php:1200
251
+ #: modules/flow/classes/class-cartflows-step-post-type.php:212
252
+ #: modules/flow/view/meta-flow-steps.php:12
253
+ msgid "Checkout (Woo)"
254
+ msgstr ""
255
+
256
+ #: classes/class-cartflows-importer.php:1204
257
+ #: modules/flow/classes/class-cartflows-step-post-type.php:219
258
+ #: modules/flow/view/meta-flow-steps.php:13
259
+ msgid "Thank You (Woo)"
260
+ msgstr ""
261
+
262
+ #: classes/class-cartflows-importer.php:1212
263
+ #: modules/flow/classes/class-cartflows-step-post-type.php:205
264
+ #: modules/flow/view/meta-flow-steps.php:11
265
+ msgid "Landing"
266
+ msgstr ""
267
+
268
+ #: classes/class-cartflows-importer.php:1216
269
+ msgid "Thank You"
270
+ msgstr ""
271
+
272
+ #: classes/class-cartflows-importer.php:1317
273
+ #. translators: %s: template ID
274
+ msgid "Invalid template id %1$s or post id %2$s."
275
+ msgstr ""
276
+
277
+ #: classes/class-cartflows-importer.php:1375
278
+ #. translators: %s: flow ID
279
+ msgid "Invalid flow id %1$s OR step type %2$s."
280
+ msgstr ""
281
+
282
+ #: classes/class-cartflows-importer.php:1497
283
+ msgid ""
284
+ "Elementor is not activated. Please activate plugin Elementor Page Builder "
285
+ "to import the step."
286
+ msgstr ""
287
+
288
+ #: classes/class-cartflows-importer.php:1615
289
+ msgid "Plugin Successfully Activated"
290
+ msgstr ""
291
+
292
+ #: classes/class-cartflows-loader.php:229
293
+ #. translators: %s: html tags
294
+ msgid ""
295
+ "You are using older version of %1$sCartFlows Pro%2$s. Please update "
296
+ "%1$sCartFlows Pro%2$s plugin to version %1$s%3$s%2$s or higher."
297
+ msgstr ""
298
+
299
+ #: classes/class-cartflows-loader.php:479
300
+ #. translators: %s: html tags
301
+ msgid ""
302
+ "This %1$sCartFlows%2$s page requires %1$sWooCommerce%2$s plugin installed & "
303
+ "activated."
304
+ msgstr ""
305
+
306
+ #: classes/class-cartflows-loader.php:489
307
+ msgid "Activate WooCommerce"
308
+ msgstr ""
309
+
310
+ #: classes/class-cartflows-loader.php:497
311
+ msgid "Install WooCommerce"
312
+ msgstr ""
313
+
314
+ #: classes/class-cartflows-logger.php:161
315
+ msgid "Action failed. Please refresh the page and retry."
316
+ msgstr ""
317
+
318
+ #: classes/class-cartflows-meta-fields.php:86
319
+ msgid "Thin 100"
320
+ msgstr ""
321
+
322
+ #: classes/class-cartflows-meta-fields.php:87
323
+ msgid "Extra-Light 200"
324
+ msgstr ""
325
+
326
+ #: classes/class-cartflows-meta-fields.php:88
327
+ msgid "Light 300"
328
+ msgstr ""
329
+
330
+ #: classes/class-cartflows-meta-fields.php:89
331
+ msgid "Normal 400"
332
+ msgstr ""
333
+
334
+ #: classes/class-cartflows-meta-fields.php:90
335
+ msgid "Medium 500"
336
+ msgstr ""
337
+
338
+ #: classes/class-cartflows-meta-fields.php:91
339
+ msgid "Semi-Bold 600"
340
+ msgstr ""
341
+
342
+ #: classes/class-cartflows-meta-fields.php:92
343
+ msgid "Bold 700"
344
+ msgstr ""
345
+
346
+ #: classes/class-cartflows-meta-fields.php:93
347
+ msgid "Extra-Bold 800"
348
+ msgstr ""
349
+
350
+ #: classes/class-cartflows-meta-fields.php:94
351
+ msgid "Ultra-Bold 900"
352
+ msgstr ""
353
+
354
+ #: classes/class-cartflows-meta-fields.php:217
355
+ #: classes/class-cartflows-meta-fields.php:325
356
+ #: classes/class-cartflows-meta-fields.php:1417
357
+ msgid "Remove"
358
+ msgstr ""
359
+
360
+ #: classes/class-cartflows-meta-fields.php:446
361
+ msgid "Field Width"
362
+ msgstr ""
363
+
364
+ #: classes/class-cartflows-meta-fields.php:450
365
+ msgid "33%"
366
+ msgstr ""
367
+
368
+ #: classes/class-cartflows-meta-fields.php:451
369
+ msgid "50%"
370
+ msgstr ""
371
+
372
+ #: classes/class-cartflows-meta-fields.php:452
373
+ msgid "100%"
374
+ msgstr ""
375
+
376
+ #: classes/class-cartflows-meta-fields.php:463
377
+ msgid "Field Label"
378
+ msgstr ""
379
+
380
+ #: classes/class-cartflows-meta-fields.php:477
381
+ msgid "Options"
382
+ msgstr ""
383
+
384
+ #: classes/class-cartflows-meta-fields.php:492
385
+ #: classes/class-cartflows-meta-fields.php:505
386
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:459
387
+ msgid "Default"
388
+ msgstr ""
389
+
390
+ #: classes/class-cartflows-meta-fields.php:496
391
+ msgid "Checked"
392
+ msgstr ""
393
+
394
+ #: classes/class-cartflows-meta-fields.php:497
395
+ msgid "Un-Checked"
396
+ msgstr ""
397
+
398
+ #: classes/class-cartflows-meta-fields.php:518
399
+ msgid "Placeholder"
400
+ msgstr ""
401
+
402
+ #: classes/class-cartflows-meta-fields.php:530
403
+ msgid "Required"
404
+ msgstr ""
405
+
406
+ #: classes/class-cartflows-meta-fields.php:542
407
+ msgid "Enable this field"
408
+ msgstr ""
409
+
410
+ #: classes/class-cartflows-meta-fields.php:562
411
+ msgid "Label"
412
+ msgstr ""
413
+
414
+ #: classes/class-cartflows-meta-fields.php:990
415
+ #: classes/class-cartflows-meta-fields.php:1409
416
+ msgid "Search for a product&hellip;"
417
+ msgstr ""
418
+
419
+ #: classes/class-cartflows-meta-fields.php:1031
420
+ msgid "Search for a coupon&hellip;"
421
+ msgstr ""
422
+
423
+ #: classes/class-cartflows-meta.php:34
424
+ msgid "Update"
425
+ msgstr ""
426
+
427
+ #: classes/class-cartflows-meta.php:42
428
+ #: modules/flow/classes/class-cartflows-flow-meta.php:84
429
+ msgid "Back to edit Flow"
430
+ msgstr ""
431
+
432
+ #: classes/class-cartflows-meta.php:63
433
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:191
434
+ #: modules/landing/classes/class-cartflows-landing-meta.php:136
435
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:148
436
+ msgid "Custom Script"
437
+ msgstr ""
438
+
439
+ #: classes/class-cartflows-meta.php:66
440
+ msgid ""
441
+ "Custom script lets you add your own custom script on front end of this flow "
442
+ "page."
443
+ msgstr ""
444
+
445
+ #: classes/class-cartflows-wizard.php:62
446
+ msgid "Thanks for installing and using CartFlows!"
447
+ msgstr ""
448
+
449
+ #: classes/class-cartflows-wizard.php:63
450
+ msgid ""
451
+ "It is easy to use the CartFlows. Please use the setup wizard to quick start "
452
+ "setup."
453
+ msgstr ""
454
+
455
+ #: classes/class-cartflows-wizard.php:88
456
+ #: includes/admin/cartflows-general-bck.php:24
457
+ msgid "Welcome"
458
+ msgstr ""
459
+
460
+ #: classes/class-cartflows-wizard.php:93
461
+ msgid "Page Builder"
462
+ msgstr ""
463
+
464
+ #: classes/class-cartflows-wizard.php:97
465
+ msgid "Checkout"
466
+ msgstr ""
467
+
468
+ #: classes/class-cartflows-wizard.php:101
469
+ msgid "Training"
470
+ msgstr ""
471
+
472
+ #: classes/class-cartflows-wizard.php:105
473
+ msgid "Ready!"
474
+ msgstr ""
475
+
476
+ #: classes/class-cartflows-wizard.php:179
477
+ msgid "CartFlows Setup"
478
+ msgstr ""
479
+
480
+ #: classes/class-cartflows-wizard.php:205
481
+ msgid "Exit Setup Wizard"
482
+ msgstr ""
483
+
484
+ #: classes/class-cartflows-wizard.php:258
485
+ msgid "Welcome to CartFlows!"
486
+ msgstr ""
487
+
488
+ #: classes/class-cartflows-wizard.php:259
489
+ msgid ""
490
+ "Thank you for choosing CartFlows to get more leads, increase conversions, & "
491
+ "maximize profits. This short setup wizard will guide you though configuring "
492
+ "CartFlows and creating your first funnel."
493
+ msgstr ""
494
+
495
+ #: classes/class-cartflows-wizard.php:265
496
+ msgid "Lets Go »"
497
+ msgstr ""
498
+
499
+ #: classes/class-cartflows-wizard.php:292
500
+ msgid "Page Builder Setup"
501
+ msgstr ""
502
+
503
+ #: classes/class-cartflows-wizard.php:293
504
+ msgid "Please select a page builder you would like to use with CartFlows."
505
+ msgstr ""
506
+
507
+ #: classes/class-cartflows-wizard.php:298
508
+ msgid "Select Page Builder"
509
+ msgstr ""
510
+
511
+ #: classes/class-cartflows-wizard.php:305
512
+ #: includes/admin/cartflows-general.php:84
513
+ msgid "Elementor"
514
+ msgstr ""
515
+
516
+ #: classes/class-cartflows-wizard.php:315
517
+ msgid "Beaver Builder Plugin (Lite Version)"
518
+ msgstr ""
519
+
520
+ #: classes/class-cartflows-wizard.php:325
521
+ #: includes/admin/cartflows-general.php:86
522
+ msgid "Divi"
523
+ msgstr ""
524
+
525
+ #: classes/class-cartflows-wizard.php:335
526
+ #: includes/admin/cartflows-general.php:87
527
+ msgid "Other"
528
+ msgstr ""
529
+
530
+ #: classes/class-cartflows-wizard.php:357
531
+ msgid ""
532
+ "While CartFlows Should work with most page builders, we offer templates for "
533
+ "the above page builders."
534
+ msgstr ""
535
+
536
+ #: classes/class-cartflows-wizard.php:360
537
+ #: classes/class-cartflows-wizard.php:405
538
+ #: classes/class-cartflows-wizard.php:584
539
+ msgid "« Previous"
540
+ msgstr ""
541
+
542
+ #: classes/class-cartflows-wizard.php:363
543
+ msgid "Skip this step"
544
+ msgstr ""
545
+
546
+ #: classes/class-cartflows-wizard.php:364
547
+ msgid "Next »"
548
+ msgstr ""
549
+
550
+ #: classes/class-cartflows-wizard.php:383
551
+ msgid "Choose a checkout"
552
+ msgstr ""
553
+
554
+ #: classes/class-cartflows-wizard.php:386
555
+ msgid ""
556
+ "While CartFlows is designed to use WooCommerce sell digital and physical "
557
+ "products, not all funnels need a checkout system."
558
+ msgstr ""
559
+
560
+ #: classes/class-cartflows-wizard.php:388
561
+ msgid ""
562
+ "Would you like to install WooCommerce to sell digital and physical products "
563
+ "in your funnels?"
564
+ msgstr ""
565
+
566
+ #: classes/class-cartflows-wizard.php:395
567
+ msgid "The following plugin will be installed and activated for you:"
568
+ msgstr ""
569
+
570
+ #: classes/class-cartflows-wizard.php:396
571
+ msgid "WooCommerce"
572
+ msgstr ""
573
+
574
+ #: classes/class-cartflows-wizard.php:397
575
+ msgid "WooCommerce Cart Abandonment Recovery"
576
+ msgstr ""
577
+
578
+ #: classes/class-cartflows-wizard.php:408
579
+ #: classes/class-cartflows-wizard.php:587
580
+ msgid "No thanks"
581
+ msgstr ""
582
+
583
+ #: classes/class-cartflows-wizard.php:409
584
+ msgid "Yes"
585
+ msgstr ""
586
+
587
+ #: classes/class-cartflows-wizard.php:520
588
+ msgid "Congratulations, You Did It!"
589
+ msgstr ""
590
+
591
+ #: classes/class-cartflows-wizard.php:527
592
+ msgid ""
593
+ "CartFlows is ready to use on your website. You've successfully completed "
594
+ "the setup process and all that is left for you to do is create your first "
595
+ "flow."
596
+ msgstr ""
597
+
598
+ #: classes/class-cartflows-wizard.php:541
599
+ msgid "Create a flow"
600
+ msgstr ""
601
+
602
+ #: classes/class-cartflows-wizard.php:558
603
+ msgid "Exclusive CartFlows Training Course Offer"
604
+ msgstr ""
605
+
606
+ #: classes/class-cartflows-wizard.php:569
607
+ msgid ""
608
+ "We want you to get off to a great start using CartFlows, so we would like "
609
+ "to give access to our exclusive training course."
610
+ msgstr ""
611
+
612
+ #: classes/class-cartflows-wizard.php:570
613
+ msgid "Get access to this couse, for free, by entering your email below."
614
+ msgstr ""
615
+
616
+ #: classes/class-cartflows-wizard.php:572
617
+ msgid "Enter Email address"
618
+ msgstr ""
619
+
620
+ #: classes/class-cartflows-wizard.php:588
621
+ msgid "Allow"
622
+ msgstr ""
623
+
624
+ #: classes/logger/class-cartflows-log-handler-file.php:351
625
+ #: classes/logger/class-cartflows-log-handler-file.php:371
626
+ msgid "This method should not be called before plugins_loaded."
627
+ msgstr ""
628
+
629
+ #: classes/logger/class-cartflows-wc-logger.php:58
630
+ #. translators: 1: class name 2: Cartflows_Log_Handler_Interface
631
+ msgid "The provided handler %1$s does not implement %2$s."
632
+ msgstr ""
633
+
634
+ #: classes/logger/class-cartflows-wc-logger.php:136
635
+ #. translators: 1: Cartflows_WC_Logger::log 2: level
636
+ msgid "%1$s was called with an invalid level \"%2$s\"."
637
+ msgstr ""
638
+
639
+ #: includes/admin/cartflows-admin.php:19
640
+ #: includes/admin/cartflows-general.php:40
641
+ msgid "Modernizing WordPress eCommerce!"
642
+ msgstr ""
643
+
644
+ #: includes/admin/cartflows-admin.php:29
645
+ msgid "Settings saved successfully."
646
+ msgstr ""
647
+
648
+ #: includes/admin/cartflows-error-log.php:36
649
+ msgid "%1$s at %2$s"
650
+ msgstr ""
651
+
652
+ #: includes/admin/cartflows-error-log.php:41
653
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:123
654
+ msgid "View"
655
+ msgstr ""
656
+
657
+ #: includes/admin/cartflows-error-log.php:65
658
+ msgid "Delete log"
659
+ msgstr ""
660
+
661
+ #: includes/admin/cartflows-error-log.php:70
662
+ msgid "There are currently no logs to view."
663
+ msgstr ""
664
+
665
+ #: includes/admin/cartflows-general-bck.php:10
666
+ msgid "Selec"
667
+ msgstr ""
668
+
669
+ #: includes/admin/cartflows-general-bck.php:22
670
+ msgid "General"
671
+ msgstr ""
672
+
673
+ #: includes/admin/cartflows-general.php:25
674
+ #: includes/admin/cartflows-general.php:48
675
+ msgid "General Settings"
676
+ msgstr ""
677
+
678
+ #: includes/admin/cartflows-general.php:32
679
+ msgid "Getting Started"
680
+ msgstr ""
681
+
682
+ #: includes/admin/cartflows-general.php:61
683
+ msgid "Disallow search engines from indexing flows"
684
+ msgstr ""
685
+
686
+ #: includes/admin/cartflows-general.php:71
687
+ #: modules/flow/view/meta-flow-steps.php:86
688
+ msgid "Global Checkout"
689
+ msgstr ""
690
+
691
+ #: includes/admin/cartflows-general.php:80
692
+ msgid "Show Templates designed with"
693
+ msgstr ""
694
+
695
+ #: includes/admin/cartflows-general.php:81
696
+ msgid ""
697
+ "CartFlows offers flow templates that can be imported in one click. These "
698
+ "templates are available in few different page builders. Please choose your "
699
+ "preferred page builder from the list so you will only see templates that "
700
+ "are made using that page builder.."
701
+ msgstr ""
702
+
703
+ #: includes/admin/cartflows-general.php:85
704
+ msgid "Beaver Builder"
705
+ msgstr ""
706
+
707
+ #: includes/admin/cartflows-general.php:96
708
+ msgid "Save Changes"
709
+ msgstr ""
710
+
711
+ #: includes/admin/cartflows-general.php:108
712
+ msgid "Knowledge Base"
713
+ msgstr ""
714
+
715
+ #: includes/admin/cartflows-general.php:112
716
+ msgid "Not sure how something works? Take a peek at the knowledge base and learn."
717
+ msgstr ""
718
+
719
+ #: includes/admin/cartflows-general.php:115
720
+ msgid "Visit Knowledge Base »"
721
+ msgstr ""
722
+
723
+ #: includes/admin/cartflows-general.php:123
724
+ msgid "Community"
725
+ msgstr ""
726
+
727
+ #: includes/admin/cartflows-general.php:127
728
+ msgid ""
729
+ "Join the community of super helpful CartFlows users. Say hello, ask "
730
+ "questions, give feedback and help each other!"
731
+ msgstr ""
732
+
733
+ #: includes/admin/cartflows-general.php:130
734
+ msgid "Join Our Facebook Group »"
735
+ msgstr ""
736
+
737
+ #: includes/admin/cartflows-general.php:138
738
+ msgid "Five Star Support"
739
+ msgstr ""
740
+
741
+ #: includes/admin/cartflows-general.php:142
742
+ msgid "Got a question? Get in touch with CartFlows developers. We're happy to help!"
743
+ msgstr ""
744
+
745
+ #: includes/admin/cartflows-general.php:145
746
+ msgid "Submit a Ticket »"
747
+ msgstr ""
748
+
749
+ #: includes/admin/cartflows-general.php:155
750
+ msgid "Load Minified CSS"
751
+ msgstr ""
752
+
753
+ #: includes/admin/cartflows-general.php:160
754
+ msgid ""
755
+ "Load the Minified CSS from here. Just Enable it by checking the below given "
756
+ "checkbox."
757
+ msgstr ""
758
+
759
+ #: includes/admin/cartflows-general.php:167
760
+ msgid "Load minified CSS & JS Files"
761
+ msgstr ""
762
+
763
+ #: includes/admin/cartflows-general.php:172
764
+ msgid "Save"
765
+ msgstr ""
766
+
767
+ #: includes/exporter.php:12
768
+ msgid "Export Flows to a JSON file"
769
+ msgstr ""
770
+
771
+ #: includes/exporter.php:13
772
+ msgid ""
773
+ "This tool allows you to generate and download a JSON file containing a list "
774
+ "of all flows."
775
+ msgstr ""
776
+
777
+ #: includes/importer.php:12
778
+ msgid "Import Flows to a JSON file"
779
+ msgstr ""
780
+
781
+ #: includes/importer.php:13
782
+ msgid "This tool allows you to import the flows from the JSON file."
783
+ msgstr ""
784
+
785
+ #: includes/importer.php:21
786
+ msgid "Import"
787
+ msgstr ""
788
+
789
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:161
790
+ #: modules/thankyou/classes/class-cartflows-thankyou-markup.php:64
791
+ msgid ""
792
+ "WooCommerce functions are not exists. If you are in iframe, please reload "
793
+ "the iframe"
794
+ msgstr ""
795
+
796
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:177
797
+ msgid "Checkout ID not found"
798
+ msgstr ""
799
+
800
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:343
801
+ msgid "Variations Not set"
802
+ msgstr ""
803
+
804
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:352
805
+ msgid "This product can't be purcahsed"
806
+ msgstr ""
807
+
808
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:948
809
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:979
810
+ msgid "Coupon Code"
811
+ msgstr ""
812
+
813
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:953
814
+ #: modules/checkout/classes/class-cartflows-checkout-markup.php:988
815
+ msgid "Apply"
816
+ msgstr ""
817
+
818
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:68
819
+ msgid "Checkout Layout"
820
+ msgstr ""
821
+
822
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:155
823
+ #: modules/landing/classes/class-cartflows-landing-meta.php:130
824
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:130
825
+ msgid "Shortcodes"
826
+ msgstr ""
827
+
828
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:161
829
+ msgid "Select Product"
830
+ msgstr ""
831
+
832
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:167
833
+ msgid "Order Bump"
834
+ msgstr ""
835
+
836
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:173
837
+ msgid "Checkout Design"
838
+ msgstr ""
839
+
840
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:179
841
+ msgid "Checkout Fields"
842
+ msgstr ""
843
+
844
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:185
845
+ msgid "Logo (Optional)"
846
+ msgstr ""
847
+
848
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:250
849
+ msgid "Add this shortcode to your checkout page"
850
+ msgstr ""
851
+
852
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:302
853
+ #. translators: %s: link
854
+ msgid "Upgrade to %1$sCartFlows Pro%2$s for Order Bump feature"
855
+ msgstr ""
856
+
857
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:330
858
+ #. translators: %s: link
859
+ msgid "Upgrade to %1$sCartFlows Pro%2$s for Custom Fields feature"
860
+ msgstr ""
861
+
862
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:358
863
+ msgid "One Column (Available in CartFlows Pro) "
864
+ msgstr ""
865
+
866
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:359
867
+ msgid "Two Step (Available in CartFlows Pro) "
868
+ msgstr ""
869
+
870
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:365
871
+ msgid "Checkout Skin"
872
+ msgstr ""
873
+
874
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:369
875
+ msgid "One Column"
876
+ msgstr ""
877
+
878
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:370
879
+ msgid "Two Column"
880
+ msgstr ""
881
+
882
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:371
883
+ msgid "Two Step"
884
+ msgstr ""
885
+
886
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:380
887
+ msgid "Primary Color"
888
+ msgstr ""
889
+
890
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:389
891
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:424
892
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:470
893
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:562
894
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:203
895
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:226
896
+ msgid "Font Family"
897
+ msgstr ""
898
+
899
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:397
900
+ msgid "Advance Options"
901
+ msgstr ""
902
+
903
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:409
904
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:211
905
+ msgid "Heading"
906
+ msgstr ""
907
+
908
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:415
909
+ msgid "Heading Color"
910
+ msgstr ""
911
+
912
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:433
913
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:479
914
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:571
915
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:235
916
+ msgid "Font Weight"
917
+ msgstr ""
918
+
919
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:441
920
+ msgid "Input Fields"
921
+ msgstr ""
922
+
923
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:449
924
+ msgid "Floating Labels (Available in CartFlows Pro)"
925
+ msgstr ""
926
+
927
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:455
928
+ msgid "Style"
929
+ msgstr ""
930
+
931
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:460
932
+ msgid "Floating Labels"
933
+ msgstr ""
934
+
935
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:487
936
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:579
937
+ msgid "Size"
938
+ msgstr ""
939
+
940
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:491
941
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:583
942
+ msgid "Extra Small"
943
+ msgstr ""
944
+
945
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:492
946
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:584
947
+ msgid "Small"
948
+ msgstr ""
949
+
950
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:493
951
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:585
952
+ msgid "Medium"
953
+ msgstr ""
954
+
955
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:494
956
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:586
957
+ msgid "Large"
958
+ msgstr ""
959
+
960
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:495
961
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:587
962
+ msgid "Extra Large"
963
+ msgstr ""
964
+
965
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:496
966
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:588
967
+ msgid "Custom"
968
+ msgstr ""
969
+
970
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:503
971
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:595
972
+ msgid "Top Bottom Spacing"
973
+ msgstr ""
974
+
975
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:511
976
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:603
977
+ msgid "Left Right Spacing"
978
+ msgstr ""
979
+
980
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:519
981
+ msgid "Text / Placeholder Color"
982
+ msgstr ""
983
+
984
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:527
985
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:627
986
+ msgid "Background Color"
987
+ msgstr ""
988
+
989
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:535
990
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:643
991
+ msgid "Border Color"
992
+ msgstr ""
993
+
994
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:542
995
+ msgid "Label Color"
996
+ msgstr ""
997
+
998
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:555
999
+ msgid "Buttons"
1000
+ msgstr ""
1001
+
1002
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:611
1003
+ msgid "Text Color"
1004
+ msgstr ""
1005
+
1006
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:619
1007
+ msgid "Text Hover Color"
1008
+ msgstr ""
1009
+
1010
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:635
1011
+ msgid "Background Hover Color"
1012
+ msgstr ""
1013
+
1014
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:651
1015
+ msgid "Border Hover Color"
1016
+ msgstr ""
1017
+
1018
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:664
1019
+ msgid "Sections"
1020
+ msgstr ""
1021
+
1022
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:670
1023
+ msgid "Highlight Area Background Color"
1024
+ msgstr ""
1025
+
1026
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:709
1027
+ msgid "Header Logo"
1028
+ msgstr ""
1029
+
1030
+ #: modules/checkout/classes/class-cartflows-checkout-meta.php:717
1031
+ msgid "Logo Width (In px)"
1032
+ msgstr ""
1033
+
1034
+ #: modules/checkout/templates/embed/checkout-template-simple.php:25
1035
+ #: modules/checkout/templates/wcf-template.php:36
1036
+ msgid "Your cart is currently empty."
1037
+ msgstr ""
1038
+
1039
+ #: modules/checkout/templates/wcf-template.php:46
1040
+ msgid "Copyright &copy;"
1041
+ msgstr ""
1042
+
1043
+ #: modules/checkout/templates/wcf-template.php:50
1044
+ msgid "All Rights Reserved"
1045
+ msgstr ""
1046
+
1047
+ #: modules/flow/classes/class-cartflows-flow-meta.php:199
1048
+ #. translators: %s flow id
1049
+ msgid "Steps not created for flow - %s"
1050
+ msgstr ""
1051
+
1052
+ #: modules/flow/classes/class-cartflows-flow-meta.php:213
1053
+ #. translators: %s flow id
1054
+ msgid "Steps already exists. Flow - %s"
1055
+ msgstr ""
1056
+
1057
+ #: modules/flow/classes/class-cartflows-flow-meta.php:224
1058
+ msgid "Landing Page"
1059
+ msgstr ""
1060
+
1061
+ #: modules/flow/classes/class-cartflows-flow-meta.php:225
1062
+ msgid "Checkout Page"
1063
+ msgstr ""
1064
+
1065
+ #: modules/flow/classes/class-cartflows-flow-meta.php:226
1066
+ msgid "Thank You Page"
1067
+ msgstr ""
1068
+
1069
+ #: modules/flow/classes/class-cartflows-flow-meta.php:262
1070
+ #. translators: %s flow id
1071
+ msgid "Steps created for flow - %s"
1072
+ msgstr ""
1073
+
1074
+ #: modules/flow/classes/class-cartflows-flow-meta.php:333
1075
+ #. translators: %s flow id
1076
+ msgid "Step not deleted for flow - %s"
1077
+ msgstr ""
1078
+
1079
+ #: modules/flow/classes/class-cartflows-flow-meta.php:364
1080
+ #. translators: %s flow id
1081
+ msgid "Step deleted for flow - %s"
1082
+ msgstr ""
1083
+
1084
+ #: modules/flow/classes/class-cartflows-flow-meta.php:387
1085
+ #. translators: %s flow id
1086
+ msgid "Steps not sorted for flow - %s"
1087
+ msgstr ""
1088
+
1089
+ #: modules/flow/classes/class-cartflows-flow-meta.php:410
1090
+ #. translators: %s flow id
1091
+ msgid "Steps sorted for flow - %s"
1092
+ msgstr ""
1093
+
1094
+ #: modules/flow/classes/class-cartflows-flow-meta.php:526
1095
+ msgid "Flow Settings"
1096
+ msgstr ""
1097
+
1098
+ #: modules/flow/classes/class-cartflows-flow-meta.php:610
1099
+ msgid "Enable Test Mode"
1100
+ msgstr ""
1101
+
1102
+ #: modules/flow/classes/class-cartflows-flow-meta.php:617
1103
+ msgid ""
1104
+ "Test mode adds random products in your flow, so you can preview it easily "
1105
+ "while testing."
1106
+ msgstr ""
1107
+
1108
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:57
1109
+ msgid "Search Flows"
1110
+ msgstr ""
1111
+
1112
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:58
1113
+ msgid "All Flows"
1114
+ msgstr ""
1115
+
1116
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:59
1117
+ msgid "Edit Flow"
1118
+ msgstr ""
1119
+
1120
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:60
1121
+ msgid "View Flow"
1122
+ msgstr ""
1123
+
1124
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:61
1125
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:63
1126
+ #: modules/flow/classes/class-cartflows-step-post-type.php:150
1127
+ #: modules/flow/classes/class-cartflows-step-post-type.php:152
1128
+ msgid "Add New"
1129
+ msgstr ""
1130
+
1131
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:62
1132
+ msgid "Update Flow"
1133
+ msgstr ""
1134
+
1135
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:64
1136
+ msgid "New Flow Name"
1137
+ msgstr ""
1138
+
1139
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:230
1140
+ msgid "Flows"
1141
+ msgstr ""
1142
+
1143
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:252
1144
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:258
1145
+ #: modules/flow/classes/class-cartflows-step-post-type.php:423
1146
+ #: modules/flow/classes/class-cartflows-step-post-type.php:429
1147
+ #. translators: %s: singular custom post type name
1148
+ msgid "%s updated."
1149
+ msgstr ""
1150
+
1151
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:254
1152
+ #: modules/flow/classes/class-cartflows-step-post-type.php:425
1153
+ #. translators: %s: singular custom post type name
1154
+ msgid "Custom %s updated."
1155
+ msgstr ""
1156
+
1157
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:256
1158
+ #: modules/flow/classes/class-cartflows-step-post-type.php:427
1159
+ #. translators: %s: singular custom post type name
1160
+ msgid "Custom %s deleted."
1161
+ msgstr ""
1162
+
1163
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:260
1164
+ #: modules/flow/classes/class-cartflows-step-post-type.php:431
1165
+ #. translators: %1$s: singular custom post type name ,%2$s: date and time of
1166
+ #. the revision
1167
+ msgid "%1$s restored to revision from %2$s"
1168
+ msgstr ""
1169
+
1170
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:262
1171
+ #: modules/flow/classes/class-cartflows-step-post-type.php:433
1172
+ #. translators: %s: singular custom post type name
1173
+ msgid "%s published."
1174
+ msgstr ""
1175
+
1176
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:264
1177
+ #: modules/flow/classes/class-cartflows-step-post-type.php:435
1178
+ #. translators: %s: singular custom post type name
1179
+ msgid "%s saved."
1180
+ msgstr ""
1181
+
1182
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:266
1183
+ #: modules/flow/classes/class-cartflows-step-post-type.php:437
1184
+ #. translators: %s: singular custom post type name
1185
+ msgid "%s submitted."
1186
+ msgstr ""
1187
+
1188
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:268
1189
+ #: modules/flow/classes/class-cartflows-step-post-type.php:439
1190
+ #. translators: %s: singular custom post type name
1191
+ msgid "%s scheduled for."
1192
+ msgstr ""
1193
+
1194
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:270
1195
+ #: modules/flow/classes/class-cartflows-step-post-type.php:441
1196
+ #. translators: %s: singular custom post type name
1197
+ msgid "%s draft updated."
1198
+ msgstr ""
1199
+
1200
+ #: modules/flow/classes/class-cartflows-flow-shortcodes.php:148
1201
+ #: modules/widgets/class-cartflows-next-step.php:79
1202
+ msgid "Next Step"
1203
+ msgstr ""
1204
+
1205
+ #: modules/flow/classes/class-cartflows-step-post-type.php:146
1206
+ msgid "Search Steps"
1207
+ msgstr ""
1208
+
1209
+ #: modules/flow/classes/class-cartflows-step-post-type.php:147
1210
+ msgid "All Steps"
1211
+ msgstr ""
1212
+
1213
+ #: modules/flow/classes/class-cartflows-step-post-type.php:148
1214
+ #: modules/flow/view/meta-flow-steps.php:98
1215
+ msgid "Edit Step"
1216
+ msgstr ""
1217
+
1218
+ #: modules/flow/classes/class-cartflows-step-post-type.php:149
1219
+ #: modules/flow/view/meta-flow-steps.php:94
1220
+ msgid "View Step"
1221
+ msgstr ""
1222
+
1223
+ #: modules/flow/classes/class-cartflows-step-post-type.php:151
1224
+ msgid "Update Step"
1225
+ msgstr ""
1226
+
1227
+ #: modules/flow/classes/class-cartflows-step-post-type.php:153
1228
+ msgid "New Step Name"
1229
+ msgstr ""
1230
+
1231
+ #: modules/flow/classes/class-cartflows-step-post-type.php:177
1232
+ msgid "Step Type"
1233
+ msgstr ""
1234
+
1235
+ #: modules/flow/classes/class-cartflows-step-post-type.php:187
1236
+ msgid "Step Flow"
1237
+ msgstr ""
1238
+
1239
+ #: modules/flow/classes/class-cartflows-step-post-type.php:226
1240
+ #: modules/flow/view/meta-flow-steps.php:14
1241
+ msgid "Upsell (Woo)"
1242
+ msgstr ""
1243
+
1244
+ #: modules/flow/classes/class-cartflows-step-post-type.php:233
1245
+ #: modules/flow/view/meta-flow-steps.php:15
1246
+ msgid "Downsell (Woo)"
1247
+ msgstr ""
1248
+
1249
+ #: modules/flow/view/meta-flow-steps.php:78
1250
+ msgid "No Product Assigned"
1251
+ msgstr ""
1252
+
1253
+ #: modules/flow/view/meta-flow-steps.php:82
1254
+ msgid "Global Checkout - Remove selected checkout product"
1255
+ msgstr ""
1256
+
1257
+ #: modules/flow/view/meta-flow-steps.php:102
1258
+ msgid "Clone Step"
1259
+ msgstr ""
1260
+
1261
+ #: modules/flow/view/meta-flow-steps.php:106
1262
+ msgid "Delete Step"
1263
+ msgstr ""
1264
+
1265
+ #: modules/flow/view/meta-flow-steps.php:121
1266
+ msgid "Add New Step"
1267
+ msgstr ""
1268
+
1269
+ #: modules/flow/view/meta-flow-steps.php:137
1270
+ msgid "Steps Library"
1271
+ msgstr ""
1272
+
1273
+ #: modules/flow/view/meta-flow-steps.php:186
1274
+ msgid "Create Step"
1275
+ msgstr ""
1276
+
1277
+ #: modules/flow/view/meta-flow-steps.php:188
1278
+ msgid "You need a Cartflows Pro version to import Upsell / Downsell"
1279
+ msgstr ""
1280
+
1281
+ #: modules/landing/classes/class-cartflows-landing-meta.php:66
1282
+ msgid "Landing Page Settings"
1283
+ msgstr ""
1284
+
1285
+ #: modules/landing/classes/class-cartflows-landing-meta.php:169
1286
+ msgid "Next Step Link"
1287
+ msgstr ""
1288
+
1289
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:65
1290
+ msgid "Thank You Page Settings"
1291
+ msgstr ""
1292
+
1293
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:136
1294
+ msgid "Thank You Design"
1295
+ msgstr ""
1296
+
1297
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:142
1298
+ msgid "Thank You Fields"
1299
+ msgstr ""
1300
+
1301
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:176
1302
+ msgid "Order Details"
1303
+ msgstr ""
1304
+
1305
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:188
1306
+ msgid "Text"
1307
+ msgstr ""
1308
+
1309
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:194
1310
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:217
1311
+ msgid "Color"
1312
+ msgstr ""
1313
+
1314
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:243
1315
+ msgid "Advanced Options"
1316
+ msgstr ""
1317
+
1318
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:253
1319
+ msgid "Container Width (In px)"
1320
+ msgstr ""
1321
+
1322
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:261
1323
+ msgid "Section Background Color"
1324
+ msgstr ""
1325
+
1326
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:275
1327
+ msgid "Enable Order Overview "
1328
+ msgstr ""
1329
+
1330
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:283
1331
+ msgid "Enable Order Details "
1332
+ msgstr ""
1333
+
1334
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:291
1335
+ msgid "Enable Billing Details "
1336
+ msgstr ""
1337
+
1338
+ #: modules/thankyou/classes/class-cartflows-thankyou-meta.php:299
1339
+ msgid "Enable Shipping Details "
1340
+ msgstr ""
1341
+
1342
+ #: modules/widgets/class-cartflows-next-step.php:25
1343
+ msgid "CartFlows Next Step"
1344
+ msgstr ""
1345
+
1346
+ #: modules/widgets/class-cartflows-next-step.php:27
1347
+ msgid "Next Step Widgets"
1348
+ msgstr ""
1349
+
1350
+ #: modules/widgets/class-cartflows-next-step.php:107
1351
+ msgid "New title"
1352
+ msgstr ""
1353
+
1354
+ #: modules/widgets/class-cartflows-next-step.php:124
1355
+ msgid "Title:"
1356
+ msgstr ""
1357
+
1358
+ #: modules/widgets/class-cartflows-next-step.php:128
1359
+ msgid "Flow ID:"
1360
+ msgstr ""
1361
+
1362
+ #: modules/widgets/class-cartflows-next-step.php:132
1363
+ msgid "Step ID:"
1364
+ msgstr ""
1365
+
1366
+ #: woocommerce/template/cart/cart-shipping.php:51
1367
+ #. Translators: $s shipping destination.
1368
+ msgid "Estimate for %s."
1369
+ msgstr ""
1370
+
1371
+ #: woocommerce/template/cart/cart-shipping.php:52
1372
+ msgid "Change address"
1373
+ msgstr ""
1374
+
1375
+ #: woocommerce/template/cart/cart-shipping.php:54
1376
+ msgid "This is only an estimate. Prices will be updated during checkout."
1377
+ msgstr ""
1378
+
1379
+ #: woocommerce/template/cart/cart-shipping.php:61
1380
+ msgid "Enter your address to view shipping options."
1381
+ msgstr ""
1382
+
1383
+ #: woocommerce/template/cart/cart-shipping.php:63
1384
+ msgid ""
1385
+ "There are no shipping methods available. Please ensure that your address "
1386
+ "has been entered correctly, or contact us if you need any help."
1387
+ msgstr ""
1388
+
1389
+ #: woocommerce/template/cart/cart-shipping.php:66
1390
+ #. Translators: $s shipping destination.
1391
+ msgid "No shipping options were found for %s."
1392
+ msgstr ""
1393
+
1394
+ #: woocommerce/template/cart/cart-shipping.php:67
1395
+ msgid "Enter a different address"
1396
+ msgstr ""
1397
+
1398
+ #: woocommerce/template/checkout/form-billing.php:27
1399
+ msgid "Billing &amp; Shipping"
1400
+ msgstr ""
1401
+
1402
+ #: woocommerce/template/checkout/form-billing.php:31
1403
+ msgid "Billing details"
1404
+ msgstr ""
1405
+
1406
+ #: woocommerce/template/checkout/form-billing.php:59
1407
+ msgid "Create an account?"
1408
+ msgstr ""
1409
+
1410
+ #: woocommerce/template/checkout/form-checkout.php:26
1411
+ msgid "You must be logged in to checkout."
1412
+ msgstr ""
1413
+
1414
+ #: woocommerce/template/checkout/form-checkout.php:52
1415
+ msgid "Your order"
1416
+ msgstr ""
1417
+
1418
+ #: woocommerce/template/checkout/form-coupon.php:26
1419
+ msgid "Have a coupon?"
1420
+ msgstr ""
1421
+
1422
+ #: woocommerce/template/checkout/form-coupon.php:26
1423
+ msgid "Click here to enter your code"
1424
+ msgstr ""
1425
+
1426
+ #: woocommerce/template/checkout/form-coupon.php:31
1427
+ msgid "If you have a coupon code, please apply it below."
1428
+ msgstr ""
1429
+
1430
+ #: woocommerce/template/checkout/form-coupon.php:34
1431
+ msgid "Coupon code"
1432
+ msgstr ""
1433
+
1434
+ #: woocommerce/template/checkout/form-coupon.php:38
1435
+ msgid "Apply coupon"
1436
+ msgstr ""
1437
+
1438
+ #: woocommerce/template/checkout/form-login.php:26
1439
+ msgid "Returning customer?"
1440
+ msgstr ""
1441
+
1442
+ #: woocommerce/template/checkout/form-login.php:26
1443
+ msgid "Click here to login"
1444
+ msgstr ""
1445
+
1446
+ #: woocommerce/template/checkout/form-login.php:32
1447
+ msgid ""
1448
+ "If you have shopped with us before, please enter your details below. If you "
1449
+ "are a new customer, please proceed to the Billing &amp; Shipping section."
1450
+ msgstr ""
1451
+
1452
+ #: woocommerce/template/checkout/payment.php:33
1453
+ msgid ""
1454
+ "Sorry, it seems that there are no available payment methods for your state. "
1455
+ "Please contact us if you require assistance or wish to make alternate "
1456
+ "arrangements."
1457
+ msgstr ""
1458
+
1459
+ #: woocommerce/template/checkout/payment.php:33
1460
+ msgid "Please fill in your details above to see available payment methods."
1461
+ msgstr ""
1462
+
1463
+ #: woocommerce/template/checkout/payment.php:42
1464
+ #. translators: $1 and $2 opening and closing emphasis tags respectively
1465
+ msgid ""
1466
+ "Since your browser does not support JavaScript, or it is disabled, please "
1467
+ "ensure you click the %1$sUpdate Totals%2$s button before placing your "
1468
+ "order. You may be charged more than the amount stated above if you fail to "
1469
+ "do so."
1470
+ msgstr ""
1471
+
1472
+ #: woocommerce/template/checkout/payment.php:44
1473
+ msgid "Update totals"
1474
+ msgstr ""
1475
+
1476
+ #: woocommerce/template/checkout/review-order.php:26
1477
+ msgid "Product"
1478
+ msgstr ""
1479
+
1480
+ #: woocommerce/template/checkout/review-order.php:27
1481
+ #: woocommerce/template/checkout/review-order.php:106
1482
+ msgid "Total"
1483
+ msgstr ""
1484
+
1485
+ #: woocommerce/template/checkout/review-order.php:59
1486
+ msgid "Subtotal"
1487
+ msgstr ""
1488
+
1489
+ #: woocommerce/template/checkout/thankyou.php:30
1490
+ msgid ""
1491
+ "Unfortunately your order cannot be processed as the originating "
1492
+ "bank/merchant has declined your transaction. Please attempt your purchase "
1493
+ "again."
1494
+ msgstr ""
1495
+
1496
+ #: woocommerce/template/checkout/thankyou.php:33
1497
+ msgid "Pay"
1498
+ msgstr ""
1499
+
1500
+ #: woocommerce/template/checkout/thankyou.php:35
1501
+ msgid "My account"
1502
+ msgstr ""
1503
+
1504
+ #: woocommerce/template/checkout/thankyou.php:41
1505
+ #: woocommerce/template/checkout/thankyou.php:83
1506
+ msgid "Thank you. Your order has been received."
1507
+ msgstr ""
1508
+
1509
+ #: woocommerce/template/checkout/thankyou.php:46
1510
+ msgid "Order number:"
1511
+ msgstr ""
1512
+
1513
+ #: woocommerce/template/checkout/thankyou.php:51
1514
+ msgid "Date:"
1515
+ msgstr ""
1516
+
1517
+ #: woocommerce/template/checkout/thankyou.php:57
1518
+ msgid "Email:"
1519
+ msgstr ""
1520
+
1521
+ #: woocommerce/template/checkout/thankyou.php:63
1522
+ msgid "Total:"
1523
+ msgstr ""
1524
+
1525
+ #: woocommerce/template/checkout/thankyou.php:69
1526
+ msgid "Payment method:"
1527
+ msgstr ""
1528
+
1529
+ #: woocommerce/template/global/form-login.php:34
1530
+ msgid "Username or email"
1531
+ msgstr ""
1532
+
1533
+ #: woocommerce/template/global/form-login.php:38
1534
+ msgid "Password"
1535
+ msgstr ""
1536
+
1537
+ #: woocommerce/template/global/form-login.php:48
1538
+ msgid "Login"
1539
+ msgstr ""
1540
+
1541
+ #: woocommerce/template/global/form-login.php:53
1542
+ msgid "Remember me"
1543
+ msgstr ""
1544
+
1545
+ #: woocommerce/template/global/form-login.php:57
1546
+ msgid "Lost your password?"
1547
+ msgstr ""
1548
+
1549
+ #. Plugin Name of the plugin/theme
1550
+ msgid "CartFlows"
1551
+ msgstr ""
1552
+
1553
+ #. Author URI of the plugin/theme
1554
+ msgid "https://cartflows.com/"
1555
+ msgstr ""
1556
+
1557
+ #. Description of the plugin/theme
1558
+ msgid "Create beautiful checkout pages & sales flows for WooCommerce."
1559
+ msgstr ""
1560
+
1561
+ #. Author of the plugin/theme
1562
+ msgid "CartFlows Inc"
1563
+ msgstr ""
1564
+
1565
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:55
1566
+ msgctxt "flow general name"
1567
+ msgid "Flows"
1568
+ msgstr ""
1569
+
1570
+ #: modules/flow/classes/class-cartflows-flow-post-type.php:56
1571
+ msgctxt "flow singular name"
1572
+ msgid "Flow"
1573
+ msgstr ""
1574
+
1575
+ #: modules/flow/classes/class-cartflows-step-post-type.php:144
1576
+ msgctxt "flow step general name"
1577
+ msgid "Steps"
1578
+ msgstr ""
1579
+
1580
+ #: modules/flow/classes/class-cartflows-step-post-type.php:145
1581
+ msgctxt "flow step singular name"
1582
+ msgid "Step"
1583
+ msgstr ""
1584
+
1585
+ #: modules/flow/classes/class-cartflows-step-post-type.php:274
1586
+ msgctxt "cartflows"
1587
+ msgid "Template for Page Builders"
1588
  msgstr ""
modules/checkout/classes/class-cartflows-checkout-markup.php CHANGED
@@ -158,7 +158,7 @@ class Cartflows_Checkout_Markup {
158
  function checkout_shortcode_markup( $atts ) {
159
 
160
  if ( ! function_exists( 'wc_print_notices' ) ) {
161
- return '<p class="woocommerce-notice">' . __( 'WooCommerce functions not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
162
  }
163
 
164
  $atts = shortcode_atts(
158
  function checkout_shortcode_markup( $atts ) {
159
 
160
  if ( ! function_exists( 'wc_print_notices' ) ) {
161
+ return '<p class="woocommerce-notice">' . __( 'WooCommerce functions are not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
162
  }
163
 
164
  $atts = shortcode_atts(
modules/flow/classes/class-cartflows-flow-meta.php CHANGED
@@ -514,8 +514,13 @@ class Cartflows_Flow_Meta {
514
  */
515
  function settings_meta_box() {
516
 
517
- if ( CARTFLOWS_FLOW_POST_TYPE == get_post_type() ) {
518
 
 
 
 
 
 
519
  add_meta_box(
520
  'wcf-sandbox-settings', // Id.
521
  __( 'Flow Settings', 'cartflows' ), // Title.
@@ -525,7 +530,6 @@ class Cartflows_Flow_Meta {
525
  'high' // Priority.
526
  );
527
 
528
- do_action( 'cartflows_add_flow_metabox' );
529
  }
530
  }
531
 
514
  */
515
  function settings_meta_box() {
516
 
517
+ if ( CARTFLOWS_FLOW_POST_TYPE === get_post_type() ) {
518
 
519
+ do_action( 'cartflows_add_flow_metabox' );
520
+
521
+ return;
522
+
523
+ /* No need of sandbox will delete it later */
524
  add_meta_box(
525
  'wcf-sandbox-settings', // Id.
526
  __( 'Flow Settings', 'cartflows' ), // Title.
530
  'high' // Priority.
531
  );
532
 
 
533
  }
534
  }
535
 
modules/flow/classes/class-cartflows-step-post-type.php CHANGED
@@ -49,7 +49,7 @@ class Cartflows_Step_Post_Type {
49
  add_filter( 'wp_unique_post_slug', array( $this, 'prevent_slug_duplicates' ), 10, 6 );
50
  add_action( 'pre_get_posts', array( $this, 'add_cpt_post_names_to_main_query' ), 20 );
51
 
52
- add_filter( 'template_include', array( $this, 'load_page_template' ), 99 );
53
  add_filter( 'template_redirect', array( $this, 'query_fix' ), 3 );
54
  }
55
 
@@ -172,6 +172,7 @@ class Cartflows_Step_Post_Type {
172
 
173
  register_post_type( CARTFLOWS_STEP_POST_TYPE, $args );
174
 
 
175
  $args = array(
176
  'label' => __( 'Step Type', 'cartflows' ),
177
  'public' => false,
@@ -181,6 +182,7 @@ class Cartflows_Step_Post_Type {
181
 
182
  register_taxonomy( CARTFLOWS_TAXONOMY_STEP_TYPE, CARTFLOWS_STEP_POST_TYPE, $args );
183
 
 
184
  $args = array(
185
  'label' => __( 'Step Flow', 'cartflows' ),
186
  'public' => false,
@@ -190,47 +192,55 @@ class Cartflows_Step_Post_Type {
190
 
191
  register_taxonomy( CARTFLOWS_TAXONOMY_STEP_FLOW, CARTFLOWS_STEP_POST_TYPE, $args );
192
 
193
- /**
194
- * Register 'Elementor' & 'Beaver Builder' site types.
195
- *
196
- * @see self::add_terms();
197
- */
198
- $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
199
-
200
- $terms = array(
201
- array(
202
- 'name' => __( 'Landing', 'cartflows' ),
203
- 'args' => array(
204
  'slug' => 'landing',
 
 
 
205
  ),
206
- ),
207
- array(
208
- 'name' => __( 'Checkout', 'cartflows' ),
209
- 'args' => array(
210
  'slug' => 'checkout',
 
 
 
211
  ),
212
- ),
213
- array(
214
- 'name' => __( 'Thank You', 'cartflows' ),
215
- 'args' => array(
216
  'slug' => 'thankyou',
 
 
 
217
  ),
218
- ),
219
- array(
220
- 'name' => __( 'Upsell', 'cartflows' ),
221
- 'args' => array(
222
  'slug' => 'upsell',
 
 
 
223
  ),
224
- ),
225
- array(
226
- 'name' => __( 'Downsell', 'cartflows' ),
227
- 'args' => array(
228
  'slug' => 'downsell',
 
 
 
229
  ),
230
- ),
231
- );
 
232
 
233
- $this->add_terms( $taxonomy, $terms );
234
  }
235
 
236
  /**
@@ -443,10 +453,12 @@ class Cartflows_Step_Post_Type {
443
  * $taxonomy = '{taxonomy}';
444
  * $terms = array(
445
  * array(
446
- * 'name' => 'Free',
 
447
  * ),
448
  * array(
449
- * 'name' => 'Premium',
 
450
  * ),
451
  * );
452
  *
@@ -461,7 +473,7 @@ class Cartflows_Step_Post_Type {
461
 
462
  foreach ( $terms as $key => $term ) {
463
 
464
- $term_exist = term_exists( $term['name'], $taxonomy );
465
 
466
  if ( empty( $term_exist ) ) {
467
 
@@ -473,7 +485,10 @@ class Cartflows_Step_Post_Type {
473
  if ( array_key_exists( 'args', $term ) ) {
474
  wp_insert_term( $term['name'], $taxonomy, $term['args'] );
475
  } else {
476
- wp_insert_term( $term['name'], $taxonomy );
 
 
 
477
  }
478
  }
479
  }
49
  add_filter( 'wp_unique_post_slug', array( $this, 'prevent_slug_duplicates' ), 10, 6 );
50
  add_action( 'pre_get_posts', array( $this, 'add_cpt_post_names_to_main_query' ), 20 );
51
 
52
+ add_filter( 'template_include', array( $this, 'load_page_template' ), 90 );
53
  add_filter( 'template_redirect', array( $this, 'query_fix' ), 3 );
54
  }
55
 
172
 
173
  register_post_type( CARTFLOWS_STEP_POST_TYPE, $args );
174
 
175
+ // Step Type.
176
  $args = array(
177
  'label' => __( 'Step Type', 'cartflows' ),
178
  'public' => false,
182
 
183
  register_taxonomy( CARTFLOWS_TAXONOMY_STEP_TYPE, CARTFLOWS_STEP_POST_TYPE, $args );
184
 
185
+ // Step Flow.
186
  $args = array(
187
  'label' => __( 'Step Flow', 'cartflows' ),
188
  'public' => false,
192
 
193
  register_taxonomy( CARTFLOWS_TAXONOMY_STEP_FLOW, CARTFLOWS_STEP_POST_TYPE, $args );
194
 
195
+ if ( is_admin() ) {
196
+ /**
197
+ * Register 'Elementor' & 'Beaver Builder' site types.
198
+ *
199
+ * @see self::add_terms();
200
+ */
201
+ $taxonomy = CARTFLOWS_TAXONOMY_STEP_TYPE;
202
+
203
+ $terms = array(
204
+ array(
205
+ 'name' => __( 'Landing', 'cartflows' ),
206
  'slug' => 'landing',
207
+ 'args' => array(
208
+ 'slug' => 'landing',
209
+ ),
210
  ),
211
+ array(
212
+ 'name' => __( 'Checkout (Woo)', 'cartflows' ),
 
 
213
  'slug' => 'checkout',
214
+ 'args' => array(
215
+ 'slug' => 'checkout',
216
+ ),
217
  ),
218
+ array(
219
+ 'name' => __( 'Thank You (Woo)', 'cartflows' ),
 
 
220
  'slug' => 'thankyou',
221
+ 'args' => array(
222
+ 'slug' => 'thankyou',
223
+ ),
224
  ),
225
+ array(
226
+ 'name' => __( 'Upsell (Woo)', 'cartflows' ),
 
 
227
  'slug' => 'upsell',
228
+ 'args' => array(
229
+ 'slug' => 'upsell',
230
+ ),
231
  ),
232
+ array(
233
+ 'name' => __( 'Downsell (Woo)', 'cartflows' ),
 
 
234
  'slug' => 'downsell',
235
+ 'args' => array(
236
+ 'slug' => 'downsell',
237
+ ),
238
  ),
239
+ );
240
+
241
+ $this->add_terms( $taxonomy, $terms );
242
 
243
+ }
244
  }
245
 
246
  /**
453
  * $taxonomy = '{taxonomy}';
454
  * $terms = array(
455
  * array(
456
+ * 'name' => 'Landing',
457
+ * 'slug' => 'landing',
458
  * ),
459
  * array(
460
+ * 'name' => 'Checkout',
461
+ * 'slug' => 'checkout',
462
  * ),
463
  * );
464
  *
473
 
474
  foreach ( $terms as $key => $term ) {
475
 
476
+ $term_exist = term_exists( $term['slug'], $taxonomy );
477
 
478
  if ( empty( $term_exist ) ) {
479
 
485
  if ( array_key_exists( 'args', $term ) ) {
486
  wp_insert_term( $term['name'], $taxonomy, $term['args'] );
487
  } else {
488
+
489
+ $term['args'] = array( $term['slug'] );
490
+
491
+ wp_insert_term( $term['name'], $taxonomy, $term['args'] );
492
  }
493
  }
494
  }
modules/flow/view/meta-flow-steps.php CHANGED
@@ -7,13 +7,12 @@
7
 
8
  $default_page_builder = Cartflows_Helper::get_common_setting( 'default_page_builder' );
9
 
10
- $get_steps = array(
11
  'landing' => __( 'Landing', 'cartflows' ),
12
- 'checkout' => __( 'Checkout', 'cartflows' ),
13
- 'thankyou' => __( 'Thank You', 'cartflows' ),
14
- 'upsell' => __( 'Upsell', 'cartflows' ),
15
- 'downsell' => __( 'Downsell', 'cartflows' ),
16
-
17
  );
18
 
19
  ?>
@@ -34,7 +33,7 @@ $get_steps = array(
34
 
35
  if ( isset( $data['type'] ) ) {
36
  $term_slug = $data['type'];
37
- $term_name = $get_steps[ $data['type'] ];
38
  }
39
 
40
  if ( ! _is_cartflows_pro() && ( 'upsell' === $term_slug || 'downsell' === $term_slug ) ) {
@@ -178,11 +177,10 @@ $get_steps = array(
178
  <div id="wcf-scratch-steps-categories">
179
  <select class="step-type-filter-links filter-links">
180
  <option value="" class="current"> Select Step Type </option>
181
- <option value="52" data-group="52" class="Landing" data-slug="landing" data-title="Landing">Landing</option>
182
- <option value="53" data-group="53" class="Checkout" data-slug="checkout" data-title="Checkout">Checkout</option>
183
- <option value="55" data-group="55" class="Upsell" data-slug="upsell" data-title="Upsell">Upsell</option>
184
- <option value="56" data-group="56" class="Downsell" data-slug="downsell" data-title="Downsell">Downsell</option>
185
- <option value="54" data-group="54" class="Thank You" data-slug="thankyou" data-title="Thank You">Thank You</option>
186
  </select>
187
  </div>
188
  <a href="#" class="button button-primary cartflows-step-import-blank"><?php _e( 'Create Step', 'cartflows' ); ?></a>
7
 
8
  $default_page_builder = Cartflows_Helper::get_common_setting( 'default_page_builder' );
9
 
10
+ $steps = array(
11
  'landing' => __( 'Landing', 'cartflows' ),
12
+ 'checkout' => __( 'Checkout (Woo)', 'cartflows' ),
13
+ 'thankyou' => __( 'Thank You (Woo)', 'cartflows' ),
14
+ 'upsell' => __( 'Upsell (Woo)', 'cartflows' ),
15
+ 'downsell' => __( 'Downsell (Woo)', 'cartflows' ),
 
16
  );
17
 
18
  ?>
33
 
34
  if ( isset( $data['type'] ) ) {
35
  $term_slug = $data['type'];
36
+ $term_name = $steps[ $data['type'] ];
37
  }
38
 
39
  if ( ! _is_cartflows_pro() && ( 'upsell' === $term_slug || 'downsell' === $term_slug ) ) {
177
  <div id="wcf-scratch-steps-categories">
178
  <select class="step-type-filter-links filter-links">
179
  <option value="" class="current"> Select Step Type </option>
180
+
181
+ <?php foreach ( $steps as $key => $value ) { ?>
182
+ <option class="<?php echo $key; ?>" data-slug="<?php echo $key; ?>" data-title="<?php echo $key; ?>"><?php echo $value; ?></option>
183
+ <?php } ?>
 
184
  </select>
185
  </div>
186
  <a href="#" class="button button-primary cartflows-step-import-blank"><?php _e( 'Create Step', 'cartflows' ); ?></a>
modules/landing/classes/class-cartflows-landing-meta.php CHANGED
@@ -122,14 +122,14 @@ class Cartflows_Landing_Meta extends Cartflows_Meta {
122
  $active_tab = get_post_meta( $post_id, 'wcf_active_tab', true );
123
 
124
  if ( empty( $active_tab ) ) {
125
- $active_tab = 'wcf-thankyou-shortcodes';
126
  }
127
 
128
  $tabs = array(
129
  array(
130
  'title' => __( 'Shortcodes', 'cartflows' ),
131
- 'id' => 'wcf-thankyou-shortcodes',
132
- 'class' => 'wcf-thankyou-shortcodes' === $active_tab ? 'wcf-tab wp-ui-text-highlight active' : 'wcf-tab',
133
  'icon' => 'dashicons-info',
134
  ),
135
  array(
@@ -141,7 +141,7 @@ class Cartflows_Landing_Meta extends Cartflows_Meta {
141
  );
142
 
143
  ?>
144
- <div class="wcf-thankyou-table wcf-metabox-wrap widefat">
145
  <div class="wcf-table-container">
146
  <div class="wcf-column-left">
147
  <div class="wcf-tab-wrapper">
@@ -157,7 +157,7 @@ class Cartflows_Landing_Meta extends Cartflows_Meta {
157
  </div>
158
  </div>
159
  <div class="wcf-column-right">
160
- <div class="wcf-thankyou-shortcodes wcf-tab-content active widefat">
161
  <?php
162
 
163
  $next_step_link = wcf()->utils->get_linking_url(
122
  $active_tab = get_post_meta( $post_id, 'wcf_active_tab', true );
123
 
124
  if ( empty( $active_tab ) ) {
125
+ $active_tab = 'wcf-landing-shortcodes';
126
  }
127
 
128
  $tabs = array(
129
  array(
130
  'title' => __( 'Shortcodes', 'cartflows' ),
131
+ 'id' => 'wcf-landing-shortcodes',
132
+ 'class' => 'wcf-landing-shortcodes' === $active_tab ? 'wcf-tab wp-ui-text-highlight active' : 'wcf-tab',
133
  'icon' => 'dashicons-info',
134
  ),
135
  array(
141
  );
142
 
143
  ?>
144
+ <div class="wcf-landing-table wcf-metabox-wrap widefat">
145
  <div class="wcf-table-container">
146
  <div class="wcf-column-left">
147
  <div class="wcf-tab-wrapper">
157
  </div>
158
  </div>
159
  <div class="wcf-column-right">
160
+ <div class="wcf-landing-shortcodes wcf-tab-content active widefat">
161
  <?php
162
 
163
  $next_step_link = wcf()->utils->get_linking_url(
modules/thankyou/classes/class-cartflows-thankyou-markup.php CHANGED
@@ -1,274 +1,300 @@
1
- <?php
2
- /**
3
- * Front end and markup
4
- *
5
- * @package CartFlows
6
- */
7
-
8
- /**
9
- * Checkout Markup
10
- *
11
- * @since 1.0.0
12
- */
13
- class Cartflows_Thankyou_Markup {
14
-
15
- /**
16
- * Member Variable
17
- *
18
- * @var object instance
19
- */
20
- private static $instance;
21
-
22
- /**
23
- * Initiator
24
- */
25
- public static function get_instance() {
26
- if ( ! isset( self::$instance ) ) {
27
- self::$instance = new self;
28
- }
29
- return self::$instance;
30
- }
31
-
32
- /**
33
- * Constructor
34
- */
35
- public function __construct() {
36
-
37
- /* Downsell Shortcode */
38
- add_shortcode( 'cartflows_order_details', array( $this, 'cartflows_order_details_shortcode_markup' ) );
39
-
40
- add_action( 'wp_enqueue_scripts', array( $this, 'thank_you_scripts' ), 21 );
41
-
42
- add_action( 'woocommerce_is_order_received_page', array( $this, 'set_order_received_page' ) );
43
-
44
- }
45
-
46
- /**
47
- * Order shortcode markup
48
- *
49
- * @param array $atts attributes.
50
- * @since 1.0.0
51
- */
52
- function cartflows_order_details_shortcode_markup( $atts ) {
53
-
54
- $output = '';
55
-
56
- if ( _is_wcf_thankyou_type() ) {
57
-
58
- /* Remove order item link */
59
- add_filter( 'woocommerce_order_item_permalink', '__return_false' );
60
-
61
- if ( ! function_exists( 'wc_print_notices' ) ) {
62
- return '<p class="woocommerce-notice">' . __( 'WooCommerce functions not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
63
- }
64
-
65
- $order = false;
66
-
67
- if ( ! isset( $_GET['wcf-order'] ) && wcf()->flow->is_flow_testmode() ) {
68
-
69
- $args = array(
70
- 'limit' => 1,
71
- 'order' => 'DESC',
72
- 'post_type' => 'shop_order',
73
- 'status' => array( 'completed', 'processing' ),
74
- );
75
-
76
- $latest_order = wc_get_orders( $args );
77
-
78
- $order_id = ( ! empty( $latest_order ) ) ? current( $latest_order )->get_id() : 0;
79
-
80
- if ( $order_id > 0 ) {
81
-
82
- $order = wc_get_order( $order_id );
83
-
84
- if ( ! $order ) {
85
- $order = false;
86
- }
87
- }
88
- } else {
89
- if ( ! isset( $_GET['wcf-order'] ) ) {
90
- return '<p class="woocommerce-notice">Order not found. You cannot access this page directly.</p>';
91
- }
92
-
93
- // Get the order.
94
- $order_id = apply_filters( 'woocommerce_thankyou_order_id', empty( $_GET['wcf-order'] ) ? 0 : intval( $_GET['wcf-order'] ) );
95
- $order_key = apply_filters( 'woocommerce_thankyou_order_key', empty( $_GET['wcf-key'] ) ? '' : wc_clean( wp_unslash( $_GET['wcf-key'] ) ) ); // WPCS: input var ok, CSRF ok.
96
-
97
- if ( $order_id > 0 ) {
98
-
99
- $order = wc_get_order( $order_id );
100
-
101
- if ( ! $order || $order->get_order_key() !== $order_key ) {
102
- $order = false;
103
- }
104
- }
105
- }
106
-
107
- // Empty awaiting payment session.
108
- unset( WC()->session->order_awaiting_payment );
109
-
110
- if ( null !== WC()->session ) {
111
-
112
- if ( ! isset( WC()->cart ) || '' === WC()->cart ) {
113
- WC()->cart = new WC_Cart();
114
- }
115
-
116
- if ( ! WC()->cart->is_empty() ) {
117
- // wc_empty_cart();
118
- // Empty current cart.
119
- WC()->cart->empty_cart( true );
120
-
121
- wc_clear_notices();
122
- }
123
-
124
- wc_print_notices();
125
- }
126
-
127
- ob_start();
128
- echo "<div class='wcf-thankyou-wrap'>";
129
- wc_get_template( 'checkout/thankyou.php', array( 'order' => $order ) );
130
- echo '</div>';
131
- $output = ob_get_clean();
132
- }
133
-
134
- return $output;
135
- }
136
-
137
- /**
138
- * Load Thank You scripts.
139
- *
140
- * @return void
141
- */
142
- function thank_you_scripts() {
143
-
144
- if ( _is_wcf_thankyou_type() ) {
145
-
146
- do_action( 'cartflows_thank_you_scripts' );
147
-
148
- $style = $this->generate_thank_you_style();
149
-
150
- wp_add_inline_style( 'wcf-frontend-global', $style );
151
- }
152
- }
153
-
154
- /**
155
- * Set thank you as a order received page.
156
- *
157
- * @param boolean $is_order_page order page.
158
- * @return boolean
159
- */
160
- function set_order_received_page( $is_order_page ) {
161
-
162
- if ( _is_wcf_thankyou_type() ) {
163
-
164
- $is_order_page = true;
165
- }
166
-
167
- return $is_order_page;
168
- }
169
-
170
- /**
171
- * Generate Thank You Styles.
172
- *
173
- * @return string
174
- */
175
- function generate_thank_you_style() {
176
-
177
- global $post;
178
-
179
- if ( _is_wcf_thankyou_type() ) {
180
- $thank_you_id = $post->ID;
181
- } else {
182
- $thank_you_id = _get_wcf_thankyou_id( $post->post_content );
183
- }
184
-
185
- CartFlows_Font_Families::render_fonts( $thank_you_id );
186
-
187
- $text_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-text-color' );
188
- $text_font_family = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-font-family' );
189
- $heading_text_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-color' );
190
- $heading_font_family = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-font-family' );
191
- $heading_font_weight = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-font-wt' );
192
- $container_width = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-container-width' );
193
- $section_bg_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-section-bg-color' );
194
-
195
- $show_order_review = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-overview-section' );
196
-
197
- $show_order_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-details-section' );
198
-
199
- $show_billing_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-billing-section' );
200
-
201
- $show_shipping_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-shipping-section' );
202
-
203
- $output = "
204
- .wcf-thankyou-wrap{
205
- color: {$text_color};
206
- font-family: {$text_font_family};
207
- max-width:{$container_width}px;
208
- }
209
-
210
- .woocommerce-order h2.woocommerce-column__title,
211
- .woocommerce-order h2.woocommerce-order-details__title,
212
- .woocommerce-order .woocommerce-thankyou-order-received,
213
- .woocommerce-order-details h2 {
214
- color: {$heading_text_color};
215
- font-family: {$heading_font_family};
216
- font-weight: {$heading_font_weight};
217
- }
218
-
219
- .woocommerce-order ul.order_details,
220
- .woocommerce-order .woocommerce-order-details,
221
- .woocommerce-order .woocommerce-customer-details{
222
- background-color: {$section_bg_color}
223
- }
224
- img.emoji, img.wp-smiley {}
225
- ";
226
-
227
- if ( 'no' == $show_order_review ) {
228
- $output .= '
229
- .woocommerce-order ul.order_details{
230
- display: none;
231
- }
232
- ';
233
- }
234
-
235
- if ( 'no' == $show_order_details ) {
236
- $output .= '
237
- .woocommerce-order .woocommerce-order-details{
238
- display: none;
239
- }
240
- ';
241
- }
242
-
243
- if ( 'no' == $show_billing_details ) {
244
- $output .= '
245
- .woocommerce-order .woocommerce-customer-details .woocommerce-column--billing-address{
246
- display: none;
247
- }
248
- ';
249
- }
250
-
251
- if ( 'no' == $show_shipping_details ) {
252
- $output .= '
253
- .woocommerce-order .woocommerce-customer-details .woocommerce-column--shipping-address{
254
- display: none;
255
- }
256
- ';
257
- }
258
-
259
- if ( 'no' == $show_billing_details && 'no' == $show_shipping_details ) {
260
- $output .= '
261
- .woocommerce-order .woocommerce-customer-details{
262
- display: none;
263
- }
264
- ';
265
- }
266
-
267
- return $output;
268
- }
269
- }
270
-
271
- /**
272
- * Kicking this off by calling 'get_instance()' method
273
- */
274
- Cartflows_Thankyou_Markup::get_instance();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Front end and markup
4
+ *
5
+ * @package CartFlows
6
+ */
7
+
8
+ /**
9
+ * Checkout Markup
10
+ *
11
+ * @since 1.0.0
12
+ */
13
+ class Cartflows_Thankyou_Markup {
14
+
15
+ /**
16
+ * Member Variable
17
+ *
18
+ * @var object instance
19
+ */
20
+ private static $instance;
21
+
22
+ /**
23
+ * Initiator
24
+ */
25
+ public static function get_instance() {
26
+ if ( ! isset( self::$instance ) ) {
27
+ self::$instance = new self;
28
+ }
29
+ return self::$instance;
30
+ }
31
+
32
+ /**
33
+ * Constructor
34
+ */
35
+ public function __construct() {
36
+
37
+ /* Downsell Shortcode */
38
+ add_shortcode( 'cartflows_order_details', array( $this, 'cartflows_order_details_shortcode_markup' ) );
39
+
40
+ add_action( 'wp_enqueue_scripts', array( $this, 'thank_you_scripts' ), 21 );
41
+
42
+ add_action( 'woocommerce_is_order_received_page', array( $this, 'set_order_received_page' ) );
43
+
44
+ /* Set is checkout flag */
45
+ add_filter( 'woocommerce_is_checkout', array( $this, 'woo_checkout_flag' ), 9999 );
46
+ }
47
+
48
+ /**
49
+ * Order shortcode markup
50
+ *
51
+ * @param array $atts attributes.
52
+ * @since 1.0.0
53
+ */
54
+ function cartflows_order_details_shortcode_markup( $atts ) {
55
+
56
+ $output = '';
57
+
58
+ if ( _is_wcf_thankyou_type() ) {
59
+
60
+ /* Remove order item link */
61
+ add_filter( 'woocommerce_order_item_permalink', '__return_false' );
62
+
63
+ if ( ! function_exists( 'wc_print_notices' ) ) {
64
+ return '<p class="woocommerce-notice">' . __( 'WooCommerce functions are not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
65
+ }
66
+
67
+ $order = false;
68
+
69
+ if ( ! isset( $_GET['wcf-order'] ) && wcf()->flow->is_flow_testmode() ) {
70
+
71
+ $args = array(
72
+ 'limit' => 1,
73
+ 'order' => 'DESC',
74
+ 'post_type' => 'shop_order',
75
+ 'status' => array( 'completed', 'processing' ),
76
+ );
77
+
78
+ $latest_order = wc_get_orders( $args );
79
+
80
+ $order_id = ( ! empty( $latest_order ) ) ? current( $latest_order )->get_id() : 0;
81
+
82
+ if ( $order_id > 0 ) {
83
+
84
+ $order = wc_get_order( $order_id );
85
+
86
+ if ( ! $order ) {
87
+ $order = false;
88
+ }
89
+ }
90
+ } else {
91
+ if ( ! isset( $_GET['wcf-order'] ) ) {
92
+ return '<p class="woocommerce-notice">Order not found. You cannot access this page directly.</p>';
93
+ }
94
+
95
+ // Get the order.
96
+ $order_id = apply_filters( 'woocommerce_thankyou_order_id', empty( $_GET['wcf-order'] ) ? 0 : intval( $_GET['wcf-order'] ) );
97
+ $order_key = apply_filters( 'woocommerce_thankyou_order_key', empty( $_GET['wcf-key'] ) ? '' : wc_clean( wp_unslash( $_GET['wcf-key'] ) ) ); // WPCS: input var ok, CSRF ok.
98
+
99
+ if ( $order_id > 0 ) {
100
+
101
+ $order = wc_get_order( $order_id );
102
+
103
+ if ( ! $order || $order->get_order_key() !== $order_key ) {
104
+ $order = false;
105
+ }
106
+ }
107
+ }
108
+
109
+ // Empty awaiting payment session.
110
+ unset( WC()->session->order_awaiting_payment );
111
+
112
+ if ( null !== WC()->session ) {
113
+
114
+ if ( ! isset( WC()->cart ) || '' === WC()->cart ) {
115
+ WC()->cart = new WC_Cart();
116
+ }
117
+
118
+ if ( ! WC()->cart->is_empty() ) {
119
+ // wc_empty_cart();
120
+ // Empty current cart.
121
+ WC()->cart->empty_cart( true );
122
+
123
+ wc_clear_notices();
124
+ }
125
+
126
+ wc_print_notices();
127
+ }
128
+
129
+ ob_start();
130
+ echo "<div class='wcf-thankyou-wrap'>";
131
+ wc_get_template( 'checkout/thankyou.php', array( 'order' => $order ) );
132
+ echo '</div>';
133
+ $output = ob_get_clean();
134
+ }
135
+
136
+ return $output;
137
+ }
138
+
139
+ /**
140
+ * Load Thank You scripts.
141
+ *
142
+ * @return void
143
+ */
144
+ function thank_you_scripts() {
145
+
146
+ if ( _is_wcf_thankyou_type() ) {
147
+
148
+ do_action( 'cartflows_thank_you_scripts' );
149
+
150
+ $style = $this->generate_thank_you_style();
151
+
152
+ wp_add_inline_style( 'wcf-frontend-global', $style );
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Set thank you as a order received page.
158
+ *
159
+ * @param boolean $is_order_page order page.
160
+ * @return boolean
161
+ */
162
+ function set_order_received_page( $is_order_page ) {
163
+
164
+ if ( _is_wcf_thankyou_type() ) {
165
+
166
+ $is_order_page = true;
167
+ }
168
+
169
+ return $is_order_page;
170
+ }
171
+
172
+ /**
173
+ * Generate Thank You Styles.
174
+ *
175
+ * @return string
176
+ */
177
+ function generate_thank_you_style() {
178
+
179
+ global $post;
180
+
181
+ if ( _is_wcf_thankyou_type() ) {
182
+ $thank_you_id = $post->ID;
183
+ } else {
184
+ $thank_you_id = _get_wcf_thankyou_id( $post->post_content );
185
+ }
186
+
187
+ CartFlows_Font_Families::render_fonts( $thank_you_id );
188
+
189
+ $text_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-text-color' );
190
+ $text_font_family = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-font-family' );
191
+ $heading_text_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-color' );
192
+ $heading_font_family = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-font-family' );
193
+ $heading_font_weight = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-heading-font-wt' );
194
+ $container_width = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-container-width' );
195
+ $section_bg_color = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-tq-section-bg-color' );
196
+
197
+ $show_order_review = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-overview-section' );
198
+
199
+ $show_order_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-details-section' );
200
+
201
+ $show_billing_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-billing-section' );
202
+
203
+ $show_shipping_details = wcf()->options->get_thankyou_meta_value( $thank_you_id, 'wcf-show-shipping-section' );
204
+
205
+ $output = "
206
+ .wcf-thankyou-wrap{
207
+ color: {$text_color};
208
+ font-family: {$text_font_family};
209
+ max-width:{$container_width}px;
210
+ }
211
+
212
+ .woocommerce-order h2.woocommerce-column__title,
213
+ .woocommerce-order h2.woocommerce-order-details__title,
214
+ .woocommerce-order .woocommerce-thankyou-order-received,
215
+ .woocommerce-order-details h2,
216
+ .woocommerce-order h2.wc-bacs-bank-details-heading {
217
+ color: {$heading_text_color};
218
+ font-family: {$heading_font_family};
219
+ font-weight: {$heading_font_weight};
220
+ }
221
+
222
+ .woocommerce-order ul.order_details,
223
+ .woocommerce-order .woocommerce-order-details,
224
+ .woocommerce-order .woocommerce-customer-details,
225
+ .woocommerce-order .woocommerce-bacs-bank-details{
226
+ background-color: {$section_bg_color}
227
+ }
228
+ img.emoji, img.wp-smiley {}
229
+ ";
230
+
231
+ if ( 'no' == $show_order_review ) {
232
+ $output .= '
233
+ .woocommerce-order ul.order_details{
234
+ display: none;
235
+ }
236
+ ';
237
+ }
238
+
239
+ if ( 'no' == $show_order_details ) {
240
+ $output .= '
241
+ .woocommerce-order .woocommerce-order-details{
242
+ display: none;
243
+ }
244
+ ';
245
+ }
246
+
247
+ if ( 'no' == $show_billing_details ) {
248
+ $output .= '
249
+ .woocommerce-order .woocommerce-customer-details .woocommerce-column--billing-address{
250
+ display: none;
251
+ }
252
+ ';
253
+ }
254
+
255
+ if ( 'no' == $show_shipping_details ) {
256
+ $output .= '
257
+ .woocommerce-order .woocommerce-customer-details .woocommerce-column--shipping-address{
258
+ display: none;
259
+ }
260
+ ';
261
+ }
262
+
263
+ if ( 'no' == $show_billing_details && 'no' == $show_shipping_details ) {
264
+ $output .= '
265
+ .woocommerce-order .woocommerce-customer-details{
266
+ display: none;
267
+ }
268
+ ';
269
+ }
270
+
271
+ return $output;
272
+ }
273
+
274
+ /**
275
+ * Set as a checkout page if it is thank you page.
276
+ * Thank you page need to be set as a checkout page.
277
+ * Becauye ayment gateways will not load if it is not checkout.
278
+ *
279
+ * @param bool $is_checkout is checkout.
280
+ *
281
+ * @return bool
282
+ */
283
+ function woo_checkout_flag( $is_checkout ) {
284
+
285
+ if ( ! is_admin() ) {
286
+
287
+ if ( _is_wcf_thankyou_type() ) {
288
+
289
+ $is_checkout = true;
290
+ }
291
+ }
292
+
293
+ return $is_checkout;
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Kicking this off by calling 'get_instance()' method
299
+ */
300
+ Cartflows_Thankyou_Markup::get_instance();
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.me/BrainstormForce
4
  Tags: woocommerce, funnel builder, sales funnels
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
- Stable tag: 1.1.19
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -125,8 +125,14 @@ Glad you asked! CartFlows Pro is an optional add-on to CartFlows that adds addit
125
 
126
  == Changelog ==
127
 
128
- = Version 1.1.19 - Tuesday, 4th June 2019 =
129
  * New: WooCommerce dependency removed. Now, you can use CartFlows without WooCommerce.
 
 
 
 
 
 
130
  * Improvement: Extra theme compatibility added.
131
  * Improvement: Oxygen builder compatibility added.
132
  * Fix: Floating Label issue with account fields. CSS updated.
4
  Tags: woocommerce, funnel builder, sales funnels
5
  Requires at least: 4.4
6
  Tested up to: 5.2
7
+ Stable tag: 1.1.20
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
125
 
126
  == Changelog ==
127
 
128
+ = Version 1.1.20 - Wednesday, 12th June 2019 =
129
  * New: WooCommerce dependency removed. Now, you can use CartFlows without WooCommerce.
130
+ * Fix: Analytics was not showing.
131
+ * Fix: Bank account details were not showing on the Thank You page.
132
+ * Fix: Download details were not showing on the Thank You page for PayPal.
133
+ * Fix: Variation issue fixed when the WordPress folder path is different.
134
+
135
+ = Version 1.1.19 - Tuesday, 4th June 2019 =
136
  * Improvement: Extra theme compatibility added.
137
  * Improvement: Oxygen builder compatibility added.
138
  * Fix: Floating Label issue with account fields. CSS updated.