Ecwid Ecommerce Shopping Cart - Version 4.1.2

Version Description

  • Ecwid mobile apps badges of the dashboard page. We made a facelift for the plugin dashboard page footer and included mobile apps badges there to make it easier for new users to find and install Ecwid mobile applications for iPhone, iPad and Android. Why bother to install it? It allows you to manage your store and sell on the go.
  • Fixes for the embedded store Control Panel. There were issues in the store control panel when the Wordpress site was hosted on a server with incorrect system date set. We made the plugin tolerant of this kind of hosting issues the embedded store Control Panel should now be displayed fine on every server.
  • A fix for the Advanced settings page in the plugin backend. In some rare cases, the advanced settings page in the plugin didn't show the Chameleon option, which enables auto adjustment of the store layout. We fixed that and the Chameleon option is now available for every user. A good moment to try it, if you haven't yet.
  • A few miscellaneous fixes and improvemens in the plugin core.
Download this release

Release Info

Developer Ecwid
Plugin Icon 128x128 Ecwid Ecommerce Shopping Cart
Version 4.1.2
Comparing to
See all releases

Code changes from version 4.1 to 4.1.2

Files changed (51) hide show
  1. css/admin.css +71 -2
  2. css/landing.css +850 -15
  3. css/landing_old.css +496 -0
  4. css/settings.css +6 -9
  5. css/themes/accesspress-mag.css +7 -0
  6. ecwid-shopping-cart.php +181 -705
  7. images/black-app-store.svg +3 -0
  8. images/black-google.svg +2 -0
  9. includes/class-ecwid-kissmetrics.php +39 -8
  10. includes/class-ecwid-message-manager.php +4 -15
  11. includes/class-ecwid-oauth.php +2 -2
  12. includes/class-ecwid-store-editor.php +6 -6
  13. includes/oembed.php +1 -1
  14. includes/themes.php +3 -2
  15. includes/themes/class-ecwid-theme-accesspress-mag.php +17 -0
  16. includes/themes/class-ecwid-theme-attitude.php +1 -1
  17. includes/themes/class-ecwid-theme-base.php +1 -1
  18. includes/themes/class-ecwid-theme-customizr.php +2 -2
  19. includes/themes/class-ecwid-theme-edin.php +1 -1
  20. includes/themes/class-ecwid-theme-evolve.php +1 -1
  21. includes/themes/class-ecwid-theme-mantra.php +1 -1
  22. includes/themes/class-ecwid-theme-pagelines.php +1 -1
  23. includes/themes/class-ecwid-theme-responsive.php +3 -3
  24. includes/themes/class-ecwid-theme-responsiveboat.php +1 -1
  25. includes/themes/class-ecwid-theme-twentyfifteen.php +1 -1
  26. includes/themes/class-ecwid-theme-twentyfourteen.php +1 -1
  27. includes/themes/class-ecwid-theme-twentysixteen.php +1 -1
  28. includes/themes/class-ecwid-theme-twentytwelve.php +1 -1
  29. includes/widgets.php +22 -0
  30. includes/widgets/class-ecwid-widget-badge.php +133 -0
  31. includes/widgets/class-ecwid-widget-minicart-miniview.php +47 -0
  32. includes/widgets/class-ecwid-widget-minicart.php +47 -0
  33. includes/widgets/class-ecwid-widget-recently-viewed.php +158 -0
  34. includes/widgets/class-ecwid-widget-search.php +46 -0
  35. includes/widgets/class-ecwid-widget-store-link.php +36 -0
  36. includes/widgets/class-ecwid-widget-vcategories.php +46 -0
  37. js/admin.js +6 -1
  38. js/kissmetrics.js +16 -4
  39. js/landing.js +46 -1
  40. js/nav-menu.js +1 -1
  41. languages/ecwid-shopping-cart-ru_RU.mo +0 -0
  42. languages/ecwid-shopping-cart-ru_RU.po +47 -11
  43. lib/ecwid_api_v3.php +49 -8
  44. lib/ecwid_platform.php +68 -49
  45. readme.txt +36 -26
  46. templates/admin-footer.php +24 -8
  47. templates/advanced-settings.php +8 -23
  48. templates/ecwid-admin.php +3 -8
  49. templates/landing.php +65 -67
  50. templates/landing_old.php +171 -0
  51. templates/store-popup.php +23 -39
css/admin.css CHANGED
@@ -65,6 +65,7 @@
65
 
66
  div.ecwid-message {
67
  padding: 27px 29px 20px 30px;
 
68
  }
69
 
70
  .ecwid-message a {
@@ -169,10 +170,9 @@ div.ecwid-message {
169
  }
170
 
171
  body[class*="_page_ecwid"] .ecwid-message {
172
- margin: 20px 20px 20px 0px;
173
  }
174
 
175
-
176
  .ecwid-message.dev {
177
  outline: 2px solid red;
178
  width: 434px;
@@ -352,13 +352,22 @@ body[class*="_page_ecwid"] .ecwid-message {
352
  margin-top: 25px;
353
  }
354
 
 
 
 
 
355
  /* Remove left padding for integrated admin */
356
  .ecwid-admin-superwrap {
357
  position:relative;
358
  height: 600px;
359
  }
360
 
 
 
 
 
361
  .ecwid-admin-superwrap #wrap {
 
362
  height: 600px;
363
  background: white;
364
 
@@ -370,6 +379,10 @@ body[class*="_page_ecwid"] .ecwid-message {
370
  padding-left: 0px;
371
  }
372
 
 
 
 
 
373
  /* ---------------------- */
374
 
375
  @media screen and (max-width:1023px) {
@@ -405,4 +418,60 @@ body[class*="_page_ecwid"] .ecwid-message {
405
  .ecwid-reconnect-allow-sso.ecwid-connect .box .note {
406
  margin-bottom: 20px;
407
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
408
  }
65
 
66
  div.ecwid-message {
67
  padding: 27px 29px 20px 30px;
68
+ display: block;
69
  }
70
 
71
  .ecwid-message a {
170
  }
171
 
172
  body[class*="_page_ecwid"] .ecwid-message {
173
+ margin: 20px;
174
  }
175
 
 
176
  .ecwid-message.dev {
177
  outline: 2px solid red;
178
  width: 434px;
352
  margin-top: 25px;
353
  }
354
 
355
+ #ecwid-frame {
356
+ border: 1px solid #e5e5e5;
357
+ }
358
+
359
  /* Remove left padding for integrated admin */
360
  .ecwid-admin-superwrap {
361
  position:relative;
362
  height: 600px;
363
  }
364
 
365
+ .toplevel_page_ecwid #wpcontent {
366
+ padding-left: 0px;
367
+ }
368
+
369
  .ecwid-admin-superwrap #wrap {
370
+ right: 0px;
371
  height: 600px;
372
  background: white;
373
 
379
  padding-left: 0px;
380
  }
381
 
382
+ .ecwid-no-padding .ecwid-message, .ecwid-no-padding .update-nag {
383
+ margin-left: 20px;
384
+ }
385
+
386
  /* ---------------------- */
387
 
388
  @media screen and (max-width:1023px) {
418
  .ecwid-reconnect-allow-sso.ecwid-connect .box .note {
419
  margin-bottom: 20px;
420
  }
421
+ }
422
+
423
+ .ecwid-admin-footer {
424
+ display: table;
425
+ width:100%;
426
+ padding: 0 20px;
427
+ }
428
+
429
+ .ecwid-connect .ecwid-admin-footer .ecwid-app-badges-block {
430
+ display: none;
431
+ }
432
+
433
+ .ecwid-admin-footer-block {
434
+ display: table-cell;
435
+ padding-top: 5px;
436
+ padding-right: 10px;
437
+ font-size: 13px;
438
+ }
439
+
440
+ .ecwid-admin-footer-block:last-child {
441
+ padding-right: 0px;
442
+ }
443
+
444
+
445
+ .ecwid-admin-footer-block .ecwid-admin-footer-title {
446
+ margin: 1em 0;
447
+ font-weight: 600;
448
+ }
449
+
450
+ .ecwid-admin-footer-block .ecwid-admin-footer-text {
451
+ margin: 0.7em 0;
452
+ }
453
+ .ecwid-admin-footer-block .ecwid-app-badges {
454
+ margin-top: -1em;
455
+ min-width:230px;
456
+ padding-top: 1px;
457
+ }
458
+
459
+ .ecwid-admin-footer-block .ecwid-app-badges a,
460
+ .ecwid-admin-footer-block .ecwid-app-badges svg {
461
+ display: inline-block;
462
+ }
463
+ .ecwid-admin-footer-block .ecwid-app-badges svg {
464
+ width: 105px;
465
+ margin-right: 7px;
466
+ opacity: .8;
467
+ }
468
+
469
+ .ecwid-admin-footer-block .ecwid-app-badges svg:hover {
470
+ opacity: 1;
471
+ }
472
+
473
+ @media screen and (max-width:767px) {
474
+ .ecwid-admin-footer-block {
475
+ display: block;
476
+ }
477
  }
css/landing.css CHANGED
@@ -55,7 +55,7 @@ body {
55
  padding-top: 36px; }
56
  .ecwid-thank h1 {
57
  text-align: center;
58
- font-size: 28px;
59
  color: #000000;
60
  line-height: 1.4;
61
  margin-bottom: 30px; }
@@ -73,7 +73,9 @@ body {
73
  .ecwid-thank h1 span {
74
  display: block;
75
  font-size: 14px;
76
- margin-bottom: 14px; }
 
 
77
 
78
  .ecwid-thank-steps {
79
  margin: 0 auto 51px;
@@ -151,7 +153,7 @@ body {
151
  background-position: center bottom; } }
152
  @media (min-width: 1440px) {
153
  .ecwid-thank-background {
154
- background-position: left -50px; } }
155
  .ecwid-thank-background .ecwid-thank-background-tablet {
156
  padding: 52px 5% 0; }
157
  .ecwid-thank-background .ecwid-thank-background-tablet img {
@@ -445,23 +447,16 @@ body {
445
  }
446
 
447
  #wpcontent {
448
- background: white;
449
  padding-left: 0px;
450
  }
 
 
 
451
  ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu>li.current>a.current:after
452
  {
453
  border-right-color:white;
454
  }
455
 
456
- .ecwid-landing.register .on-connect {
457
- display: none;
458
- }
459
-
460
-
461
- .ecwid-landing.connect .on-register {
462
- display: none;
463
- }
464
-
465
  .ecwid-landing .on-error {
466
  display: none;
467
  }
@@ -481,7 +476,6 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu>li.current>a.current:a
481
  @media (min-width: 768px) {
482
  .ecwid-button .ecwid-connection-error {
483
  position: relative;
484
- top: -30px;
485
  margin-bottom: 8px;
486
  }
487
  }
@@ -493,4 +487,845 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu>li.current>a.current:a
493
 
494
  .ecwid-landing .button:hover {
495
  color: white;
496
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  padding-top: 36px; }
56
  .ecwid-thank h1 {
57
  text-align: center;
58
+ font-size: 34px;
59
  color: #000000;
60
  line-height: 1.4;
61
  margin-bottom: 30px; }
73
  .ecwid-thank h1 span {
74
  display: block;
75
  font-size: 14px;
76
+ text-align: left;
77
+ max-width: 500px;
78
+ margin: 14px auto; }
79
 
80
  .ecwid-thank-steps {
81
  margin: 0 auto 51px;
153
  background-position: center bottom; } }
154
  @media (min-width: 1440px) {
155
  .ecwid-thank-background {
156
+ background-position: left bottom; } }
157
  .ecwid-thank-background .ecwid-thank-background-tablet {
158
  padding: 52px 5% 0; }
159
  .ecwid-thank-background .ecwid-thank-background-tablet img {
447
  }
448
 
449
  #wpcontent {
 
450
  padding-left: 0px;
451
  }
452
+ .ecwid-landing {
453
+ background: white;
454
+ }
455
  ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu>li.current>a.current:after
456
  {
457
  border-right-color:white;
458
  }
459
 
 
 
 
 
 
 
 
 
 
460
  .ecwid-landing .on-error {
461
  display: none;
462
  }
476
  @media (min-width: 768px) {
477
  .ecwid-button .ecwid-connection-error {
478
  position: relative;
 
479
  margin-bottom: 8px;
480
  }
481
  }
487
 
488
  .ecwid-landing .button:hover {
489
  color: white;
490
+ }
491
+
492
+ .ecwid-landing .ecwid-button .btn {
493
+ width: 300px;
494
+ margin-bottom: 40px;
495
+ height: 59px;
496
+ font-size: 20px;
497
+ }
498
+
499
+ .ecwid-button .create-store-loading,
500
+ .ecwid-button .create-store-loading-note,
501
+ .ecwid-button .create-store-success-note,
502
+ .ecwid-button .create-store-success {
503
+ display: none;
504
+ }
505
+
506
+ .ecwid-button .create-store-loading-note,
507
+ .ecwid-button .create-store-success-note
508
+ {
509
+ margin-top: -20px;
510
+ margin-bottom: 32px;
511
+ }
512
+
513
+
514
+ /* loose copy of ecwid css framework */
515
+
516
+ @import url('//fonts.googleapis.com/css?family=Open+Sans:400,600,700,300&subset=latin,latin-ext,cyrillic');
517
+
518
+ .btn {
519
+ font-family: 'Open Sans';
520
+ }
521
+
522
+ @keyframes spinleft {
523
+ 0% {
524
+ transform: rotate(360deg); }
525
+
526
+ 100% {
527
+ transform: rotate(0deg); } }
528
+
529
+ @-webkit-keyframes spinleft {
530
+ 0% {
531
+ -webkit-transform: rotate(360deg); }
532
+
533
+ 100% {
534
+ -webkit-transform: rotate(0deg); } }
535
+
536
+ @keyframes spinright {
537
+ 0% {
538
+ transform: rotate(0deg); }
539
+
540
+ 100% {
541
+ transform: rotate(360deg); } }
542
+
543
+ @-webkit-keyframes spinright {
544
+ 0% {
545
+ -webkit-transform: rotate(0deg); }
546
+
547
+ 100% {
548
+ -webkit-transform: rotate(360deg); } }
549
+
550
+ /* Iconic font */
551
+ @font-face {
552
+ font-family: 'font_icons';
553
+ src: url('//s3.amazonaws.com/myecwidcom-static/static/fonts/icons/v13/fontIcons.eot');
554
+ src: url('//s3.amazonaws.com/myecwidcom-static/static/fonts/icons/v13/fontIcons.eot?#iefix') format('embedded-opentype'), url('//s3.amazonaws.com/myecwidcom-static/static/fonts/icons/v13/fontIcons.ttf') format('truetype'), url('//s3.amazonaws.com/myecwidcom-static/static/fonts/icons/v13/fontIcons.woff') format('woff'), url('//s3.amazonaws.com/myecwidcom-static/static/fonts/icons/v13/fontIcons.svg#icomoon') format('svg');
555
+ font-weight: normal;
556
+ font-style: normal; }
557
+
558
+ .ecwid-button [class*="icon-"] {
559
+ display: inline-block;
560
+ text-transform: none;
561
+ font-weight: normal;
562
+ font-style: normal;
563
+ font-variant: normal;
564
+ font-family: 'font_icons';
565
+ line-height: 1;
566
+ speak: none;
567
+ -webkit-font-smoothing: antialiased;
568
+ -moz-osx-font-smoothing: grayscale;
569
+ -webkit-transition: color .1s linear;
570
+ transition: color .1s linear; }
571
+
572
+ .icon-odn:before {
573
+ content: "\e639"; }
574
+
575
+ .icon-vk:before {
576
+ content: "\e63a"; }
577
+
578
+ .icon-customer_groups:before {
579
+ content: "\e62e"; }
580
+
581
+ .icon-unfinished:before {
582
+ content: "\e62d"; }
583
+
584
+ .icon-table_cake:before {
585
+ content: "\e62c"; }
586
+
587
+ .icon-coupons:before {
588
+ content: "\e63b"; }
589
+
590
+ .icon-discounts:before {
591
+ content: "\e63c"; }
592
+
593
+ .icon-marketplaces:before {
594
+ content: "\e63d"; }
595
+
596
+ .icon-odn:before {
597
+ content: "\e639"; }
598
+
599
+ .icon-vk:before {
600
+ content: "\e63a"; }
601
+
602
+ .icon-appointment:before {
603
+ content: "\e62b"; }
604
+
605
+ .icon-trash:before {
606
+ content: "\e62a"; }
607
+
608
+ .icon-lock:before {
609
+ content: "\e621"; }
610
+
611
+ .icon-letter:before {
612
+ content: "\e629"; }
613
+
614
+ .icon-vend:before {
615
+ content: "\e628"; }
616
+
617
+ .icon-apple:before {
618
+ content: "\e624"; }
619
+
620
+ .icon-discount:before {
621
+ content: "\e625"; }
622
+
623
+ .icon-bag:before {
624
+ content: "\e626"; }
625
+
626
+ .icon-phone:before {
627
+ content: "\e627"; }
628
+
629
+ .icon-speaker:before {
630
+ content: "\e622"; }
631
+
632
+ .icon-warning:before {
633
+ content: "\e623"; }
634
+
635
+ .icon-lock:before {
636
+ content: "\e621"; }
637
+
638
+ .icon-radiobutton-checked:before {
639
+ content: "\e61e"; }
640
+
641
+ .icon-radiobutton-unchecked:before {
642
+ content: "\e61f"; }
643
+
644
+ .icon-update:before {
645
+ content: "\e620"; }
646
+
647
+ .icon-settings:before {
648
+ content: "\e619"; }
649
+
650
+ .icon-main-menu:before {
651
+ content: "\e61a"; }
652
+
653
+ .icon-sales:before {
654
+ content: "\e61b"; }
655
+
656
+ .icon-chart:before {
657
+ content: "\e61c"; }
658
+
659
+ .icon-home:before {
660
+ content: "\e61d"; }
661
+
662
+ .icon-print:before {
663
+ content: "\e618"; }
664
+
665
+ .icon-search:before {
666
+ content: "\e617"; }
667
+
668
+ .icon-calendar:before {
669
+ content: "\e616"; }
670
+
671
+ .icon-show:before {
672
+ content: "\e010"; }
673
+
674
+ .icon-hide:before {
675
+ content: "\e011"; }
676
+
677
+ .icon-star:before {
678
+ content: "\e615"; }
679
+
680
+ .icon-edit:before {
681
+ content: "\e614"; }
682
+
683
+ .icon-categories:before {
684
+ content: "\e613"; }
685
+
686
+ .icon-arrange:before {
687
+ content: "\e612"; }
688
+
689
+ .icon-menu:before {
690
+ content: "\e611"; }
691
+
692
+ .icon-import:before {
693
+ content: "\e610"; }
694
+
695
+ .icon-gallery:before {
696
+ content: "\e60f"; }
697
+
698
+ .icon-enable-all:before {
699
+ content: "\e60e"; }
700
+
701
+ .icon-disable-all:before {
702
+ content: "\e60d"; }
703
+
704
+ .icon-next:before {
705
+ content: "\e000"; }
706
+
707
+ .icon-previous:before {
708
+ content: "\e00a"; }
709
+
710
+ .icon-store:before {
711
+ content: "\e001"; }
712
+
713
+ .icon-megaphone:before {
714
+ content: "\e002"; }
715
+
716
+ .icon-product:before {
717
+ content: "\e003"; }
718
+
719
+ .icon-geo:before {
720
+ content: "\e004"; }
721
+
722
+ .icon-shipping:before {
723
+ content: "\e005"; }
724
+
725
+ .icon-payments:before {
726
+ content: "\e006"; }
727
+
728
+ .icon-launch:before {
729
+ content: "\e007"; }
730
+
731
+ .icon-share:before {
732
+ content: "\e008"; }
733
+
734
+ .icon-facebook:before {
735
+ content: "\e009"; }
736
+
737
+ .icon-fb:before {
738
+ content: "\e00b"; }
739
+
740
+ .icon-twitter:before {
741
+ content: "\e00c"; }
742
+
743
+ .icon-chain:before {
744
+ content: "\e00d"; }
745
+
746
+ .icon-checkmark:before {
747
+ content: "\e00f"; }
748
+
749
+ .icon-close:before {
750
+ content: "\e014"; }
751
+
752
+ .icon-sort:before {
753
+ content: "\f0dc"; }
754
+
755
+ .icon-box:before {
756
+ content: "\e00e"; }
757
+
758
+ .icon-cloud:before {
759
+ content: "\e012"; }
760
+
761
+ .icon-rates:before {
762
+ content: "\e015"; }
763
+
764
+ .icon-upload:before {
765
+ content: "\e013"; }
766
+
767
+ .icon-arr-down:before {
768
+ content: "\e018"; }
769
+
770
+ .icon-dropdown:before {
771
+ content: "\e016"; }
772
+
773
+ .icon-cash:before {
774
+ content: "\e019"; }
775
+
776
+ .icon-check:before {
777
+ content: "\e01a"; }
778
+
779
+ .icon-google:before {
780
+ content: "\e600"; }
781
+
782
+ .icon-paypal:before {
783
+ content: "\e601"; }
784
+
785
+ .icon-envelope:before {
786
+ content: "\e603"; }
787
+
788
+ .icon-help:before {
789
+ content: "\e602"; }
790
+
791
+ .icon-chat:before {
792
+ content: "\e604"; }
793
+
794
+ .icon-arr-left:before {
795
+ content: "\e605"; }
796
+
797
+ .icon-arr-right:before {
798
+ content: "\e606"; }
799
+
800
+ .icon-arr-up:before {
801
+ content: "\e609"; }
802
+
803
+ .icon-open:before {
804
+ content: "\e608"; }
805
+
806
+ .icon-user:before {
807
+ content: "\e607"; }
808
+
809
+ .icon-tumbler:before {
810
+ content: "\e60a"; }
811
+
812
+ .icon-taxes:before {
813
+ content: "\e60b"; }
814
+
815
+ .icon-ecwid:before {
816
+ content: "\e60c"; }
817
+
818
+ .btn {
819
+ display: inline-block;
820
+ margin: 0;
821
+ border: 1px solid transparent;
822
+ vertical-align: middle;
823
+ text-align: center;
824
+ cursor: pointer;
825
+ outline: 0;
826
+ text-decoration: none;
827
+ white-space: nowrap;
828
+ *display: inline;
829
+ *margin-left: .3em;
830
+ *zoom: 1;
831
+ -moz-box-sizing: border-box;
832
+ box-sizing: border-box;
833
+ font-size: 0.813em;
834
+ padding: 4px 10px;
835
+ border-radius: 3px;
836
+ line-height: 1.7em;
837
+ height: 2.462em;
838
+ min-width: 7.385em;
839
+ color: #333;
840
+ background-color: #f6f6f6;
841
+ border-color: transparent;
842
+ -webkit-transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear;
843
+ transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear; }
844
+ .btn:focus, .btn.focus, .btn.btn-loading, .btn.btn-loading:hover, .btn.btn-loading:focus, .btn.btn-loading:focus:hover, .btn.btn-loading:active, .btn.btn-loading:focus:active, .btn-group.opened .btn.btn-dropdown {
845
+ border-width: 2px;
846
+ padding: 3px 9px; }
847
+ .btn:hover {
848
+ background-color: #c4c4c4; }
849
+ .btn:focus {
850
+ border-color: #acacac; }
851
+ .btn:focus:hover {
852
+ background-color: #c4c4c4; }
853
+ .btn:active {
854
+ background-color: #f7f7f7; }
855
+ .btn:focus:active {
856
+ background-color: #f7f7f7; }
857
+ .btn.btn-loading, .btn.btn-loading:hover, .btn.btn-loading:focus, .btn.btn-loading:focus:hover, .btn.btn-loading:active, .btn.btn-loading:focus:active {
858
+ position: relative;
859
+ background-color: #f7f7f7;
860
+ border-color: transparent;
861
+ overflow: visible; }
862
+ .btn-group.opened .btn.btn-dropdown {
863
+ border-color: #acacac; }
864
+ .btn.btn-loading .loader-inner, .btn.btn-loading .loader-outer, .btn.btn-loading:hover .loader-inner, .btn.btn-loading:hover .loader-outer, .btn.btn-loading:focus .loader-inner, .btn.btn-loading:focus .loader-outer, .btn.btn-loading:focus:hover .loader-inner, .btn.btn-loading:focus:hover .loader-outer, .btn.btn-loading:active .loader-inner, .btn.btn-loading:active .loader-outer, .btn.btn-loading:focus:active .loader-inner, .btn.btn-loading:focus:active .loader-outer {
865
+ fill: #f7f7f7; }
866
+ .btn:first-child {
867
+ *margin-left: 0; }
868
+ .btn[disabled], .btn[disabled]:hover, .btn[disabled]:focus, .btn[disabled]:focus:hover, .btn[disabled]:active, .btn[disabled]:focus:active {
869
+ cursor: default;
870
+ opacity: .3;
871
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
872
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; }
873
+ .btn.btn-loading:before, .btn.btn-loading:hover:before, .btn.btn-loading:focus:before, .btn.btn-loading:focus:hover:before, .btn.btn-loading:active:before, .btn.btn-loading:focus:active:before {
874
+ position: absolute;
875
+ content: "";
876
+ top: 0;
877
+ left: 0;
878
+ width: 100%;
879
+ height: 100%;
880
+ border-radius: inherit;
881
+ background-color: inherit;
882
+ opacity: 1;
883
+ -webkit-transition: opacity .3s ease-out;
884
+ transition: opacity .3s ease-out; }
885
+
886
+ /* buttons' sizes */
887
+ .btn-large {
888
+ font-size: 1.063em;
889
+ padding: 4px 16px;
890
+ border-radius: 5px;
891
+ line-height: 2.118em;
892
+ height: 2.824em;
893
+ min-width: 8.471em; }
894
+ .btn-large:focus, .btn-large.focus, .btn-large.btn.btn-loading, .btn-large.btn.btn-loading:focus:hover, .btn-large.btn.btn-loading:focus:active, .btn-large.btn-default.btn-loading, .btn-large.btn-loading.btn-icon, .btn-large.btn-default.btn-loading:focus:hover, .btn-large.btn-loading.btn-icon:focus:hover, .btn-large.btn-default.btn-loading:focus:active, .btn-large.btn-loading.btn-icon:focus:active, .btn-group.opened .btn-large.btn-dropdown {
895
+ border-width: 2px;
896
+ padding: 3px 15px; }
897
+
898
+ .btn-medium {
899
+ font-size: 0.875em;
900
+ padding: 4px 12px;
901
+ border-radius: 3px;
902
+ line-height: 1.7em;
903
+ height: 2.857em;
904
+ min-width: 8.571em; }
905
+ .btn-medium:focus, .btn-medium.focus, .btn-medium.btn.btn-loading, .btn-medium.btn.btn-loading:focus:hover, .btn-medium.btn.btn-loading:focus:active, .btn-medium.btn-default.btn-loading, .btn-medium.btn-loading.btn-icon, .btn-medium.btn-default.btn-loading:focus:hover, .btn-medium.btn-loading.btn-icon:focus:hover, .btn-medium.btn-default.btn-loading:focus:active, .btn-medium.btn-loading.btn-icon:focus:active, .btn-group.opened .btn-medium.btn-dropdown {
906
+ border-width: 2px;
907
+ padding: 3px 11px; }
908
+
909
+ .btn-small {
910
+ font-size: 0.755em;
911
+ padding: 3px 8px;
912
+ border-radius: 3px;
913
+ line-height: 1.4em;
914
+ height: 2.333em;
915
+ min-width: 7em; }
916
+ .btn-small:focus, .btn-small.focus, .btn-small.btn.btn-loading, .btn-small.btn.btn-loading:focus:hover, .btn-small.btn.btn-loading:focus:active, .btn-small.btn-default.btn-loading, .btn-small.btn-loading.btn-icon, .btn-small.btn-default.btn-loading:focus:hover, .btn-small.btn-loading.btn-icon:focus:hover, .btn-small.btn-default.btn-loading:focus:active, .btn-small.btn-loading.btn-icon:focus:active, .btn-group.opened .btn-small.btn-dropdown {
917
+ border-width: 2px;
918
+ padding: 2px 7px; }
919
+
920
+ /* buttons' types */
921
+ .btn-default, .btn-icon {
922
+ background-color: #f6f6f6;
923
+ color: #333;
924
+ border-color: #cccccc; }
925
+ .btn-default:hover, .btn-icon:hover {
926
+ background-color: #fff;
927
+ color: #137ebe;
928
+ border-color: #89bede; }
929
+ .btn-default:focus, .btn-icon:focus, .btn-default.focus, .focus.btn-icon, .btn-group.opened .btn-icon.btn-dropdown, .btn-group.opened .btn-default.btn-dropdown {
930
+ background-color: #eaf2f7;
931
+ border-color: #b3cad5; }
932
+ .btn-default:focus:hover, .btn-icon:focus:hover {
933
+ background-color: #fff;
934
+ border-color: #137ebe; }
935
+ .btn-default:active, .btn-icon:active {
936
+ background-color: #fff;
937
+ color: #5ebbf3;
938
+ border-color: #aeddf9; }
939
+ .btn-default:focus:active, .btn-icon:focus:active {
940
+ background-color: #fff;
941
+ border-color: #5ebbf3; }
942
+ .btn-default.btn-loading, .btn-loading.btn-icon, .btn-default.btn-loading:hover, .btn-loading.btn-icon:hover, .btn-default.btn-loading:focus, .btn-loading.btn-icon:focus, .btn-default.btn-loading:focus:hover, .btn-loading.btn-icon:focus:hover, .btn-default.btn-loading:active, .btn-loading.btn-icon:active, .btn-default.btn-loading:focus:active, .btn-loading.btn-icon:focus:active {
943
+ position: relative;
944
+ background-color: #aeddf9;
945
+ border-color: #aeddf9;
946
+ overflow: visible; }
947
+ .btn-default.btn-loading .loader-inner, .btn-loading.btn-icon .loader-inner, .btn-default.btn-loading .loader-outer, .btn-loading.btn-icon .loader-outer, .btn-default.btn-loading:hover .loader-inner, .btn-loading.btn-icon:hover .loader-inner, .btn-default.btn-loading:hover .loader-outer, .btn-loading.btn-icon:hover .loader-outer, .btn-default.btn-loading:focus .loader-inner, .btn-loading.btn-icon:focus .loader-inner, .btn-default.btn-loading:focus .loader-outer, .btn-loading.btn-icon:focus .loader-outer, .btn-default.btn-loading:focus:hover .loader-inner, .btn-loading.btn-icon:focus:hover .loader-inner, .btn-default.btn-loading:focus:hover .loader-outer, .btn-loading.btn-icon:focus:hover .loader-outer, .btn-default.btn-loading:active .loader-inner, .btn-loading.btn-icon:active .loader-inner, .btn-default.btn-loading:active .loader-outer, .btn-loading.btn-icon:active .loader-outer, .btn-default.btn-loading:focus:active .loader-inner, .btn-loading.btn-icon:focus:active .loader-inner, .btn-default.btn-loading:focus:active .loader-outer, .btn-loading.btn-icon:focus:active .loader-outer {
948
+ fill: #aeddf9; }
949
+
950
+ .btn-default[disabled], [disabled].btn-icon, .btn-default[disabled]:hover, [disabled].btn-icon:hover, .btn-default[disabled]:focus, [disabled].btn-icon:focus, .btn-default[disabled]:focus:hover, [disabled].btn-icon:focus:hover, .btn-default[disabled]:active, [disabled].btn-icon:active, .btn-default[disabled]:focus:active, [disabled].btn-icon:focus:active {
951
+ background-color: #f6f6f6;
952
+ color: #333;
953
+ border-color: transparent;
954
+ border-color: #cccccc; }
955
+
956
+ .btn-alt {
957
+ background-color: #fff;
958
+ color: #333; }
959
+ .btn-alt:hover {
960
+ background-color: #edf8ff;
961
+ color: #137ebe; }
962
+ .btn-alt:active {
963
+ background-color: #fff;
964
+ color: #54bfd6; }
965
+ .btn-alt:focus {
966
+ border-color: #fff;
967
+ background-color: #d3e6f1; }
968
+ .btn-alt:focus:hover {
969
+ background-color: #dce6ed; }
970
+ .btn-alt:focus:active {
971
+ background-color: #fff; }
972
+
973
+ .btn-alt[disabled], .btn-alt[disabled]:hover, .btn-alt[disabled]:focus, .btn-alt[disabled]:focus:hover, .btn-alt[disabled]:active, .btn-alt[disabled]:focus:active {
974
+ background-color: #fff;
975
+ color: #333;
976
+ border-color: transparent; }
977
+
978
+ /* btn-primary */
979
+ .btn-primary,
980
+ .ecwid-button .btn-primary {
981
+ color: #fff;
982
+ background-color: #189dee;
983
+ border-color: transparent; }
984
+ .btn-primary:hover {
985
+ background-color: #137dbe; }
986
+ .btn-primary:focus {
987
+ border-color: #106da6; }
988
+ .btn-primary:focus:hover {
989
+ background-color: #137dbe; }
990
+ .btn-primary:active {
991
+ background-color: #46b0f1; }
992
+ .btn-primary:focus:active {
993
+ background-color: #46b0f1; }
994
+ .btn-primary.btn.btn-loading, .btn-primary.btn.btn-loading:focus:hover, .btn-primary.btn.btn-loading:focus:active, .btn-primary.btn-default.btn-loading, .btn-primary.btn-loading.btn-icon, .btn-primary.btn-default.btn-loading:focus:hover, .btn-primary.btn-loading.btn-icon:focus:hover, .btn-primary.btn-default.btn-loading:focus:active, .btn-primary.btn-loading.btn-icon:focus:active {
995
+ position: relative;
996
+ background-color: #46b0f1;
997
+ border-color: transparent;
998
+ overflow: visible; }
999
+ .btn-group.opened .btn-primary.btn-dropdown {
1000
+ border-color: #106da6; }
1001
+ .btn-primary.btn-loading .loader-inner, .btn-primary.btn-loading .loader-outer, .btn-primary.btn-loading:hover .loader-inner, .btn-primary.btn-loading:hover .loader-outer, .btn-primary.btn-loading:focus .loader-inner, .btn-primary.btn-loading:focus .loader-outer, .btn-primary.btn-loading:focus:hover .loader-inner, .btn-primary.btn-loading:focus:hover .loader-outer, .btn-primary.btn-loading:active .loader-inner, .btn-primary.btn-loading:active .loader-outer, .btn-primary.btn-loading:focus:active .loader-inner, .btn-primary.btn-loading:focus:active .loader-outer {
1002
+ fill: #46b0f1; }
1003
+
1004
+ .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled]:focus:hover, .btn-primary[disabled]:active, .btn-primary[disabled]:focus:active {
1005
+ background-color: #189dee;
1006
+ color: #fff;
1007
+ border-color: transparent; }
1008
+
1009
+ /* btn-success */
1010
+ .btn-success,
1011
+ .ecwid-button .btn-success {
1012
+ color: #fff;
1013
+ background-color: #64a52f;
1014
+ border-color: transparent; }
1015
+ .btn-success:hover {
1016
+ background-color: #508425; }
1017
+ .btn-success:focus {
1018
+ border-color: #467320; }
1019
+ .btn-success:focus:hover {
1020
+ background-color: #508425; }
1021
+ .btn-success:active {
1022
+ background-color: #83b758; }
1023
+ .btn-success:focus:active {
1024
+ background-color: #83b758; }
1025
+ .btn-success.btn.btn-loading, .btn-success.btn.btn-loading:focus:hover, .btn-success.btn.btn-loading:focus:active, .btn-success.btn-default.btn-loading, .btn-success.btn-loading.btn-icon, .btn-success.btn-default.btn-loading:focus:hover, .btn-success.btn-loading.btn-icon:focus:hover, .btn-success.btn-default.btn-loading:focus:active, .btn-success.btn-loading.btn-icon:focus:active {
1026
+ position: relative;
1027
+ background-color: #83b758;
1028
+ border-color: transparent;
1029
+ overflow: visible; }
1030
+ .btn-group.opened .btn-success.btn-dropdown {
1031
+ border-color: #467320; }
1032
+ .btn-success.btn-loading .loader-inner, .btn-success.btn-loading .loader-outer, .btn-success.btn-loading:hover .loader-inner, .btn-success.btn-loading:hover .loader-outer, .btn-success.btn-loading:focus .loader-inner, .btn-success.btn-loading:focus .loader-outer, .btn-success.btn-loading:focus:hover .loader-inner, .btn-success.btn-loading:focus:hover .loader-outer, .btn-success.btn-loading:active .loader-inner, .btn-success.btn-loading:active .loader-outer, .btn-success.btn-loading:focus:active .loader-inner, .btn-success.btn-loading:focus:active .loader-outer {
1033
+ fill: #83b758; }
1034
+
1035
+ .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled]:focus:hover, .btn-success[disabled]:active, .btn-success[disabled]:focus:active {
1036
+ background-color: #64a52f;
1037
+ color: #fff;
1038
+ border-color: transparent; }
1039
+
1040
+ /* btn-info */
1041
+ .btn-info {
1042
+ color: #fff;
1043
+ background-color: #1baecd;
1044
+ border-color: transparent; }
1045
+ .btn-info:hover {
1046
+ background-color: #158ba4; }
1047
+ .btn-info:focus {
1048
+ border-color: #12798f; }
1049
+ .btn-info:focus:hover {
1050
+ background-color: #158ba4; }
1051
+ .btn-info:active {
1052
+ background-color: #48bed7; }
1053
+ .btn-info:focus:active {
1054
+ background-color: #48bed7; }
1055
+ .btn-info.btn.btn-loading, .btn-info.btn.btn-loading:focus:hover, .btn-info.btn.btn-loading:focus:active, .btn-info.btn-default.btn-loading, .btn-info.btn-loading.btn-icon, .btn-info.btn-default.btn-loading:focus:hover, .btn-info.btn-loading.btn-icon:focus:hover, .btn-info.btn-default.btn-loading:focus:active, .btn-info.btn-loading.btn-icon:focus:active {
1056
+ position: relative;
1057
+ background-color: #48bed7;
1058
+ border-color: transparent;
1059
+ overflow: visible; }
1060
+ .btn-group.opened .btn-info.btn-dropdown {
1061
+ border-color: #12798f; }
1062
+ .btn-info.btn-loading .loader-inner, .btn-info.btn-loading .loader-outer, .btn-info.btn-loading:hover .loader-inner, .btn-info.btn-loading:hover .loader-outer, .btn-info.btn-loading:focus .loader-inner, .btn-info.btn-loading:focus .loader-outer, .btn-info.btn-loading:focus:hover .loader-inner, .btn-info.btn-loading:focus:hover .loader-outer, .btn-info.btn-loading:active .loader-inner, .btn-info.btn-loading:active .loader-outer, .btn-info.btn-loading:focus:active .loader-inner, .btn-info.btn-loading:focus:active .loader-outer {
1063
+ fill: #48bed7; }
1064
+
1065
+ .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:focus:hover, .btn-info[disabled]:active, .btn-info[disabled]:focus:active {
1066
+ background-color: #1baecd;
1067
+ color: #fff;
1068
+ border-color: transparent; }
1069
+
1070
+ /* btn-info-light */
1071
+ .btn-info-light {
1072
+ color: #fff;
1073
+ background-color: #99d5e1;
1074
+ border-color: transparent; }
1075
+ .btn-info-light:hover {
1076
+ background-color: #7aaab4; }
1077
+ .btn-info-light:focus {
1078
+ border-color: #6b959d; }
1079
+ .btn-info-light:focus:hover {
1080
+ background-color: #7aaab4; }
1081
+ .btn-info-light:active {
1082
+ background-color: #addde7; }
1083
+ .btn-info-light:focus:active {
1084
+ background-color: #addde7; }
1085
+ .btn-info-light.btn.btn-loading, .btn-info-light.btn.btn-loading:focus:hover, .btn-info-light.btn.btn-loading:focus:active, .btn-info-light.btn-default.btn-loading, .btn-info-light.btn-loading.btn-icon, .btn-info-light.btn-default.btn-loading:focus:hover, .btn-info-light.btn-loading.btn-icon:focus:hover, .btn-info-light.btn-default.btn-loading:focus:active, .btn-info-light.btn-loading.btn-icon:focus:active {
1086
+ position: relative;
1087
+ background-color: #addde7;
1088
+ border-color: transparent;
1089
+ overflow: visible; }
1090
+ .btn-group.opened .btn-info-light.btn-dropdown {
1091
+ border-color: #6b959d; }
1092
+ .btn-info-light.btn-loading .loader-inner, .btn-info-light.btn-loading .loader-outer, .btn-info-light.btn-loading:hover .loader-inner, .btn-info-light.btn-loading:hover .loader-outer, .btn-info-light.btn-loading:focus .loader-inner, .btn-info-light.btn-loading:focus .loader-outer, .btn-info-light.btn-loading:focus:hover .loader-inner, .btn-info-light.btn-loading:focus:hover .loader-outer, .btn-info-light.btn-loading:active .loader-inner, .btn-info-light.btn-loading:active .loader-outer, .btn-info-light.btn-loading:focus:active .loader-inner, .btn-info-light.btn-loading:focus:active .loader-outer {
1093
+ fill: #addde7; }
1094
+
1095
+ .btn-info-light[disabled], .btn-info-light[disabled]:hover, .btn-info-light[disabled]:focus, .btn-info-light[disabled]:focus:hover, .btn-info-light[disabled]:active, .btn-info-light[disabled]:focus:active {
1096
+ background-color: #99d5e1;
1097
+ color: #fff;
1098
+ border-color: transparent; }
1099
+
1100
+ /* btn-warning */
1101
+ .btn-warning {
1102
+ color: #fff;
1103
+ background-color: #bfa454;
1104
+ border-color: transparent; }
1105
+ .btn-warning:hover {
1106
+ background-color: #988343; }
1107
+ .btn-warning:focus {
1108
+ border-color: #85723a; }
1109
+ .btn-warning:focus:hover {
1110
+ background-color: #988343; }
1111
+ .btn-warning:active {
1112
+ background-color: #cbb676; }
1113
+ .btn-warning:focus:active {
1114
+ background-color: #cbb676; }
1115
+ .btn-warning.btn.btn-loading, .btn-warning.btn.btn-loading:focus:hover, .btn-warning.btn.btn-loading:focus:active, .btn-warning.btn-default.btn-loading, .btn-warning.btn-loading.btn-icon, .btn-warning.btn-default.btn-loading:focus:hover, .btn-warning.btn-loading.btn-icon:focus:hover, .btn-warning.btn-default.btn-loading:focus:active, .btn-warning.btn-loading.btn-icon:focus:active {
1116
+ position: relative;
1117
+ background-color: #cbb676;
1118
+ border-color: transparent;
1119
+ overflow: visible; }
1120
+ .btn-group.opened .btn-warning.btn-dropdown {
1121
+ border-color: #85723a; }
1122
+ .btn-warning.btn-loading .loader-inner, .btn-warning.btn-loading .loader-outer, .btn-warning.btn-loading:hover .loader-inner, .btn-warning.btn-loading:hover .loader-outer, .btn-warning.btn-loading:focus .loader-inner, .btn-warning.btn-loading:focus .loader-outer, .btn-warning.btn-loading:focus:hover .loader-inner, .btn-warning.btn-loading:focus:hover .loader-outer, .btn-warning.btn-loading:active .loader-inner, .btn-warning.btn-loading:active .loader-outer, .btn-warning.btn-loading:focus:active .loader-inner, .btn-warning.btn-loading:focus:active .loader-outer {
1123
+ fill: #cbb676; }
1124
+
1125
+ .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled]:focus:hover, .btn-warning[disabled]:active, .btn-warning[disabled]:focus:active {
1126
+ background-color: #bfa454;
1127
+ color: #fff;
1128
+ border-color: transparent; }
1129
+
1130
+ /* btn-inverse */
1131
+ .btn-inverse, .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active {
1132
+ color: #333; }
1133
+
1134
+ /* icons on btn */
1135
+ .btn [class*="icon-"] {
1136
+ color: inherit;
1137
+ padding-right: 0.688em;
1138
+ vertical-align: text-top;
1139
+ font-size: 1.143em;
1140
+ margin-top: 1px;
1141
+ opacity: .8; }
1142
+
1143
+ .btn-left-caret [class*="icon-"] {
1144
+ float: left;
1145
+ margin-top: 4px;
1146
+ padding-right: 8px; }
1147
+
1148
+ .btn-small.btn-left-caret [class*="icon-"] {
1149
+ float: left;
1150
+ margin-top: 1px;
1151
+ padding-right: 7px; }
1152
+
1153
+ .btn-medium.btn-left-caret [class*="icon-"] {
1154
+ float: left;
1155
+ margin-top: 4px; }
1156
+
1157
+ .btn-large.btn-left-caret [class*="icon-"] {
1158
+ float: left;
1159
+ margin-top: 8px;
1160
+ padding-right: 10px; }
1161
+
1162
+ /* btn-icon */
1163
+ .btn-icon {
1164
+ min-width: 40px; }
1165
+ .btn-icon.btn-large {
1166
+ min-width: 60px; }
1167
+ .btn-icon.btn-medium {
1168
+ min-width: 45px; }
1169
+ .btn-icon.btn-small {
1170
+ min-width: 30px; }
1171
+ .btn-icon [class*='icon-'] {
1172
+ padding: 0; }
1173
+
1174
+ /* button group */
1175
+ .btn-group {
1176
+ position: relative;
1177
+ display: inline-block;
1178
+ vertical-align: middle; }
1179
+ .btn-group > .btn {
1180
+ position: relative;
1181
+ float: left; }
1182
+ .btn-group > .btn:focus {
1183
+ outline: 0;
1184
+ z-index: 1; }
1185
+
1186
+ .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
1187
+ margin-left: -1px; }
1188
+
1189
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.btn-dropdown) {
1190
+ border-radius: 0; }
1191
+
1192
+ .btn-group > .btn:first-child {
1193
+ margin-left: 0; }
1194
+ .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
1195
+ border-top-right-radius: 0;
1196
+ border-bottom-right-radius: 0; }
1197
+
1198
+ .btn-group > .btn:last-child:not(:first-child), .btn-group > .btn-dropdown:not(:first-child) {
1199
+ border-top-left-radius: 0;
1200
+ border-bottom-left-radius: 0; }
1201
+
1202
+ .btn-group .btn-dropdown {
1203
+ min-width: 30px;
1204
+ vertical-align: middle; }
1205
+ .btn-group .btn-dropdown [class*='icon-'] {
1206
+ font-size: .3em;
1207
+ vertical-align: middle;
1208
+ margin-top: -2px;
1209
+ padding: 0; }
1210
+
1211
+ .btn-group .list-dropdown {
1212
+ top: 100%;
1213
+ right: 0;
1214
+ margin: 2px 0 0 0;
1215
+ box-shadow: 0 1px 4px #b5b5b5;
1216
+ display: none; }
1217
+
1218
+ .opened > .list-dropdown {
1219
+ display: block; }
1220
+
1221
+ .btn-group .btn-dropdown {
1222
+ border-left-color: rgba(255, 255, 255, 0.6); }
1223
+ .btn-group .btn-dropdown.btn-default, .btn-group .btn-dropdown.btn-icon {
1224
+ border-color: #cccccc; }
1225
+
1226
+ .normalized .form-control, .normalized .input-prefix-suffix {
1227
+ display: inline-block;
1228
+ width: 100%;
1229
+ vertical-align: middle;
1230
+ outline: 0;
1231
+ border: 1px solid #c7c7c7;
1232
+ background-color: #fafbfc;
1233
+ color: #606060;
1234
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.07);
1235
+ -moz-box-sizing: border-box;
1236
+ box-sizing: border-box;
1237
+ font-size: 0.813em;
1238
+ padding: 4px 8px;
1239
+ border-radius: 3px;
1240
+ line-height: 1.75em;
1241
+ height: 2.462em;
1242
+ -webkit-transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear, box-shadow 0.1s linear;
1243
+ transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear, box-shadow 0.1s linear; }
1244
+ .normalized .form-control:focus, .normalized .input-prefix-suffix:focus, .normalized .form-control.focus, .normalized .focus.input-prefix-suffix {
1245
+ border-width: 2px;
1246
+ padding: 3px 7px; }
1247
+ .normalized .form-control:hover, .normalized .input-prefix-suffix:hover {
1248
+ background-color: #fff; }
1249
+ .normalized .form-control:focus, .normalized .input-prefix-suffix:focus, .normalized .form-control.focus, .normalized .focus.input-prefix-suffix, .normalized .form-control:active, .normalized .input-prefix-suffix:active, .normalized .form-control.active, .normalized .active.input-prefix-suffix {
1250
+ background-color: #fff;
1251
+ border-color: #0c92e3;
1252
+ color: #606060;
1253
+ box-shadow: 0 0 4px #d1eafa; }
1254
+ .normalized .form-control[disabled], .normalized [disabled].input-prefix-suffix, .normalized .form-control[readonly], .normalized [readonly].input-prefix-suffix, .normalized .form-control[disabled]:hover, .normalized [disabled].input-prefix-suffix:hover, .normalized .form-control[disabled]:focus, .normalized [disabled].input-prefix-suffix:focus, .normalized .form-control[disabled]:focus:hover, .normalized [disabled].input-prefix-suffix:focus:hover, .normalized .form-control[disabled]:active, .normalized [disabled].input-prefix-suffix:active, .normalized .form-control[disabled]:focus:active, .normalized [disabled].input-prefix-suffix:focus:active {
1255
+ background-color: #eeeeee;
1256
+ border-color: #c7c7c7;
1257
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.07);
1258
+ cursor: not-allowed; }
1259
+
1260
+ .normalized .form-control::-moz-placeholder, .normalized .input-prefix-suffix::-moz-placeholder {
1261
+ color: #606060;
1262
+ opacity: .6; }
1263
+
1264
+ .normalized .form-control::-webkit-input-placeholder, .normalized .input-prefix-suffix::-webkit-input-placeholder {
1265
+ color: #606060;
1266
+ opacity: .6; }
1267
+
1268
+ .normalized .form-control::-ms-input-placeholder, .normalized .input-prefix-suffix::-ms-input-placeholder {
1269
+ color: #606060;
1270
+ opacity: .6; }
1271
+
1272
+ .normalized .has-error .form-control, .normalized .has-error .input-prefix-suffix {
1273
+ border: 2px solid #fa5111;
1274
+ padding: 4px 7px;
1275
+ color: #cf3e07;
1276
+ background-color: #ffeaea;
1277
+ box-shadow: none;
1278
+ -webkit-transition: background 0.15s linear, color 0.15s linear, border-color 0.15s linear, box-shadow 0.15s linear;
1279
+ transition: background 0.15s linear, color 0.15s linear, border-color 0.15s linear, box-shadow 0.15s linear; }
1280
+
1281
+ .normalized .has-error .form-control:hover, .normalized .has-error .input-prefix-suffix:hover {
1282
+ background-color: #fff; }
1283
+
1284
+ .normalized .has-error .form-control:focus, .normalized .has-error .input-prefix-suffix:focus {
1285
+ background-color: #fff;
1286
+ box-shadow: 0 0 4px #F5C0C0; }
1287
+
1288
+ .normalized .has-success .form-control, .normalized .has-success .input-prefix-suffix {
1289
+ border: 2px solid #468847;
1290
+ padding: 4px 7px;
1291
+ background-color: #eaffea;
1292
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1293
+ color: #468847;
1294
+ transition: background 0.15s linear, color 0.15s linear, border-color 0.15s linear, box-shadow 0.15s linear;
1295
+ -webkit-transition: background 0.15s linear, color 0.15s linear, border-color 0.15s linear, box-shadow 0.15s linear; }
1296
+
1297
+ .normalized .has-success .form-control:focus, .normalized .has-success .input-prefix-suffix:focus {
1298
+ background-color: #fff;
1299
+ box-shadow: 0 0 4px #88c889; }
1300
+
1301
+ .loader svg {
1302
+ height: 100%;
1303
+ width: 100%; }
1304
+
1305
+ [class*="loading"] .loader .spin-left {
1306
+ -webkit-animation: spinleft 1s infinite linear;
1307
+ animation: spinleft 1s infinite linear; }
1308
+
1309
+ [class*="loading"] .loader .spin-right {
1310
+ -webkit-animation: spinright 0.5s infinite linear;
1311
+ animation: spinright 0.5s infinite linear; }
1312
+
1313
+ .btn .loader {
1314
+ position: absolute;
1315
+ width: 100%;
1316
+ height: 160%;
1317
+ top: -30%;
1318
+ left: 0;
1319
+ display: none;
1320
+ z-index: 1;
1321
+ overflow: hidden;
1322
+ -webkit-animation: fadein .1s 1 linear;
1323
+ animation: fadein .1s 1 linear; }
1324
+ .btn .loader .ecwid-spinner {
1325
+ margin: 0 auto;
1326
+ height: 100%;
1327
+ height: -webkit-calc(100% + 0px);
1328
+ width: -webkit-calc(100% + 0px); }
1329
+
1330
+ .btn-loading .loader {
1331
+ display: block; }
css/landing_old.css ADDED
@@ -0,0 +1,496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* http://meyerweb.com/eric/tools/css/reset/
2
+ * v2.0 | 20110126
3
+ * License: none (public domain) */
4
+ html, body, div, span, applet, object, iframe,
5
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6
+ a, abbr, acronym, address, big, cite, code,
7
+ del, dfn, em, img, ins, kbd, q, s, samp,
8
+ small, strike, strong, sub, sup, tt, var,
9
+ b, u, i, center,
10
+ dl, dt, dd, ol, ul, li,
11
+ fieldset, form, label, legend,
12
+ table, caption, tbody, tfoot, thead, tr, th, td,
13
+ article, aside, canvas, details, embed,
14
+ figure, figcaption, footer, header, hgroup,
15
+ menu, nav, output, ruby, section, summary,
16
+ time, mark, audio, video, button {
17
+ margin: 0;
18
+ padding: 0;
19
+ border: 0;
20
+ font-size: 100%;
21
+ font: inherit;
22
+ box-sizing: border-box;
23
+ vertical-align: baseline; }
24
+
25
+ /* HTML5 display-role reset for older browsers */
26
+ article, aside, details, figcaption, figure,
27
+ footer, header, hgroup, menu, nav, section {
28
+ display: block; }
29
+
30
+ body {
31
+ line-height: 1; }
32
+
33
+ ol, ul {
34
+ list-style: none; }
35
+
36
+ blockquote, q {
37
+ quotes: none; }
38
+
39
+ blockquote:before, blockquote:after,
40
+ q:before, q:after {
41
+ content: "";
42
+ content: none; }
43
+
44
+ table {
45
+ border-collapse: collapse;
46
+ border-spacing: 0; }
47
+
48
+ body {
49
+ font-family: "Open sans", sans-serif;
50
+ font-weight: 400;
51
+ color: #363636;
52
+ min-width: 320px; }
53
+
54
+ .ecwid-thank {
55
+ padding-top: 36px; }
56
+ .ecwid-thank h1 {
57
+ text-align: center;
58
+ font-size: 28px;
59
+ color: #000000;
60
+ line-height: 1.4;
61
+ margin-bottom: 30px; }
62
+ @media (max-width: 767px) {
63
+ .ecwid-thank h1 {
64
+ font-size: 22px;
65
+ max-width: 490px;
66
+ padding: 0 2%;
67
+ margin: 0 auto 15px; }
68
+ .ecwid-thank h1 br {
69
+ display: none; } }
70
+ @media (max-width: 500px) {
71
+ .ecwid-thank h1 {
72
+ max-width: 320px; } }
73
+ .ecwid-thank h1 span {
74
+ display: block;
75
+ font-size: 14px;
76
+ margin-bottom: 14px; }
77
+
78
+ .ecwid-thank-steps {
79
+ margin: 0 auto 51px;
80
+ max-width: 1000px; }
81
+ @media (max-width: 767px) {
82
+ .ecwid-thank-steps {
83
+ max-width: 450px;
84
+ margin-bottom: 0;
85
+ padding: 0 2%; } }
86
+ .ecwid-thank-steps:after {
87
+ content: "";
88
+ display: table;
89
+ clear: both; }
90
+
91
+ .ecwid-thank-step {
92
+ text-align: center;
93
+ width: 33.33333%;
94
+ float: left;
95
+ position: relative;
96
+ padding: 0 2%; }
97
+ .ecwid-thank-step.active .ecwid-thank-step-image:before {
98
+ position: absolute;
99
+ content: url("../images/landing/correct.svg");
100
+ width: 17px;
101
+ left: 61%; }
102
+ .ecwid-thank-step.active .ecwid-thank-step-image img.none-active {
103
+ display: none; }
104
+ .ecwid-thank-step.active .ecwid-thank-step-image img.active {
105
+ display: inline-block; }
106
+ @media (max-width: 767px) {
107
+ .ecwid-thank-step {
108
+ display: none; } }
109
+ .ecwid-thank-step .ecwid-thank-step-image {
110
+ height: 92px;
111
+ position: relative; }
112
+ .ecwid-thank-step .ecwid-thank-step-image:after {
113
+ content: "";
114
+ position: absolute;
115
+ overflow: hidden; }
116
+ @media (min-width: 768px) {
117
+ .ecwid-thank-step .ecwid-thank-step-image:after {
118
+ top: 40px;
119
+ left: 77%;
120
+ width: 64%;
121
+ height: 7px;
122
+ background: url("../images/landing/arrow.png") center right; } }
123
+ .ecwid-thank-step img {
124
+ margin: 3px 0 10px; }
125
+ .ecwid-thank-step img.active {
126
+ display: none; }
127
+ .ecwid-thank-step h2 {
128
+ font-size: 18px;
129
+ line-height: 1.5;
130
+ margin-bottom: 6px; }
131
+ .ecwid-thank-step p {
132
+ font-size: 14px;
133
+ line-height: 1.5; }
134
+ .ecwid-thank-step.ecwid-thank-step-one img {
135
+ height: 77px; }
136
+ .ecwid-thank-step.ecwid-thank-step-two img {
137
+ height: 60px;
138
+ margin-top: 13px; }
139
+ .ecwid-thank-step.ecwid-thank-step-three .ecwid-thank-step-image:after {
140
+ display: none; }
141
+ .ecwid-thank-step.ecwid-thank-step-three h2 {
142
+ font-weight: 600; }
143
+ .ecwid-thank-step.ecwid-thank-step-three img {
144
+ height: 82px; }
145
+
146
+ .ecwid-thank-background {
147
+ background: url("../images/landing/background-think.jpg");
148
+ background-size: cover; }
149
+ @media (min-width: 768px) {
150
+ .ecwid-thank-background {
151
+ background-position: center bottom; } }
152
+ @media (min-width: 1440px) {
153
+ .ecwid-thank-background {
154
+ background-position: left -50px; } }
155
+ .ecwid-thank-background .ecwid-thank-background-tablet {
156
+ padding: 52px 5% 0; }
157
+ .ecwid-thank-background .ecwid-thank-background-tablet img {
158
+ display: block;
159
+ margin: 0 auto;
160
+ max-width: 100%; }
161
+
162
+ .ecwid-description {
163
+ padding: 0 2%; }
164
+ .ecwid-description:after {
165
+ content: "";
166
+ display: table;
167
+ clear: both; }
168
+
169
+ .ecwid-description-inner {
170
+ max-width: 930px;
171
+ margin: 0 auto;
172
+ table-layout: fixed;
173
+ width: 100%; }
174
+ @media (min-width: 768px) {
175
+ .ecwid-description-inner {
176
+ display: table;
177
+ padding-top: 35px; } }
178
+ @media (min-width: 992px) {
179
+ .ecwid-description-inner {
180
+ padding-top: 95px; } }
181
+ @media (max-width: 767px) {
182
+ .ecwid-description-inner {
183
+ display: -webkit-flex;
184
+ display: -ms-flexbox;
185
+ display: flex;
186
+ -webkit-flex-direction: column-reverse;
187
+ -ms-flex-direction: column-reverse;
188
+ flex-direction: column-reverse; } }
189
+
190
+ .ecwid-description-image {
191
+ padding-right: 5%;
192
+ vertical-align: bottom; }
193
+ @media (min-width: 768px) {
194
+ .ecwid-description-image {
195
+ display: table-cell;
196
+ width: 60%; } }
197
+ @media (min-width: 992px) {
198
+ .ecwid-description-image {
199
+ width: 65%; } }
200
+ @media (max-width: 767px) {
201
+ .ecwid-description-image {
202
+ width: 100%;
203
+ padding: 0 4%; } }
204
+ .ecwid-description-image img {
205
+ display: block;
206
+ max-width: 100%; }
207
+ @media (max-width: 767px) {
208
+ .ecwid-description-image img {
209
+ margin: 0 auto; } }
210
+
211
+ .ecwid-description-text {
212
+ padding-top: 35px;
213
+ padding-bottom: 35px; }
214
+ @media (min-width: 768px) {
215
+ .ecwid-description-text {
216
+ width: 40%;
217
+ display: table-cell;
218
+ vertical-align: middle; } }
219
+ @media (min-width: 992px) {
220
+ .ecwid-description-text {
221
+ width: 35%;
222
+ vertical-align: baseline; } }
223
+ @media (max-width: 767px) {
224
+ .ecwid-description-text {
225
+ padding: 44px 4% 0;
226
+ max-width: 500px;
227
+ margin: 0 auto 50px;
228
+ width: 100%; } }
229
+ .ecwid-description-text h2 {
230
+ line-height: 1.2;
231
+ margin-bottom: 18px; }
232
+ @media (min-width: 768px) {
233
+ .ecwid-description-text h2 {
234
+ font-size: 24px; } }
235
+ @media (min-width: 992px) {
236
+ .ecwid-description-text h2 {
237
+ font-size: 28px; } }
238
+ @media (max-width: 767px) {
239
+ .ecwid-description-text h2 {
240
+ font-size: 22px;
241
+ text-align: center; } }
242
+ .ecwid-description-text p {
243
+ font-size: 14px;
244
+ line-height: 1.5;
245
+ padding: 0.8em 0; }
246
+
247
+ .ecwid-features {
248
+ background-color: #F4F4F4;
249
+ padding: 44px 0 60px; }
250
+ @media (max-width: 767px) {
251
+ .ecwid-features {
252
+ padding-bottom: 9px; } }
253
+ .ecwid-features h2 {
254
+ font-size: 28px;
255
+ color: #1F1F1F;
256
+ font-weight: 400;
257
+ text-align: center;
258
+ margin-bottom: 62px; }
259
+ @media (max-width: 767px) {
260
+ .ecwid-features h2 {
261
+ font-size: 22px;
262
+ margin-bottom: 40px; } }
263
+
264
+ .ecwid-features-inner {
265
+ margin: 0 auto;
266
+ max-width: 930px;
267
+ padding: 0 3%; }
268
+
269
+ .ecwid-features-top {
270
+ margin-bottom: 70px; }
271
+ @media (max-width: 767px) {
272
+ .ecwid-features-top {
273
+ margin-bottom: 0; } }
274
+ .ecwid-features-top:after {
275
+ content: "";
276
+ display: table;
277
+ clear: both; }
278
+ .ecwid-features-top .ecwid-features-top-item {
279
+ width: 50%;
280
+ float: left;
281
+ text-align: center; }
282
+ @media (max-width: 767px) {
283
+ .ecwid-features-top .ecwid-features-top-item {
284
+ padding: 0 2%;
285
+ width: 100%;
286
+ max-width: 320px;
287
+ margin: 0 auto 35px;
288
+ float: none; } }
289
+ .ecwid-features-top .ecwid-features-top-item .ecwid-features-top-item-image {
290
+ height: 82px; }
291
+ @media (max-width: 767px) {
292
+ .ecwid-features-top .ecwid-features-top-item .ecwid-features-top-item-image {
293
+ height: 75px; } }
294
+ .ecwid-features-top .ecwid-features-top-item img {
295
+ height: 61px;
296
+ margin-bottom: 36px; }
297
+ @media (max-width: 767px) {
298
+ .ecwid-features-top .ecwid-features-top-item img {
299
+ margin-bottom: 20px; } }
300
+ .ecwid-features-top .ecwid-features-top-item img.gift {
301
+ height: 80px;
302
+ margin-top: -10px; }
303
+ .ecwid-features-top .ecwid-features-top-item h3 {
304
+ font-size: 21px;
305
+ font-weight: 600;
306
+ margin-bottom: 15px; }
307
+ @media (max-width: 767px) {
308
+ .ecwid-features-top .ecwid-features-top-item h3 {
309
+ font-size: 18px;
310
+ margin-bottom: 6px; } }
311
+ .ecwid-features-top .ecwid-features-top-item p {
312
+ font-size: 14px;
313
+ line-height: 1.45; }
314
+ @media (max-width: 767px) {
315
+ .ecwid-features-top .ecwid-features-top-item p {
316
+ font-size: 13px; } }
317
+
318
+ .ecwid-features-bottom:after {
319
+ content: "";
320
+ display: table;
321
+ clear: both; }
322
+ .ecwid-features-bottom .ecwid-features-bottom-item {
323
+ width: 33.33333%;
324
+ float: left;
325
+ text-align: center; }
326
+ @media (max-width: 767px) {
327
+ .ecwid-features-bottom .ecwid-features-bottom-item {
328
+ float: none;
329
+ width: 100%;
330
+ max-width: 270px;
331
+ margin: 0 auto 35px; } }
332
+ .ecwid-features-bottom .ecwid-features-bottom-item .ecwid-features-bottom-item-image {
333
+ height: 82px; }
334
+ @media (max-width: 767px) {
335
+ .ecwid-features-bottom .ecwid-features-bottom-item .ecwid-features-bottom-item-image {
336
+ height: 75px; } }
337
+ .ecwid-features-bottom .ecwid-features-bottom-item img {
338
+ height: 63px;
339
+ margin-bottom: 17px; }
340
+ .ecwid-features-bottom .ecwid-features-bottom-item img.secure {
341
+ height: 67px; }
342
+ @media (min-width: 768px) {
343
+ .ecwid-features-bottom .ecwid-features-bottom-item img.secure {
344
+ margin-top: -8px; } }
345
+ .ecwid-features-bottom .ecwid-features-bottom-item h3 {
346
+ font-size: 18px;
347
+ font-weight: 600;
348
+ margin-bottom: 6px; }
349
+ .ecwid-features-bottom .ecwid-features-bottom-item p {
350
+ font-size: 14px;
351
+ line-height: 1.45; }
352
+ @media (max-width: 767px) {
353
+ .ecwid-features-bottom .ecwid-features-bottom-item p {
354
+ font-size: 13px; }
355
+ .ecwid-features-bottom .ecwid-features-bottom-item p br {
356
+ display: none; } }
357
+
358
+ .ecwid-start {
359
+ text-align: center;
360
+ padding: 64px 0 194px; }
361
+ @media (max-width: 767px) {
362
+ .ecwid-start {
363
+ padding: 44px 0 64px; }
364
+ .ecwid-start .ecwid-button .button {
365
+ margin-bottom: 29px; } }
366
+ .ecwid-start:after {
367
+ content: "";
368
+ display: table;
369
+ clear: both; }
370
+ .ecwid-start h2 {
371
+ font-size: 28px;
372
+ line-height: 1.4;
373
+ margin-bottom: 32px; }
374
+ @media (max-width: 767px) {
375
+ .ecwid-start h2 {
376
+ font-size: 22px;
377
+ padding: 0 2%;
378
+ margin-bottom: 1px; } }
379
+
380
+ .ecwid-button {
381
+ text-align: center; }
382
+ .ecwid-button a,
383
+ .ecwid-button button {
384
+ background-image: none; }
385
+ .ecwid-button .button {
386
+ border-radius: 4px;
387
+ border: 0;
388
+ font-size: 20px;
389
+ color: #ffffff;
390
+ line-height: 2.6;
391
+ letter-spacing: 0.01em;
392
+ padding: 0.12em 1.5em;
393
+ margin-bottom: 46px;
394
+ outline: none;
395
+ cursor: pointer; }
396
+ @media (max-width: 767px) {
397
+ .ecwid-button .button {
398
+ font-size: 18px;
399
+ margin-top: 25px;
400
+ margin-bottom: 14px;
401
+ padding: 0.12em 1em; } }
402
+ @media (max-width: 500px) {
403
+ .ecwid-button .button {
404
+ font-size: 16px; } }
405
+ .ecwid-button .button:hover {
406
+ opacity: 0.8; }
407
+ .ecwid-button .button.button--blue {
408
+ background-color: #189DEE; }
409
+ .ecwid-button .button.button--green {
410
+ background-color: #59BB00; }
411
+ .ecwid-button .button-description-mobile {
412
+ font-size: 12px;
413
+ line-height: 1.5;
414
+ margin-bottom: 38px;
415
+ color: #999; }
416
+ .ecwid-button .button-description-mobile h3 {
417
+ font-size: 18px;
418
+ color: #363636;
419
+ font-weight: 600;
420
+ margin-bottom: -70px; }
421
+ @media (min-width: 768px) {
422
+ .ecwid-button .button-description-mobile {
423
+ display: none; } }
424
+ .ecwid-button .ecwid-button-description {
425
+ font-size: 14px; }
426
+ .ecwid-button .ecwid-button-description a {
427
+ display: block;
428
+ font-size: 20px;
429
+ color: #288FB5;
430
+ margin-top: 12px;
431
+ text-decoration: none; }
432
+ .ecwid-button .ecwid-button-description a:hover {
433
+ opacity: 0.8; }
434
+ @media (max-width: 767px) {
435
+ .ecwid-button .ecwid-button-description a {
436
+ margin-bottom: 10px;
437
+ font-size: 18px; } }
438
+
439
+
440
+ /*
441
+ * Adapt landing to wordpress actual environment
442
+ */
443
+ .ecwid-button .button {
444
+ height: auto;
445
+ }
446
+
447
+ #wpcontent {
448
+ background: white;
449
+ padding-left: 0px;
450
+ }
451
+ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu>li.current>a.current:after
452
+ {
453
+ border-right-color:white;
454
+ }
455
+
456
+ .ecwid-landing.register .on-connect {
457
+ display: none;
458
+ }
459
+
460
+
461
+ .ecwid-landing.connect .on-register {
462
+ display: none;
463
+ }
464
+
465
+ .ecwid-landing .on-error {
466
+ display: none;
467
+ }
468
+
469
+ .ecwid-landing.conn-error .on-error {
470
+ display: inherit;
471
+ }
472
+
473
+ .ecwid-landing.conn-error .on-no-error {
474
+ display: none;
475
+ }
476
+
477
+ .ecwid-button .ecwid-connection-error {
478
+ color: red;
479
+ }
480
+
481
+ @media (min-width: 768px) {
482
+ .ecwid-button .ecwid-connection-error {
483
+ position: relative;
484
+ top: -30px;
485
+ margin-bottom: 8px;
486
+ }
487
+ }
488
+
489
+ .ecwid-landing a:focus {
490
+ outline: 0px none;
491
+ box-shadow: none;
492
+ }
493
+
494
+ .ecwid-landing .button:hover {
495
+ color: white;
496
+ }
css/settings.css CHANGED
@@ -327,7 +327,6 @@ display: none;
327
  .ecwid-admin .box {
328
  position: relative;
329
  margin-top: 25px;
330
- padding: 0 15px;
331
 
332
  border: 1px solid #E5E5E5;
333
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
@@ -359,7 +358,7 @@ display: none;
359
  }
360
 
361
  .ecwid-admin .head {
362
- border-bottom: 1px solid #EEE;
363
  height: 70px;
364
  }
365
 
@@ -401,11 +400,12 @@ display: none;
401
 
402
 
403
  .ecwid-connect.ecwid-reconnect .box .greeting-message {
404
- margin-bottom: inherit;
405
  }
406
 
407
  .ecwid-connect .box .connect-button {
408
  margin-top: 8px;
 
409
  }
410
  .ecwid-connect .where-to-find-store-id {
411
  margin-top: 25px;
@@ -437,7 +437,6 @@ display: none;
437
  padding: 14px 40px;
438
  border: 0px none;
439
  border-radius: 4px;
440
- width: 180px;
441
 
442
  background: #59bb00;
443
  color: white;
@@ -447,6 +446,8 @@ display: none;
447
 
448
  transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear;
449
  display: inline-block;
 
 
450
  }
451
 
452
  .ecwid-connect .box .connect-button a:hover {
@@ -742,8 +743,4 @@ display: none;
742
  top: 46px;
743
  bottom: 0px;
744
  }
745
- }
746
-
747
- .ecwid-admin-footer {
748
- padding: 0 20px;
749
- }
327
  .ecwid-admin .box {
328
  position: relative;
329
  margin-top: 25px;
 
330
 
331
  border: 1px solid #E5E5E5;
332
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
358
  }
359
 
360
  .ecwid-admin .head {
361
+ border-bottom: 1px solid #E5E5E5;
362
  height: 70px;
363
  }
364
 
400
 
401
 
402
  .ecwid-connect.ecwid-reconnect .box .greeting-message {
403
+ margin-bottom: 15px;
404
  }
405
 
406
  .ecwid-connect .box .connect-button {
407
  margin-top: 8px;
408
+ margin-bottom: 15px;
409
  }
410
  .ecwid-connect .where-to-find-store-id {
411
  margin-top: 25px;
437
  padding: 14px 40px;
438
  border: 0px none;
439
  border-radius: 4px;
 
440
 
441
  background: #59bb00;
442
  color: white;
446
 
447
  transition: color 0.1s linear, background-color 0.1s linear, border-color 0.1s linear;
448
  display: inline-block;
449
+
450
+ white-space: nowrap;
451
  }
452
 
453
  .ecwid-connect .box .connect-button a:hover {
743
  top: 46px;
744
  bottom: 0px;
745
  }
746
+ }
 
 
 
 
css/themes/accesspress-mag.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ html#ecwid_html body#ecwid_body .ecwid .ecwid-btn--secondary,
2
+ html#ecwid_html body#ecwid_body .ecwid-SearchPanel-button {
3
+ color: #333 !important;
4
+ }
5
+ html#ecwid_html body#ecwid_body .ecwid .ecwid-btn--secondary:hover {
6
+ color: #fff !important;
7
+ }
ecwid-shopping-cart.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.ecwid.com?source=wporg
5
  Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
6
  Text Domain: ecwid-shopping-cart
7
  Author: Ecwid Team
8
- Version: 4.1
9
  Author URI: http://www.ecwid.com?source=wporg
10
  */
11
 
@@ -20,11 +20,15 @@ define ('ECWID_TRIMMED_DESCRIPTION_LENGTH', 160);
20
 
21
 
22
  if ( ! defined( 'ECWID_PLUGIN_DIR' ) ) {
23
- define( 'ECWID_PLUGIN_DIR', plugin_dir_path( realpath(__FILE__) ) );
 
 
 
 
24
  }
25
 
26
  if ( ! defined( 'ECWID_PLUGIN_URL' ) ) {
27
- define( 'ECWID_PLUGIN_URL', plugin_dir_url( realpath(__FILE__) ) );
28
  }
29
 
30
  // Older versions of Google XML Sitemaps plugin generate it in admin, newer in site area, so the hook should be assigned in both of them
@@ -56,7 +60,8 @@ if ( is_admin() ){
56
  add_action('wp_ajax_ecwid_hide_message', 'ecwid_ajax_hide_message');
57
  add_action('wp_ajax_save-widget', 'ecwid_ajax_save_widget');
58
  add_action('wp_ajax_ecwid_reset_categories_cache', 'ecwid_reset_categories_cache');
59
- add_filter('plugin_action_links_ecwid-shopping-cart/ecwid-shopping-cart.php', 'ecwid_plugin_actions');
 
60
  add_action('admin_head', 'ecwid_ie8_fonts_inclusion');
61
  add_action('admin_head', 'ecwid_send_stats');
62
  add_action('save_post', 'ecwid_save_post');
@@ -101,15 +106,16 @@ if (get_option('ecwid_last_oauth_fail_time') > 0) {
101
 
102
  $ecwid_script_rendered = false; // controls single script.js on page
103
 
104
- require_once ECWID_PLUGIN_DIR . '/includes/themes.php';
105
- require_once ECWID_PLUGIN_DIR . '/includes/oembed.php';
106
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-message-manager.php';
107
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-store-editor.php';
108
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-oauth.php';
109
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-kissmetrics.php';
 
110
 
111
- require_once ECWID_PLUGIN_DIR . '/lib/ecwid_platform.php';
112
- require_once ECWID_PLUGIN_DIR . '/lib/ecwid_api_v3.php';
113
 
114
 
115
  function ecwid_init_integrations()
@@ -123,7 +129,7 @@ function ecwid_init_integrations()
123
 
124
  foreach ($integrations as $key => $plugin) {
125
  if ( is_plugin_active($plugin) ) {
126
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-integration-' . $key . '.php';
127
  }
128
  }
129
  }
@@ -206,7 +212,7 @@ function ecwid_ie8_fonts_inclusion()
206
  {
207
  if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8') === false) return;
208
 
209
- $url = ECWID_PLUGIN_URL . '/fonts/ecwid-logo.eot';
210
  echo <<<HTML
211
  <style>
212
  @font-face {
@@ -225,13 +231,13 @@ add_action('wp_ajax_nopriv_ecwid_get_product_info', 'ecwid_ajax_get_product_info
225
  function ecwid_enqueue_frontend() {
226
 
227
  wp_enqueue_script('jquery-ui-widget');
228
- wp_register_script('ecwid-products-list-js', plugins_url('ecwid-shopping-cart/js/products-list.js'), array('jquery-ui-widget'), get_option('ecwid_plugin_version'));
229
- wp_register_style('ecwid-products-list-css', plugins_url('ecwid-shopping-cart/css/products-list.css'), array(), get_option('ecwid_plugin_version'));
230
- wp_enqueue_style('ecwid-css', plugins_url('ecwid-shopping-cart/css/frontend.css'),array(), get_option('ecwid_plugin_version'));
231
- wp_enqueue_style('ecwid-fonts-css', plugins_url('ecwid-shopping-cart/css/fonts.css'), array(), get_option('ecwid_plugin_version'));
232
 
233
  if (function_exists('wp_get_document_title')) {
234
- wp_enqueue_script( 'ecwid-frontend-js', plugins_url( 'ecwid-shopping-cart/js/frontend.js' ), array( 'jquery' ), get_option( 'ecwid_plugin_version' ) );
235
 
236
  global $ecwid_seo_title_mode;
237
 
@@ -275,7 +281,7 @@ function ecwid_enqueue_frontend() {
275
  }
276
 
277
  if (is_active_widget(false, false, 'ecwidrecentlyviewed')) {
278
- wp_enqueue_script('ecwid-recently-viewed', plugins_url('ecwid-shopping-cart/js/recently-viewed-common.js'), array('jquery', 'utils'), get_option('ecwid_plugin_version'), true);
279
 
280
  wp_localize_script(
281
  'ecwid-products-list-js',
@@ -359,7 +365,7 @@ function ecwid_build_sitemap($callback)
359
  $page_id = ecwid_get_current_store_page_id();
360
 
361
  if (get_post_status($page_id) == 'publish') {
362
- require_once ECWID_PLUGIN_DIR . '/includes/class-ecwid-sitemap-builder.php';
363
 
364
  $sitemap = new EcwidSitemapBuilder(ecwid_get_store_page_url(), $callback, ecwid_new_product_api());
365
 
@@ -621,60 +627,48 @@ TEXT;
621
  $body = __($body, 'ecwid-shopping-cart');
622
  $body = sprintf($body, $theme, $store_url);
623
 
 
 
 
 
 
 
624
  $wp_admin_bar->add_menu(array(
625
- 'id' => 'ecwid-report-problem',
626
- 'title' => __( 'Report a problem with the store', 'ecwid-shopping-cart' ),
627
- 'parent' => 'ecwid-main',
628
- 'href' => 'mailto:wordpress@ecwid.com?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body),
629
- 'meta' => array(
630
- 'target' => '_blank'
631
  )
632
- ));
 
 
 
 
 
 
 
 
633
 
634
- $wp_admin_bar->add_menu( array(
635
- 'id' => 'ecwid-main',
636
- 'title' => '<span class="ab-icon ecwid-top-menu-item"></span>',
637
- 'href' => 'admin.php?page=ecwid',
638
- ));
639
  $wp_admin_bar->add_menu(array(
640
  "id" => "ecwid-help",
641
- "title" => __("Get help", 'ecwid-shopping-cart'),
642
  "parent" => "ecwid-main",
643
- 'href' => __('https://help.ecwid.com', 'ecwid-shopping-cart'),
644
  'meta' => array(
645
  'target' => '_blank'
646
  )
647
  )
648
  );
649
- $wp_admin_bar->add_menu(array(
650
- "id" => "ecwid-home",
651
- "title" => __("Go to Ecwid site", 'ecwid-shopping-cart'),
652
- "parent" => "ecwid-main",
653
- 'href' => 'http://www.ecwid.com?source=wporg'
654
- )
655
- );
656
- $wp_admin_bar->add_menu(array(
657
- "id" => "ecwid-go-to-page",
658
- "title" => __("Visit storefront", 'ecwid-shopping-cart'),
659
- "parent" => "ecwid-main",
660
- 'href' => ecwid_get_store_page_url()
661
- )
662
- );
663
- $wp_admin_bar->add_menu(array(
664
- "id" => "ecwid-control-panel",
665
- "title" => __("Manage my store", 'ecwid-shopping-cart'),
666
- "parent" => "ecwid-main",
667
- 'href' => admin_url('admin.php?page=ecwid')
668
- )
669
- );
670
- $wp_admin_bar->add_menu(array(
671
- "id" => "ecwid-fb-app",
672
- "title" => __("→ Sell on Facebook", 'ecwid-shopping-cart'),
673
- "parent" => "ecwid-main",
674
- 'href' => 'http://apps.facebook.com/ecwid-shop/?fb_source=wp'
675
- )
676
- );
677
 
 
 
 
 
 
 
 
 
 
678
  }
679
 
680
  function ecwid_content_has_productbrowser($content) {
@@ -891,6 +885,7 @@ function ecwid_seo_title_parts($parts)
891
  function ecwid_ajax_seo_title()
892
  {
893
  $title = _ecwid_get_seo_title();
 
894
  $template = $_GET['title_template'];
895
 
896
  $result = str_replace('ECWID_SEO_TITLE', $title, $template);
@@ -977,10 +972,10 @@ function ecwid_content_started($content)
977
 
978
  function ecwid_wrap_shortcode_content($content, $name, $attrs)
979
  {
980
- return "<!-- Ecwid shopping cart plugin v 4.1 --><!-- noptimize -->"
981
  . ecwid_get_scriptjs_code(@$attrs['lang'])
982
  . "<div class=\"ecwid-shopping-cart-$name\">$content</div>"
983
- . "<!-- /noptimize --><!-- END Ecwid Shopping Cart v 4.1 -->";
984
  }
985
 
986
  function ecwid_get_scriptjs_code($force_lang = null) {
@@ -1232,6 +1227,10 @@ function ecwid_shortcode($attributes)
1232
 
1233
  function ecwid_productbrowser_shortcode($shortcode_params) {
1234
 
 
 
 
 
1235
  $atts = shortcode_atts(
1236
  array(
1237
  'categories_per_row' => false,
@@ -1301,8 +1300,8 @@ function ecwid_productbrowser_shortcode($shortcode_params) {
1301
 
1302
  if (ecwid_can_display_html_catalog()) {
1303
  $params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
1304
- include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/ecwid_product_api.php';
1305
- include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/ecwid_catalog.php';
1306
 
1307
  $page_url = get_page_link();
1308
 
@@ -1383,6 +1382,10 @@ function ecwid_override_jsexclude($exclude)
1383
  }
1384
 
1385
  function ecwid_store_activate() {
 
 
 
 
1386
  $my_post = array();
1387
  $content = <<<EOT
1388
  [ecwid widgets="productbrowser minicart categories search" grid="3,3" list="10" table="20" default_category_id="0" category_view="grid" search_view="grid" minicart_layout="MiniAttachToProductBrowser" ]
@@ -1760,43 +1763,45 @@ function ecwid_admin_orders_do_page() {
1760
 
1761
  function ecwid_register_admin_styles($hook_suffix) {
1762
 
1763
- $api = new Ecwid_Api_V3(get_ecwid_store_id());
1764
- $api->get_category(array('categoryId' => 82007));
1765
 
1766
- wp_enqueue_style('ecwid-admin-css', plugins_url('ecwid-shopping-cart/css/admin.css'), array(), get_option('ecwid_plugin_version'));
1767
- wp_enqueue_style('ecwid-fonts-css', plugins_url('ecwid-shopping-cart/css/fonts.css'), array(), get_option('ecwid_plugin_version'));
1768
 
1769
  if (version_compare(get_bloginfo('version'), '3.8-beta') > 0) {
1770
- wp_enqueue_style('ecwid-admin38-css', plugins_url('ecwid-shopping-cart/css/admin.3.8.css'), array('ecwid-admin-css'), get_option('ecwid_plugin_version'), 'all');
1771
  }
1772
 
1773
  if (isset($_GET['page']) && $_GET['page'] == 'ecwid') {
1774
 
1775
  if (get_option('ecwid_store_id') == ECWID_DEMO_STORE_ID) {
1776
  // Open dashboard for the first time, ecwid store id is set to demo => need landing styles/scripts
1777
- wp_enqueue_script('ecwid-landing-js', plugins_url('ecwid-shopping-cart/js/landing.js'), array(), get_option('ecwid_plugin_version'));
1778
  wp_localize_script('ecwid-landing-js', 'ecwidParams', array(
1779
  'register_link' => ecwid_get_register_link()
1780
  ));
1781
- wp_enqueue_style('ecwid-landing-css', plugins_url('ecwid-shopping-cart/css/landing.css'), array(), get_option('ecwid_plugin_version'), 'all');
 
 
 
 
1782
  wp_enqueue_style('ecwid-landing-fonts', 'http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300', array(), get_option('ecwid_plugin_version'));
1783
  } else {
1784
  // We already connected and disconnected the store, no need for fancy landing
1785
- wp_enqueue_script('ecwid-connect-js', plugins_url('ecwid-shopping-cart/js/dashboard.js'), array(), get_option('ecwid_plugin_version'));
1786
  }
1787
  }
1788
 
1789
- wp_enqueue_style('ecwid-nav-menu', plugins_url('ecwid-shopping-cart/css/nav-menu.css'), array(), get_option('ecwid_plugin_version'));
1790
  }
1791
 
1792
  function ecwid_register_settings_styles($hook_suffix) {
1793
 
1794
  if ( ($hook_suffix != 'post.php' && $hook_suffix != 'post-new.php') && strpos($hook_suffix, 'ecwid') === false) return;
1795
 
1796
- wp_enqueue_style('ecwid-settings-css', plugins_url('ecwid-shopping-cart/css/settings.css'), array(), get_option('ecwid_plugin_version'), 'all');
1797
 
1798
  if (version_compare(get_bloginfo('version'), '3.8-beta') > 0) {
1799
- wp_enqueue_style('ecwid-settings38-css', plugins_url('ecwid-shopping-cart/css/settings.3.8.css'), array('ecwid-settings-css'), '', 'all');
1800
  }}
1801
 
1802
  function ecwid_plugin_actions($links) {
@@ -1860,8 +1865,8 @@ function ecwid_settings_api_init() {
1860
 
1861
  function ecwid_common_admin_scripts() {
1862
 
1863
- wp_enqueue_script('ecwid-admin-js', plugins_url('ecwid-shopping-cart/js/admin.js'), array(), get_option('ecwid_plugin_version'));
1864
- wp_enqueue_script('ecwid-modernizr-js', plugins_url('ecwid-shopping-cart/js/modernizr.js'), array(), get_option('ecwid_plugin_version'));
1865
 
1866
  if (function_exists('get_current_screen') ) {
1867
  $screen = get_current_screen();
@@ -1870,18 +1875,20 @@ function ecwid_common_admin_scripts() {
1870
  EcwidPlatform::set('nav-menus-opened-once', null);
1871
 
1872
  $first_run = false;
 
1873
  if (EcwidPlatform::get('nav-menus-opened-once', false) < 2) {
1874
  EcwidPlatform::set('nav-menus-opened-once', EcwidPlatform::get('nav-menus-opened-once') + 1);
1875
  $first_run = EcwidPlatform::get('nav-menus-opened-once') <= 2;
1876
  }
1877
 
1878
- wp_enqueue_script('ecwid-admin-menu-js', plugins_url('ecwid-shopping-cart/js/nav-menu.js'), array(), get_option('ecwid_plugin_version'));
1879
  wp_localize_script('ecwid-admin-menu-js', 'ecwid_params', array(
1880
  'store_page' => __('Store Page', 'ecwid-shopping-cart'),
1881
  'reset_cats_cache' => __('Refresh categories list', 'ecwid-shopping-cart'),
1882
  'cache_updated' => __('Done', 'ecwid-shopping-cart'),
1883
  'reset_cache_message' => __('The store top-level categories are automatically added to this drop-down menu', 'ecwid-shopping-cart'),
1884
- 'first_run' => $first_run
 
1885
  ));
1886
  }
1887
 
@@ -1928,6 +1935,25 @@ function ecwid_get_register_link()
1928
  return $link;
1929
  }
1930
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1931
  function ecwid_general_settings_do_page() {
1932
 
1933
  $store_id = get_option( 'ecwid_store_id' );
@@ -1937,19 +1963,28 @@ function ecwid_general_settings_do_page() {
1937
  if ( $store_id == ECWID_DEMO_STORE_ID ) {
1938
  $no_oauth = @$_GET['oauth'] == 'no';
1939
  if ( isset( $connection_error ) && $no_oauth ) {
1940
- require_once ECWID_PLUGIN_DIR . '/templates/connect.php';
1941
  } else {
1942
  $register = ! $connection_error && ! isset( $_GET['connect'] ) && ! @$_COOKIE['ecwid_create_store_clicked'];
1943
 
1944
- Ecwid_Kissmetrics::record( 'Welcome Page Viewed' );
1945
- require_once( ECWID_PLUGIN_DIR . '/templates/landing.php' );
 
 
 
 
 
 
 
 
 
1946
  }
1947
  } else {
1948
  global $ecwid_oauth;
1949
 
1950
  if ( !$ecwid_oauth->has_scope( 'allow_sso' ) && !isset($_GET['reconnect']) ) {
1951
  if ( ecwid_test_oauth(true) ) {
1952
- require_once ECWID_PLUGIN_DIR . '/templates/reconnect-sso.php';
1953
  } else {
1954
  require_once ECWID_PLUGIN_DIR . 'templates/dashboard.php';
1955
  }
@@ -1965,9 +2000,9 @@ function ecwid_general_settings_do_page() {
1965
 
1966
  $connection_error = isset($_GET['connection_error']);
1967
 
1968
- require_once ECWID_PLUGIN_DIR . '/templates/reconnect.php';
1969
  } else {
1970
- $time = time();
1971
  $page = 'dashboard';
1972
  $iframe_src = sprintf(
1973
  'https://my.ecwid.com/api/v3/%s/sso?token=%s&timestamp=%s&signature=%s&place=%s&inline&lang=%s',
@@ -1981,10 +2016,35 @@ function ecwid_general_settings_do_page() {
1981
 
1982
  $result = EcwidPlatform::fetch_url( $iframe_src );
1983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1984
  if ( is_array( $result ) && $result['code'] == 200 ) {
1985
  ecwid_admin_do_page( 'dashboard' );
1986
  } else {
1987
- require_once ECWID_PLUGIN_DIR . '/templates/reconnect-sso.php';
1988
  }
1989
  }
1990
  }
@@ -1997,9 +2057,12 @@ function ecwid_admin_do_page( $page ) {
1997
 
1998
  if ($page == 'dashboard') {
1999
  $show_reconnect = true;
 
 
 
2000
  }
2001
 
2002
- $time = time();
2003
 
2004
  $iframe_src = sprintf(
2005
  'https://my.ecwid.com/api/v3/%s/sso?token=%s&timestamp=%s&signature=%s&place=%s&inline&lang=%s',
@@ -2020,49 +2083,7 @@ function ecwid_admin_do_page( $page ) {
2020
  require_once ECWID_PLUGIN_DIR . 'templates/dashboard.php';
2021
  }
2022
  } else {
2023
- require_once ECWID_PLUGIN_DIR . '/templates/ecwid-admin.php';
2024
- }
2025
- }
2026
-
2027
- function _ecwid_general_settings_do_page() {
2028
-
2029
- $connection_error = isset( $_GET['connection_error'] );
2030
-
2031
- $no_oauth = isset( $_GET['oauth'] ) && @$_GET['oauth'] == 'no';
2032
-
2033
- if ( ! $no_oauth ) {
2034
- $no_oauth = !ecwid_test_oauth();
2035
- }
2036
-
2037
- global $ecwid_oauth;
2038
-
2039
- if ( get_option( 'ecwid_store_id' ) != ECWID_DEMO_STORE_ID && ! $ecwid_oauth->has_scope( 'allow_sso' ) && !isset($_GET['connection_error']) && !$no_oauth ) {
2040
- require_once ECWID_PLUGIN_DIR . '/templates/reconnect-sso.php';
2041
-
2042
- } else if (get_option('ecwid_store_id') == ECWID_DEMO_STORE_ID && !$no_oauth) {
2043
-
2044
- $register = !$connection_error && !isset($_GET['connect']) && !@$_COOKIE['ecwid_create_store_clicked'];
2045
-
2046
- require_once(ECWID_PLUGIN_DIR . '/templates/landing.php');
2047
- } else if (isset($_GET['reconnect'])) {
2048
- if (isset($_GET['reason'])) switch ($_GET['reason']) {
2049
- case '1': $reconnect_message = "Message 1"; break;
2050
- case '2': $reconnect_message = "Message 2"; break;
2051
- }
2052
-
2053
- $scopes = '';
2054
-
2055
- $connection_error = isset($_GET['connection_error']);
2056
-
2057
- require_once ECWID_PLUGIN_DIR . '/templates/reconnect.php';
2058
- } else if (get_ecwid_store_id() == ECWID_DEMO_STORE_ID && ( isset($_GET['connection_error']) || $no_oauth ) ) {
2059
-
2060
- require_once ECWID_PLUGIN_DIR . '/templates/connect.php';
2061
- } else if ( get_option( 'ecwid_last_oauth_fail_time' ) > 0 ) {
2062
- require_once ECWID_PLUGIN_DIR . '/templates/dashboard.php';
2063
- } else {
2064
-
2065
- ecwid_admin_do_page( 'dashboard' );
2066
  }
2067
  }
2068
 
@@ -2147,59 +2168,37 @@ function ecwid_test_oauth($force = false)
2147
  }
2148
 
2149
  function ecwid_get_categories_for_selector() {
2150
- $categories = false;
2151
- if (ecwid_is_paid_account()) {
2152
- $api = ecwid_new_product_api();
2153
- $categories = $api->get_all_categories();
2154
- $by_id = array();
2155
-
2156
- if (empty($categories)) return array();
2157
 
2158
- if (is_array($categories)) {
2159
- foreach ($categories as $key => $category) {
2160
- $by_id[$category['id']] = $category;
2161
- }
2162
- }
2163
- unset($categories);
2164
-
2165
- foreach ($by_id as $id => $category) {
2166
- $name_path = array($category['name']);
2167
- while (is_array($category) && isset($category['parentId'])) {
2168
- $name = '';
2169
- if (isset($by_id[$category['parentId']])) {
2170
- $name = $by_id[$category['parentId']]['name'];
2171
- } else {
2172
- $name = __('Hidden category', 'ecwid-shopping-cart');
2173
- }
2174
- $name_path[] = $name;
2175
- $category = isset($by_id[$category['parentId']]) ? $by_id[$category['parentId']] : false;
2176
- }
2177
-
2178
- $by_id[$id]['path'] = array_reverse($name_path);
2179
- $by_id[$id]['path_str'] = implode(" > ", $by_id[$id]['path']);
2180
  }
 
2181
 
2182
- function sort_by_path($a, $b) {
2183
- return strcmp($a['path_str'], $b['path_str']);
 
 
 
2184
  }
2185
 
2186
- uasort($by_id, 'sort_by_path');
2187
-
2188
- $categories = $by_id;
2189
  }
2190
 
2191
- return $categories;
 
 
2192
  }
2193
 
2194
  function ecwid_advanced_settings_do_page() {
2195
  $categories = ecwid_get_categories_for_selector();
2196
 
2197
- require_once ECWID_PLUGIN_DIR . '/templates/advanced-settings.php';
2198
  }
2199
 
2200
  function ecwid_appearance_settings_do_page() {
2201
 
2202
- wp_register_script('ecwid-appearance-js', plugins_url('ecwid-shopping-cart/js/appearance.js'), array(), get_option('ecwid_plugin_version'), true);
2203
  wp_enqueue_script('ecwid-appearance-js');
2204
 
2205
  $disabled = false;
@@ -2242,12 +2241,10 @@ function ecwid_get_debug_file() {
2242
  }
2243
 
2244
  function get_ecwid_store_id() {
2245
- static $store_id = null;
2246
- if (is_null($store_id)) {
2247
- $store_id = get_option('ecwid_store_id');
2248
- if (empty($store_id))
2249
- $store_id = ECWID_DEMO_STORE_ID;
2250
- }
2251
 
2252
  return $store_id;
2253
  }
@@ -2367,519 +2364,6 @@ function ecwid_get_product_browser_url_script()
2367
 
2368
  }
2369
 
2370
- class EcwidBadgeWidget extends WP_Widget {
2371
-
2372
- var $url_template = "https://dj925myfyz5v.cloudfront.net/badges/%s.png";
2373
- var $available_badges;
2374
-
2375
- function __construct() {
2376
- $widget_ops = array('classname' => 'widget_ecwid_badge', 'description' => __("Do you like Ecwid and want to help it grow? You can add this fancy 'Powered by Ecwid' badge on your site to show your visitors that you're a proud user of Ecwid.", 'ecwid-shopping-cart') );
2377
- parent::__construct('ecwidbadge', __('Ecwid Badge', 'ecwid-shopping-cart'), $widget_ops);
2378
-
2379
- $this->available_badges = array(
2380
- 'ecwid-shopping-cart-widget-5' => array (
2381
- 'name' => 'ecwid-shopping-cart-widget-5',
2382
- 'width' => '73',
2383
- 'height' => '20',
2384
- 'alt' => __('Ecwid shopping cart widget', 'ecwid-shopping-cart')
2385
- ),
2386
- 'ecwid-shopping-cart-widget-6' => array (
2387
- 'name' => 'ecwid-shopping-cart-widget-6',
2388
- 'width' => '73',
2389
- 'height' => '20',
2390
- 'alt' => __('Ecwid shopping cart widget', 'ecwid-shopping-cart')
2391
- ),
2392
- 'ecwid-ecommerce-solution-2' => array (
2393
- 'name' => 'ecwid-ecommerce-solution-2',
2394
- 'width' => '165',
2395
- 'height' => '58',
2396
- 'alt' => __('Ecwid ecommerce solution', 'ecwid-shopping-cart')
2397
- ),
2398
- 'ecwid-free-shopping-cart-2' => array (
2399
- 'name' => 'ecwid-free-shopping-cart-2',
2400
- 'width' => '175',
2401
- 'height' => '58',
2402
- 'alt' => __('Ecwid free shopping cart', 'ecwid-shopping-cart')
2403
- ),
2404
- 'ecwid-shopping-cart-3' => array (
2405
- 'name' => 'ecwid-shopping-cart-3',
2406
- 'width' => '165',
2407
- 'height' => '56',
2408
- 'alt' => __('Ecwid shopping cart', 'ecwid-shopping-cart')
2409
- ),
2410
- 'ecwid-ecommerce-widgets-3' => array (
2411
- 'name' => 'ecwid-ecommerce-widgets-3',
2412
- 'width' => '165',
2413
- 'height' => '58',
2414
- 'alt' => __('Ecwid e-commerce widgets', 'ecwid-shopping-cart')
2415
- ),
2416
- 'ecwid-shopping-cart-3' => array (
2417
- 'name' => 'ecwid-shopping-cart-3',
2418
- 'width' => '165',
2419
- 'height' => '56',
2420
- 'alt' => __('Ecwid shopping cart', 'ecwid-shopping-cart')
2421
- ),
2422
- 'ecwid-ecommerce-widgets-3' => array (
2423
- 'name' => 'ecwid-ecommerce-widgets-3',
2424
- 'width' => '165',
2425
- 'height' => '58',
2426
- 'alt' => __('Ecwid e-commerce widgets', 'ecwid-shopping-cart')
2427
- ),
2428
- 'ecwid-ecommerce-solution-3' => array (
2429
- 'name' => 'ecwid-ecommerce-solution-3',
2430
- 'width' => '165',
2431
- 'height' => '58',
2432
- 'alt' => __('Ecwid ecommerce solution', 'ecwid-shopping-cart')
2433
- ),
2434
- 'ecwid-free-shopping-cart-3' => array (
2435
- 'name' => 'ecwid-free-shopping-cart-3',
2436
- 'width' => '175',
2437
- 'height' => '58',
2438
- 'alt' => __('Ecwid free shopping cart', 'ecwid-shopping-cart')
2439
- )
2440
- );
2441
- }
2442
-
2443
- function widget($args, $instance)
2444
- {
2445
- extract($args);
2446
-
2447
- if (!isset($instance['badge_id']) || !array_key_exists($instance['badge_id'], $this->available_badges)) {
2448
- return;
2449
- }
2450
- $badge = $this->available_badges[$instance['badge_id']];
2451
- $url = sprintf($this->url_template, $badge['name']);
2452
-
2453
- echo $before_widget;
2454
-
2455
- echo <<<HTML
2456
- <div>
2457
- <a target="_blank" rel="nofollow" href="http://www.ecwid.com?source=wporg-badge">
2458
- <img src="$url" width="$badge[width]" height="$badge[height]" alt="$badge[alt]" />
2459
- </a>
2460
- </div>
2461
- HTML;
2462
-
2463
- echo $after_widget;
2464
- }
2465
-
2466
- function update($new_instance, $old_instance){
2467
- $instance = $old_instance;
2468
- $instance['badge_id'] =
2469
- array_key_exists($new_instance['badge_id'], $this->available_badges)
2470
- ? $new_instance['badge_id']
2471
- : '';
2472
-
2473
- return $instance;
2474
- }
2475
-
2476
- function form($instance) {
2477
- $instance = wp_parse_args( (array) $instance, array('badge_id' => 'ecwid-shopping-cart-widget-5') );
2478
-
2479
- foreach ($this->available_badges as $id => $widget) {
2480
- $element_id = "badge-$id";
2481
- $name = $this->get_field_name('badge_id');
2482
- $checked = '';
2483
- if (isset($instance['badge_id']) && $instance['badge_id'] == $id) {
2484
- $checked = 'checked="checked"';
2485
- }
2486
- $url = sprintf($this->url_template, $id);
2487
- $content = <<<HTML
2488
- <label class="ecwid-badge">
2489
- <div class="checkbox">
2490
- <input name="$name" type="radio" value="$widget[name]"$checked/>
2491
- </div>
2492
- <div class="image">
2493
- <img src="$url" width="$widget[width]" height="$widget[height]" alt="$widget[alt]" />
2494
- </div>
2495
- </label>
2496
- HTML;
2497
- echo $content;
2498
- }
2499
- }
2500
- }
2501
-
2502
- class EcwidMinicartWidget extends WP_Widget {
2503
-
2504
- function __construct() {
2505
- $widget_ops = array('classname' => 'widget_ecwid_minicart', 'description' => __("Adds a cart widget for customer to see the products they added to the cart.", 'ecwid-shopping-cart') );
2506
- parent::__construct('ecwidminicart', __('Shopping Cart', 'ecwid-shopping-cart'), $widget_ops);
2507
-
2508
- }
2509
-
2510
- function widget($args, $instance) {
2511
- extract($args);
2512
- $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
2513
-
2514
- echo $before_widget;
2515
-
2516
- if ( $title )
2517
- echo $before_title . $title . $after_title;
2518
-
2519
- echo '<div>';
2520
-
2521
- echo '<!-- noptimize -->';
2522
- echo ecwid_get_scriptjs_code();
2523
- echo ecwid_get_product_browser_url_script();
2524
- echo '<script data-cfasync="false" type="text/javascript"> xMinicart("style="); </script>';
2525
-
2526
- echo '<!-- /noptimize -->';
2527
- echo '</div>';
2528
-
2529
- echo $after_widget;
2530
- }
2531
-
2532
- function update($new_instance, $old_instance){
2533
- $instance = $old_instance;
2534
- $instance['title'] = strip_tags(stripslashes($new_instance['title']));
2535
-
2536
- return $instance;
2537
- }
2538
-
2539
- function form($instance){
2540
- $instance = wp_parse_args( (array) $instance, array('title'=>'') );
2541
-
2542
- $title = htmlspecialchars($instance['title']);
2543
-
2544
- echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
2545
- }
2546
-
2547
- }
2548
-
2549
- class EcwidMinicartMiniViewWidget extends WP_Widget {
2550
-
2551
- function __construct() {
2552
- $widget_ops = array('classname' => 'widget_ecwid_minicart_miniview', 'description' => __("Adds a compact cart widget for customer to see the products they added to the cart.", 'ecwid-shopping-cart') );
2553
- parent::__construct('ecwidminicart_miniview', __('Shopping Cart (Mini)', 'ecwid-shopping-cart'), $widget_ops);
2554
- }
2555
-
2556
- function widget($args, $instance) {
2557
- extract($args);
2558
- $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
2559
-
2560
- echo $before_widget;
2561
-
2562
- if ( $title )
2563
- echo $before_title . $title . $after_title;
2564
-
2565
-
2566
- echo '<div>';
2567
- echo '<!-- noptimize -->';
2568
-
2569
- echo ecwid_get_scriptjs_code();
2570
- echo ecwid_get_product_browser_url_script();
2571
- echo '<script data-cfasync="false" type="text/javascript"> xMinicart("style=left:10px","layout=Mini"); </script>';
2572
-
2573
- echo '<!-- /noptimize -->';
2574
- echo '</div>';
2575
-
2576
- echo $after_widget;
2577
- }
2578
-
2579
- function update($new_instance, $old_instance){
2580
- $instance = $old_instance;
2581
- $instance['title'] = strip_tags(stripslashes($new_instance['title']));
2582
-
2583
- return $instance;
2584
- }
2585
-
2586
- function form($instance){
2587
- $instance = wp_parse_args( (array) $instance, array('title'=>'') );
2588
-
2589
- $title = htmlspecialchars($instance['title']);
2590
-
2591
- echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
2592
- }
2593
-
2594
- }
2595
-
2596
-
2597
- class EcwidSearchWidget extends WP_Widget {
2598
-
2599
- function __construct() {
2600
- $widget_ops = array('classname' => 'widget_ecwid_search', 'description' => __("Displays a simple search box for your customers to find a product in your storex", 'ecwid-shopping-cart'));
2601
- parent::__construct('ecwidsearch', __('Product Search', 'ecwid-shopping-cart'), $widget_ops);
2602
- }
2603
-
2604
- function widget($args, $instance) {
2605
- extract($args);
2606
- $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
2607
-
2608
- echo $before_widget;
2609
-
2610
- if ( $title )
2611
- echo $before_title . $title . $after_title;
2612
-
2613
- echo '<div>';
2614
- echo '<!-- noptimize -->';
2615
-
2616
- echo ecwid_get_scriptjs_code();
2617
- echo ecwid_get_product_browser_url_script();
2618
- echo '<script data-cfasync="false" type="text/javascript"> xSearchPanel("style="); </script>';
2619
-
2620
- echo '<!-- /noptimize -->';
2621
- echo '</div>';
2622
-
2623
- echo $after_widget;
2624
- }
2625
-
2626
- function update($new_instance, $old_instance){
2627
- $instance = $old_instance;
2628
- $instance['title'] = strip_tags(stripslashes($new_instance['title']));
2629
-
2630
- return $instance;
2631
- }
2632
-
2633
- function form($instance){
2634
- $instance = wp_parse_args( (array) $instance, array('title'=>'') );
2635
-
2636
- $title = htmlspecialchars($instance['title']);
2637
-
2638
- echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
2639
- }
2640
-
2641
- }
2642
-
2643
- class EcwidVCategoriesWidget extends WP_Widget {
2644
-
2645
- function __construct() {
2646
- $widget_ops = array('classname' => 'widget_ecwid_vcategories', 'description' => __('Adds vertical categories block to let the customer navigate your store.', 'ecwid-shopping-cart'));
2647
- parent::__construct('ecwidvcategories', __('Store Categories', 'ecwid-shopping-cart'), $widget_ops);
2648
- }
2649
-
2650
- function widget($args, $instance) {
2651
- extract($args);
2652
- $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
2653
-
2654
- echo $before_widget;
2655
-
2656
- if ( $title )
2657
- echo $before_title . $title . $after_title;
2658
-
2659
- echo '<div>';
2660
- echo '<!-- noptimize -->';
2661
-
2662
- echo ecwid_get_scriptjs_code();
2663
- echo ecwid_get_product_browser_url_script();
2664
- echo '<script data-cfasync="false" type="text/javascript"> xVCategories("style="); </script>';
2665
-
2666
- echo '<!-- /noptimize -->';
2667
- echo '</div>';
2668
-
2669
- echo $after_widget;
2670
- }
2671
-
2672
- function update($new_instance, $old_instance){
2673
- $instance = $old_instance;
2674
- $instance['title'] = strip_tags(stripslashes($new_instance['title']));
2675
-
2676
- return $instance;
2677
- }
2678
-
2679
- function form($instance){
2680
- $instance = wp_parse_args( (array) $instance, array('title'=>'') );
2681
-
2682
- $title = htmlspecialchars($instance['title']);
2683
-
2684
- echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
2685
- }
2686
-
2687
- }
2688
-
2689
- class EcwidStoreLinkWidget extends WP_Widget {
2690
-
2691
- function __construct() {
2692
- $widget_ops = array('classname' => 'widget_ecwid_store_link', 'description' => __('Displays a link to the store page in sidebar for customer to quickly access your store from any page on the site.', 'ecwid-shopping-cart'));
2693
- parent::__construct('ecwidstorelink', __('Store Page Link', 'ecwid-shopping-cart'), $widget_ops);
2694
- }
2695
-
2696
- function widget($args, $instance) {
2697
- extract($args);
2698
- echo $before_widget;
2699
-
2700
- echo '<div>';
2701
-
2702
- echo '<a href="' . ecwid_get_store_page_url() . '">' . $instance['label'] . '</a>';
2703
- echo '</div>';
2704
-
2705
- echo $after_widget;
2706
- }
2707
-
2708
- function update($new_instance, $old_instance){
2709
- $instance = $old_instance;
2710
- $instance['label'] = strip_tags(stripslashes($new_instance['label']));
2711
-
2712
- return $instance;
2713
- }
2714
-
2715
- function form($instance){
2716
- $instance = wp_parse_args( (array) $instance, array( 'label' => __('Shop', 'ecwid-shopping-cart') ) );
2717
-
2718
- $label = htmlspecialchars($instance['label']);
2719
-
2720
- echo '<p><label for="' . $this->get_field_name('label') . '">' . __('Text') . ': <input style="width:100%;" id="' . $this->get_field_id('label') . '" name="' . $this->get_field_name('label') . '" type="text" value="' . $label . '" /></label></p>';
2721
- }
2722
-
2723
- }
2724
-
2725
- class EcwidRecentlyViewedWidget extends WP_Widget {
2726
-
2727
- var $max = 10;
2728
- var $min = 1;
2729
- var $default = 3;
2730
- function __construct() {
2731
- $widget_ops = array('classname' => 'widget_ecwid_recently_viewed', 'description' => __('Displays a list of products recently viewed by the customer to easily return to the products they saw in your shop.', 'ecwid-shopping-cart'));
2732
- parent::__construct('ecwidrecentlyviewed', __('Recently Viewed Products', 'ecwid-shopping-cart'), $widget_ops);
2733
- $recently_viewed = json_decode(stripslashes(@$_COOKIE['ecwid-shopping-cart-recently-viewed']));
2734
-
2735
- if ($recently_viewed && $recently_viewed->store_id != get_ecwid_store_id() && !is_admin()) {
2736
- setcookie('ecwid-shopping-cart-recently-viewed', null, strtotime('-1 day'));
2737
- }
2738
- }
2739
-
2740
- function widget($args, $instance) {
2741
-
2742
- wp_enqueue_script('ecwid-recently-viewed-js', plugins_url('ecwid-shopping-cart/js/recently-viewed.js'), array('jquery', 'utils', 'ecwid-products-list-js'), get_option('ecwid_plugin_version'));
2743
- wp_enqueue_style('ecwid-products-list-css');
2744
- wp_enqueue_style('ecwid-recently-viewed-css', plugins_url('ecwid-shopping-cart/css/recently-viewed.css'), array(), get_option('ecwid_plugin_version'));
2745
- extract($args);
2746
-
2747
- $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
2748
-
2749
- echo $before_widget;
2750
-
2751
- if ( $title )
2752
- echo $before_title . $title . $after_title;
2753
-
2754
- echo '<!-- noptimize -->' . ecwid_get_scriptjs_code() . '<!-- /noptimize -->';
2755
-
2756
- $recently_viewed = false;
2757
- if (isset($_COOKIE['ecwid-shopping-cart-recently-viewed'])) {
2758
- $recently_viewed = json_decode($_COOKIE['ecwid-shopping-cart-recently-viewed']);
2759
- }
2760
- $recently_viewed = json_decode(stripslashes(@$_COOKIE['ecwid-shopping-cart-recently-viewed']));
2761
-
2762
- if ($recently_viewed && $recently_viewed->store_id != get_ecwid_store_id()) {
2763
- $recently_viewed = null;
2764
- }
2765
-
2766
- echo '<div class="ecwid-recently-viewed-products" data-ecwid-max="' . $instance['number_of_products'] . '">';
2767
-
2768
-
2769
- $api = false;
2770
- if (ecwid_is_api_enabled()) {
2771
- $api = ecwid_new_product_api();
2772
- }
2773
-
2774
- $counter = 0;
2775
- $ids = array();
2776
- if ($recently_viewed && isset($recently_viewed->products)) {
2777
-
2778
- for ($i = count($recently_viewed->products) - 1; $i >= 0; $i--) {
2779
- $product = $recently_viewed->products[$i];
2780
-
2781
- $counter++;
2782
- if (isset($product->id) && isset($product->link)) {
2783
- $ids[] = $product->id;
2784
- $hide = $counter > $instance['number_of_products'] ? ' hidden' : '';
2785
-
2786
- if ($api) {
2787
- $product_https = $api->get_product_https($product->id);
2788
- }
2789
-
2790
- $name = isset($product_https) ? $product_https['name']: '';
2791
-
2792
- echo <<<HTML
2793
- <a class="product$hide" href="$product->link" alt="$name" title="$name">
2794
- <div class="ecwid ecwid-SingleProduct ecwid-Product ecwid-Product-$product->id" data-single-product-link="$product->link" itemscope itemtype="http://schema.org/Product" data-single-product-id="$product->id">
2795
- <div itemprop="image" data-force-image="$product_https[imageUrl]"></div>
2796
- <div class="ecwid-title" itemprop="name"></div>
2797
- <div itemtype="http://schema.org/Offer" itemscope itemprop="offers"><div class="ecwid-productBrowser-price ecwid-price" itemprop="price"></div></div>
2798
- </div>
2799
-
2800
- <!-- noptimize --><script type="text/javascript">xSingleProduct();</script><!-- /noptimize -->
2801
- </a>
2802
- HTML;
2803
- }
2804
- }
2805
- } else {
2806
- echo <<<HTML
2807
- <script type="text/javascript">
2808
- jQuery(document).ready(function() {
2809
- wpCookies.remove('ecwid-shopping-cart-recently-viewed');
2810
- recently_viewed = {products: []};
2811
- });
2812
- </script>
2813
- HTML;
2814
- }
2815
- $ids_string = '';
2816
- if (!empty($ids)) {
2817
- $ids_string = implode(',', $ids);
2818
- }
2819
-
2820
- echo <<<HTML
2821
- <script type="text/javascript">
2822
- <!--
2823
- jQuery(document).ready(function() {
2824
- jQuery('#$this->id .ecwid-recently-viewed-products').recentlyViewedProducts();
2825
- });
2826
- -->
2827
- </script>
2828
- HTML;
2829
-
2830
- echo "</div>";
2831
-
2832
- $store_link_message = empty($instance['store_link_title']) ? __('You have not viewed any product yet. Open store.', 'ecwid-shopping-cart') : $instance['store_link_title'];
2833
-
2834
- $page_id = ecwid_get_current_store_page_id();
2835
- $post = get_post($page_id);
2836
-
2837
- if (empty($recently_viewed->products)) {
2838
- echo '<a class="show-if-empty" href="' . ecwid_get_store_page_url() . '">' . $store_link_message . '</a>';
2839
- }
2840
-
2841
- echo $after_widget;
2842
- }
2843
-
2844
- function update($new_instance, $old_instance){
2845
- $instance = $old_instance;
2846
- $instance['title'] = strip_tags(stripslashes($new_instance['title']));
2847
- $instance['store_link_title'] = strip_tags(stripslashes($new_instance['store_link_title']));
2848
- $num = intval($new_instance['number_of_products']);
2849
- if ($num > $this->max || $num < $this->min) {
2850
- $num = $this->default;
2851
- }
2852
- $instance['number_of_products'] = intval($new_instance['number_of_products']);
2853
-
2854
- return $instance;
2855
- }
2856
-
2857
- function form($instance){
2858
-
2859
- $instance = wp_parse_args( (array) $instance,
2860
- array(
2861
- 'title' => __('Recently Viewed Products', 'ecwid-shopping-cart'),
2862
- 'store_link_title' => __('You have not viewed any product yet. Open store.', 'ecwid-shopping-cart'),
2863
- 'number_of_products' => 3
2864
- )
2865
- );
2866
-
2867
- $title = htmlspecialchars($instance['title']);
2868
- $store_link_title = htmlspecialchars($instance['store_link_title']);
2869
- $number_of_products = $instance['number_of_products'];
2870
- if ($number_of_products)
2871
-
2872
- echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title') . ': <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
2873
- echo '<p><label for="' . $this->get_field_name('store_link_title') . '">' . __('Store Link Title', 'ecwid-shopping-cart') . ': <input style="width:100%;" id="' . $this->get_field_id('store_link_title') . '" name="' . $this->get_field_name('store_link_title') . '" type="text" value="' . $store_link_title . '" /></label></p>';
2874
- echo '<p><label for="' . $this->get_field_name('number_of_products') . '">' . __( 'Number of products to show', 'ecwid-shopping-cart' ) . ': <input style="width:100%;" id="' . $this->get_field_id('number_of_products') . '" name="' . $this->get_field_name('number_of_products') . '" type="number" min="' . $this->min . '" max="' . $this->max . '" value="' . $number_of_products . '" /></label></p>';
2875
- }
2876
-
2877
- function is_valid_number_of_products($num) {
2878
- return is_numeric($num) && $num <= $this->max && $num >= $this->min;
2879
- }
2880
- }
2881
-
2882
-
2883
  function ecwid_send_stats()
2884
  {
2885
  $storeid = get_ecwid_store_id();
@@ -2972,7 +2456,7 @@ function ecwid_gather_stats()
2972
  if (!empty($results)) {
2973
  $stats = array_merge($stats, $results);
2974
  }
2975
- get_option('ecwid_checked_for_remote_connection_errors', empty($results));
2976
  }
2977
 
2978
  return $stats;
@@ -3021,7 +2505,7 @@ function ecwid_gather_usage_stats()
3021
 
3022
  $usage_stats['is_wp_newbie'] = (bool) (($ecwid_date - $wp_date) / 60 / 60 / 24 <= 30);
3023
 
3024
- $usage_stats['ecwid_remote_get_fails'] = (bool) get_option('ecwid_fetch_url_use_file_get_contents');
3025
 
3026
  $woo = 0;
3027
  $all_plugins = get_plugins();
@@ -3057,18 +2541,6 @@ function ecwid_check_for_remote_connection_errors()
3057
  return $results;
3058
  }
3059
 
3060
- function ecwid_sidebar_widgets_init() {
3061
- register_widget('EcwidMinicartWidget');
3062
- register_widget('EcwidSearchWidget');
3063
- register_widget('EcwidVCategoriesWidget');
3064
- register_widget('EcwidMinicartMiniViewWidget');
3065
- register_widget('EcwidBadgeWidget');
3066
- register_widget('EcwidStoreLinkWidget');
3067
- register_widget('EcwidRecentlyViewedWidget');
3068
- }
3069
-
3070
- add_action('widgets_init', 'ecwid_sidebar_widgets_init');
3071
-
3072
  function ecwid_sso() {
3073
  $key = get_option('ecwid_sso_secret_key');
3074
  if (empty($key)) {
@@ -3221,7 +2693,7 @@ function ecwid_is_api_enabled()
3221
 
3222
  function ecwid_new_product_api()
3223
  {
3224
- include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/ecwid_product_api.php';
3225
  $ecwid_store_id = intval(get_ecwid_store_id());
3226
  $api = new EcwidProductApi($ecwid_store_id);
3227
 
@@ -3229,7 +2701,7 @@ function ecwid_new_product_api()
3229
  }
3230
 
3231
  function ecwid_embed_svg($name) {
3232
- $code = file_get_contents(ECWID_PLUGIN_DIR . '/images/' . $name . '.svg');
3233
 
3234
  echo $code;
3235
  }
@@ -3269,6 +2741,10 @@ function ecwid_find_shortcodes( $content, $tag ) {
3269
  return false;
3270
  }
3271
 
 
 
 
 
3272
  // Since we use shortcode regex in our own functions, we need it to be persistent
3273
  function ecwid_get_shortcode_regex() {
3274
  global $shortcode_tags;
5
  Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
6
  Text Domain: ecwid-shopping-cart
7
  Author: Ecwid Team
8
+ Version: 4.1.2
9
  Author URI: http://www.ecwid.com?source=wporg
10
  */
11
 
20
 
21
 
22
  if ( ! defined( 'ECWID_PLUGIN_DIR' ) ) {
23
+ define( 'ECWID_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
24
+ }
25
+
26
+ if ( ! defined( 'ECWID_PLUGIN_BASENAME' ) ) {
27
+ define( 'ECWID_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
28
  }
29
 
30
  if ( ! defined( 'ECWID_PLUGIN_URL' ) ) {
31
+ define( 'ECWID_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
32
  }
33
 
34
  // Older versions of Google XML Sitemaps plugin generate it in admin, newer in site area, so the hook should be assigned in both of them
60
  add_action('wp_ajax_ecwid_hide_message', 'ecwid_ajax_hide_message');
61
  add_action('wp_ajax_save-widget', 'ecwid_ajax_save_widget');
62
  add_action('wp_ajax_ecwid_reset_categories_cache', 'ecwid_reset_categories_cache');
63
+ add_action('wp_ajax_ecwid_create_store', 'ecwid_create_store');
64
+ add_filter('plugin_action_links_' . ECWID_PLUGIN_BASENAME, 'ecwid_plugin_actions');
65
  add_action('admin_head', 'ecwid_ie8_fonts_inclusion');
66
  add_action('admin_head', 'ecwid_send_stats');
67
  add_action('save_post', 'ecwid_save_post');
106
 
107
  $ecwid_script_rendered = false; // controls single script.js on page
108
 
109
+ require_once ECWID_PLUGIN_DIR . 'includes/themes.php';
110
+ require_once ECWID_PLUGIN_DIR . 'includes/oembed.php';
111
+ require_once ECWID_PLUGIN_DIR . 'includes/widgets.php';
112
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-message-manager.php';
113
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-store-editor.php';
114
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-oauth.php';
115
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-kissmetrics.php';
116
 
117
+ require_once ECWID_PLUGIN_DIR . 'lib/ecwid_platform.php';
118
+ require_once ECWID_PLUGIN_DIR . 'lib/ecwid_api_v3.php';
119
 
120
 
121
  function ecwid_init_integrations()
129
 
130
  foreach ($integrations as $key => $plugin) {
131
  if ( is_plugin_active($plugin) ) {
132
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-integration-' . $key . '.php';
133
  }
134
  }
135
  }
212
  {
213
  if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8') === false) return;
214
 
215
+ $url = ECWID_PLUGIN_URL . 'fonts/ecwid-logo.eot';
216
  echo <<<HTML
217
  <style>
218
  @font-face {
231
  function ecwid_enqueue_frontend() {
232
 
233
  wp_enqueue_script('jquery-ui-widget');
234
+ wp_register_script('ecwid-products-list-js', ECWID_PLUGIN_URL . 'js/products-list.js', array('jquery-ui-widget'), get_option('ecwid_plugin_version'));
235
+ wp_register_style('ecwid-products-list-css', ECWID_PLUGIN_URL . 'css/products-list.css', array(), get_option('ecwid_plugin_version'));
236
+ wp_enqueue_style('ecwid-css', ECWID_PLUGIN_URL . 'css/frontend.css',array(), get_option('ecwid_plugin_version'));
237
+ wp_enqueue_style('ecwid-fonts-css', ECWID_PLUGIN_URL . 'css/fonts.css', array(), get_option('ecwid_plugin_version'));
238
 
239
  if (function_exists('wp_get_document_title')) {
240
+ wp_enqueue_script( 'ecwid-frontend-js', ECWID_PLUGIN_URL . 'js/frontend.js', array( 'jquery' ), get_option( 'ecwid_plugin_version' ) );
241
 
242
  global $ecwid_seo_title_mode;
243
 
281
  }
282
 
283
  if (is_active_widget(false, false, 'ecwidrecentlyviewed')) {
284
+ wp_enqueue_script('ecwid-recently-viewed', ECWID_PLUGIN_URL . 'js/recently-viewed-common.js', array('jquery', 'utils'), get_option('ecwid_plugin_version'), true);
285
 
286
  wp_localize_script(
287
  'ecwid-products-list-js',
365
  $page_id = ecwid_get_current_store_page_id();
366
 
367
  if (get_post_status($page_id) == 'publish') {
368
+ require_once ECWID_PLUGIN_DIR . 'includes/class-ecwid-sitemap-builder.php';
369
 
370
  $sitemap = new EcwidSitemapBuilder(ecwid_get_store_page_url(), $callback, ecwid_new_product_api());
371
 
627
  $body = __($body, 'ecwid-shopping-cart');
628
  $body = sprintf($body, $theme, $store_url);
629
 
630
+ $wp_admin_bar->add_menu( array(
631
+ 'id' => 'ecwid-main',
632
+ 'title' => '<span class="ab-icon ecwid-top-menu-item"></span>',
633
+ 'href' => 'admin.php?page=ecwid',
634
+ ));
635
+
636
  $wp_admin_bar->add_menu(array(
637
+ "id" => "ecwid-go-to-page",
638
+ "title" => __("Visit storefront", 'ecwid-shopping-cart'),
639
+ "parent" => "ecwid-main",
640
+ 'href' => ecwid_get_store_page_url()
 
 
641
  )
642
+ );
643
+
644
+ $wp_admin_bar->add_menu(array(
645
+ "id" => "ecwid-control-panel",
646
+ "title" => __("Manage my store", 'ecwid-shopping-cart'),
647
+ "parent" => "ecwid-main",
648
+ 'href' => admin_url('admin.php?page=ecwid')
649
+ )
650
+ );
651
 
 
 
 
 
 
652
  $wp_admin_bar->add_menu(array(
653
  "id" => "ecwid-help",
654
+ "title" => __("Read FAQ", 'ecwid-shopping-cart'),
655
  "parent" => "ecwid-main",
656
+ 'href' => __('https://help.ecwid.com/customer/portal/articles/1085017-wordpress-downloadable', 'ecwid-shopping-cart'),
657
  'meta' => array(
658
  'target' => '_blank'
659
  )
660
  )
661
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
662
 
663
+ $wp_admin_bar->add_menu(array(
664
+ 'id' => 'ecwid-report-problem',
665
+ 'title' => __( 'Report a problem with the store', 'ecwid-shopping-cart' ),
666
+ 'parent' => 'ecwid-main',
667
+ 'href' => 'mailto:wordpress@ecwid.com?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body),
668
+ 'meta' => array(
669
+ 'target' => '_blank'
670
+ )
671
+ ));
672
  }
673
 
674
  function ecwid_content_has_productbrowser($content) {
885
  function ecwid_ajax_seo_title()
886
  {
887
  $title = _ecwid_get_seo_title();
888
+ echo $title;
889
  $template = $_GET['title_template'];
890
 
891
  $result = str_replace('ECWID_SEO_TITLE', $title, $template);
972
 
973
  function ecwid_wrap_shortcode_content($content, $name, $attrs)
974
  {
975
+ return "<!-- Ecwid shopping cart plugin v 4.1.2 --><!-- noptimize -->"
976
  . ecwid_get_scriptjs_code(@$attrs['lang'])
977
  . "<div class=\"ecwid-shopping-cart-$name\">$content</div>"
978
+ . "<!-- /noptimize --><!-- END Ecwid Shopping Cart v 4.1.2 -->";
979
  }
980
 
981
  function ecwid_get_scriptjs_code($force_lang = null) {
1227
 
1228
  function ecwid_productbrowser_shortcode($shortcode_params) {
1229
 
1230
+ if (current_user_can('administrator')) {
1231
+ Ecwid_Kissmetrics::record('storefrontIsOpened');
1232
+ }
1233
+
1234
  $atts = shortcode_atts(
1235
  array(
1236
  'categories_per_row' => false,
1300
 
1301
  if (ecwid_can_display_html_catalog()) {
1302
  $params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
1303
+ include_once ECWID_PLUGIN_DIR . 'lib/ecwid_product_api.php';
1304
+ include_once ECWID_PLUGIN_DIR . 'lib/ecwid_catalog.php';
1305
 
1306
  $page_url = get_page_link();
1307
 
1382
  }
1383
 
1384
  function ecwid_store_activate() {
1385
+
1386
+ if (get_option('ecwid_store_id', null) === null) {
1387
+ Ecwid_Kissmetrics::record('firstactivated');
1388
+ }
1389
  $my_post = array();
1390
  $content = <<<EOT
1391
  [ecwid widgets="productbrowser minicart categories search" grid="3,3" list="10" table="20" default_category_id="0" category_view="grid" search_view="grid" minicart_layout="MiniAttachToProductBrowser" ]
1763
 
1764
  function ecwid_register_admin_styles($hook_suffix) {
1765
 
1766
+ wp_enqueue_style('ecwid-admin-css', ECWID_PLUGIN_URL . 'css/admin.css', array(), get_option('ecwid_plugin_version'));
1767
+ wp_enqueue_style('ecwid-fonts-css', ECWID_PLUGIN_URL . 'css/fonts.css', array(), get_option('ecwid_plugin_version'));
1768
 
 
 
1769
 
1770
  if (version_compare(get_bloginfo('version'), '3.8-beta') > 0) {
1771
+ wp_enqueue_style('ecwid-admin38-css', ECWID_PLUGIN_URL . 'css/admin.3.8.css', array('ecwid-admin-css'), get_option('ecwid_plugin_version'), 'all');
1772
  }
1773
 
1774
  if (isset($_GET['page']) && $_GET['page'] == 'ecwid') {
1775
 
1776
  if (get_option('ecwid_store_id') == ECWID_DEMO_STORE_ID) {
1777
  // Open dashboard for the first time, ecwid store id is set to demo => need landing styles/scripts
1778
+ wp_enqueue_script('ecwid-landing-js', ECWID_PLUGIN_URL . 'js/landing.js', array(), get_option('ecwid_plugin_version'));
1779
  wp_localize_script('ecwid-landing-js', 'ecwidParams', array(
1780
  'register_link' => ecwid_get_register_link()
1781
  ));
1782
+ if (ecwid_use_old_landing()) {
1783
+ wp_enqueue_style('ecwid-landing-css', ECWID_PLUGIN_URL . 'css/landing_old.css', array(), get_option('ecwid_plugin_version'), 'all');
1784
+ } else {
1785
+ wp_enqueue_style('ecwid-landing-css', ECWID_PLUGIN_URL . 'css/landing.css', array(), get_option('ecwid_plugin_version'), 'all');
1786
+ }
1787
  wp_enqueue_style('ecwid-landing-fonts', 'http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300', array(), get_option('ecwid_plugin_version'));
1788
  } else {
1789
  // We already connected and disconnected the store, no need for fancy landing
1790
+ wp_enqueue_script('ecwid-connect-js', ECWID_PLUGIN_URL . 'js/dashboard.js', array(), get_option('ecwid_plugin_version'));
1791
  }
1792
  }
1793
 
1794
+ wp_enqueue_style('ecwid-nav-menu', ECWID_PLUGIN_URL . 'css/nav-menu.css', array(), get_option('ecwid_plugin_version'));
1795
  }
1796
 
1797
  function ecwid_register_settings_styles($hook_suffix) {
1798
 
1799
  if ( ($hook_suffix != 'post.php' && $hook_suffix != 'post-new.php') && strpos($hook_suffix, 'ecwid') === false) return;
1800
 
1801
+ wp_enqueue_style('ecwid-settings-css', ECWID_PLUGIN_URL . 'css/settings.css', array(), get_option('ecwid_plugin_version'), 'all');
1802
 
1803
  if (version_compare(get_bloginfo('version'), '3.8-beta') > 0) {
1804
+ wp_enqueue_style('ecwid-settings38-css', ECWID_PLUGIN_URL . 'css/settings.3.8.css', array('ecwid-settings-css'), '', 'all');
1805
  }}
1806
 
1807
  function ecwid_plugin_actions($links) {
1865
 
1866
  function ecwid_common_admin_scripts() {
1867
 
1868
+ wp_enqueue_script('ecwid-admin-js', ECWID_PLUGIN_URL . 'js/admin.js', array(), get_option('ecwid_plugin_version'));
1869
+ wp_enqueue_script('ecwid-modernizr-js', ECWID_PLUGIN_URL . 'js/modernizr.js', array(), get_option('ecwid_plugin_version'));
1870
 
1871
  if (function_exists('get_current_screen') ) {
1872
  $screen = get_current_screen();
1875
  EcwidPlatform::set('nav-menus-opened-once', null);
1876
 
1877
  $first_run = false;
1878
+ // It opens the page twice on the very first run of that page
1879
  if (EcwidPlatform::get('nav-menus-opened-once', false) < 2) {
1880
  EcwidPlatform::set('nav-menus-opened-once', EcwidPlatform::get('nav-menus-opened-once') + 1);
1881
  $first_run = EcwidPlatform::get('nav-menus-opened-once') <= 2;
1882
  }
1883
 
1884
+ wp_enqueue_script('ecwid-admin-menu-js', ECWID_PLUGIN_URL . 'js/nav-menu.js', array(), get_option('ecwid_plugin_version'));
1885
  wp_localize_script('ecwid-admin-menu-js', 'ecwid_params', array(
1886
  'store_page' => __('Store Page', 'ecwid-shopping-cart'),
1887
  'reset_cats_cache' => __('Refresh categories list', 'ecwid-shopping-cart'),
1888
  'cache_updated' => __('Done', 'ecwid-shopping-cart'),
1889
  'reset_cache_message' => __('The store top-level categories are automatically added to this drop-down menu', 'ecwid-shopping-cart'),
1890
+ 'first_run' => $first_run,
1891
+ 'register_link' => ecwid_get_register_link()
1892
  ));
1893
  }
1894
 
1935
  return $link;
1936
  }
1937
 
1938
+ function ecwid_create_store() {
1939
+ $api = new Ecwid_Api_V3();
1940
+ $result = $api->create_store();
1941
+ if ($result['response']['code'] == 200) {
1942
+ $data = json_decode($result['body']);
1943
+
1944
+ update_option('ecwid_store_id', $data->id);
1945
+
1946
+ $api->save_token($data->token);
1947
+ update_option('ecwid_oauth_scope', 'read_profile read_catalog allow_sso');
1948
+
1949
+ header( 'HTTP/1.1 200 OK' );
1950
+
1951
+ } else {
1952
+ header( 'HTTP/1.1 ' . $result['response']['code'] . ' ' . $result['response']['message'] );
1953
+ Ecwid_Kissmetrics::record( 'Create Store Failed' );
1954
+ }
1955
+ }
1956
+
1957
  function ecwid_general_settings_do_page() {
1958
 
1959
  $store_id = get_option( 'ecwid_store_id' );
1963
  if ( $store_id == ECWID_DEMO_STORE_ID ) {
1964
  $no_oauth = @$_GET['oauth'] == 'no';
1965
  if ( isset( $connection_error ) && $no_oauth ) {
1966
+ require_once ECWID_PLUGIN_DIR . 'templates/connect.php';
1967
  } else {
1968
  $register = ! $connection_error && ! isset( $_GET['connect'] ) && ! @$_COOKIE['ecwid_create_store_clicked'];
1969
 
1970
+ $api = new Ecwid_Api_V3();
1971
+ global $current_user;
1972
+
1973
+ if ( ecwid_use_old_landing() ) {
1974
+ require_once( ECWID_PLUGIN_DIR . '/templates/landing_old.php' );
1975
+ } else if ($api->does_store_exist($current_user->user_email)) {
1976
+ Ecwid_Kissmetrics::record( 'Existing Store Found' );
1977
+ require_once ECWID_PLUGIN_DIR . '/templates/connect.php';
1978
+ } else {
1979
+ require_once( ECWID_PLUGIN_DIR . '/templates/landing.php' );
1980
+ }
1981
  }
1982
  } else {
1983
  global $ecwid_oauth;
1984
 
1985
  if ( !$ecwid_oauth->has_scope( 'allow_sso' ) && !isset($_GET['reconnect']) ) {
1986
  if ( ecwid_test_oauth(true) ) {
1987
+ require_once ECWID_PLUGIN_DIR . 'templates/reconnect-sso.php';
1988
  } else {
1989
  require_once ECWID_PLUGIN_DIR . 'templates/dashboard.php';
1990
  }
2000
 
2001
  $connection_error = isset($_GET['connection_error']);
2002
 
2003
+ require_once ECWID_PLUGIN_DIR . 'templates/reconnect.php';
2004
  } else {
2005
+ $time = time() - get_option('ecwid_time_correction', 0);
2006
  $page = 'dashboard';
2007
  $iframe_src = sprintf(
2008
  'https://my.ecwid.com/api/v3/%s/sso?token=%s&timestamp=%s&signature=%s&place=%s&inline&lang=%s',
2016
 
2017
  $result = EcwidPlatform::fetch_url( $iframe_src );
2018
 
2019
+ if ($result['code'] == 403 && strpos($result['data'], 'Token too old') !== false ) {
2020
+
2021
+ $result = wp_remote_get($iframe_src);
2022
+
2023
+ if (isset($result['headers']['date'])) {
2024
+ $time = strtotime($result['headers']['date']);
2025
+
2026
+ $iframe_src = sprintf(
2027
+ 'https://my.ecwid.com/api/v3/%s/sso?token=%s&timestamp=%s&signature=%s&place=%s&inline&lang=%s',
2028
+ get_ecwid_store_id(),
2029
+ Ecwid_Api_V3::get_token(),
2030
+ $time,
2031
+ hash('sha256', get_ecwid_store_id() . Ecwid_Api_V3::get_token() . $time . Ecwid_Api_V3::CLIENT_SECRET),
2032
+ $page,
2033
+ substr(get_bloginfo('language'), 0, 2)
2034
+ );
2035
+
2036
+ $result = EcwidPlatform::fetch_url($iframe_src);
2037
+
2038
+ if ($result['code'] == 200) {
2039
+ update_option('ecwid_time_correction', time() - $time);
2040
+ }
2041
+ }
2042
+ }
2043
+
2044
  if ( is_array( $result ) && $result['code'] == 200 ) {
2045
  ecwid_admin_do_page( 'dashboard' );
2046
  } else {
2047
+ require_once ECWID_PLUGIN_DIR . 'templates/reconnect-sso.php';
2048
  }
2049
  }
2050
  }
2057
 
2058
  if ($page == 'dashboard') {
2059
  $show_reconnect = true;
2060
+ if (isset($_GET['just-created'])) {
2061
+ $page = 'dashboard:wizard=ADD_PRODUCTS';
2062
+ }
2063
  }
2064
 
2065
+ $time = time() - get_option('ecwid_time_correction', 0);
2066
 
2067
  $iframe_src = sprintf(
2068
  'https://my.ecwid.com/api/v3/%s/sso?token=%s&timestamp=%s&signature=%s&place=%s&inline&lang=%s',
2083
  require_once ECWID_PLUGIN_DIR . 'templates/dashboard.php';
2084
  }
2085
  } else {
2086
+ require_once ECWID_PLUGIN_DIR . 'templates/ecwid-admin.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2087
  }
2088
  }
2089
 
2168
  }
2169
 
2170
  function ecwid_get_categories_for_selector() {
 
 
 
 
 
 
 
2171
 
2172
+ function walk_through_categories($categories, $parent_prefix) {
2173
+ if (empty($categories)) {
2174
+ return array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2175
  }
2176
+ $result = array();
2177
 
2178
+ foreach ($categories as $category) {
2179
+ $result[$category->id] = $category;
2180
+ $result[$category->id]->path = $parent_prefix . $category->name;
2181
+ $result = array_merge($result, walk_through_categories($category->sub, $category->name . ' > '));
2182
+ unset($result[$category->id]->sub);
2183
  }
2184
 
2185
+ return $result;
 
 
2186
  }
2187
 
2188
+ $result = walk_through_categories(ecwid_get_categories(), "");
2189
+
2190
+ return $result;
2191
  }
2192
 
2193
  function ecwid_advanced_settings_do_page() {
2194
  $categories = ecwid_get_categories_for_selector();
2195
 
2196
+ require_once ECWID_PLUGIN_DIR . 'templates/advanced-settings.php';
2197
  }
2198
 
2199
  function ecwid_appearance_settings_do_page() {
2200
 
2201
+ wp_register_script('ecwid-appearance-js', ECWID_PLUGIN_URL . 'js/appearance.js', array(), get_option('ecwid_plugin_version'), true);
2202
  wp_enqueue_script('ecwid-appearance-js');
2203
 
2204
  $disabled = false;
2241
  }
2242
 
2243
  function get_ecwid_store_id() {
2244
+ $store_id = get_option('ecwid_store_id');
2245
+ if (empty($store_id)) {
2246
+ $store_id = ECWID_DEMO_STORE_ID;
2247
+ }
 
 
2248
 
2249
  return $store_id;
2250
  }
2364
 
2365
  }
2366
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2367
  function ecwid_send_stats()
2368
  {
2369
  $storeid = get_ecwid_store_id();
2456
  if (!empty($results)) {
2457
  $stats = array_merge($stats, $results);
2458
  }
2459
+ update_option('ecwid_checked_for_remote_connection_errors', empty($results));
2460
  }
2461
 
2462
  return $stats;
2505
 
2506
  $usage_stats['is_wp_newbie'] = (bool) (($ecwid_date - $wp_date) / 60 / 60 / 24 <= 30);
2507
 
2508
+ $usage_stats['ecwid_remote_get_fails'] = (bool) get_option('ecwid_remote_get_fails');
2509
 
2510
  $woo = 0;
2511
  $all_plugins = get_plugins();
2541
  return $results;
2542
  }
2543
 
 
 
 
 
 
 
 
 
 
 
 
 
2544
  function ecwid_sso() {
2545
  $key = get_option('ecwid_sso_secret_key');
2546
  if (empty($key)) {
2693
 
2694
  function ecwid_new_product_api()
2695
  {
2696
+ include_once ECWID_PLUGIN_DIR . 'lib/ecwid_product_api.php';
2697
  $ecwid_store_id = intval(get_ecwid_store_id());
2698
  $api = new EcwidProductApi($ecwid_store_id);
2699
 
2701
  }
2702
 
2703
  function ecwid_embed_svg($name) {
2704
+ $code = file_get_contents(ECWID_PLUGIN_DIR . 'images/' . $name . '.svg');
2705
 
2706
  echo $code;
2707
  }
2741
  return false;
2742
  }
2743
 
2744
+ function ecwid_use_old_landing() {
2745
+ return get_option('ecwid_installation_date') % 10 >= 0;
2746
+ }
2747
+
2748
  // Since we use shortcode regex in our own functions, we need it to be persistent
2749
  function ecwid_get_shortcode_regex() {
2750
  global $shortcode_tags;
images/black-app-store.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="136" height="42" viewBox="0 0 136 42" xmlns="http://www.w3.org/2000/svg"><title>black download on the app store</title><g fill="none" fill-rule="evenodd"><g><rect fill="#050708" width="136" height="42" rx="7"/><path d="M30.045 20.85c-.03-3.496 2.806-5.197 2.936-5.276-1.606-2.39-4.097-2.716-4.972-2.742-2.092-.225-4.12 1.277-5.187 1.277-1.086 0-2.727-1.257-4.496-1.22-2.276.036-4.405 1.38-5.573 3.468-2.41 4.255-.612 10.51 1.697 13.95 1.155 1.684 2.505 3.565 4.272 3.5 1.727-.073 2.373-1.125 4.458-1.125 2.067 0 2.673 1.124 4.475 1.082 1.854-.03 3.022-1.692 4.137-3.392 1.335-1.93 1.87-3.833 1.892-3.93-.044-.016-3.602-1.4-3.637-5.592zM26.276 10.396c.873-1.113 1.47-2.627 1.304-4.164-1.263.057-2.844.89-3.754 1.98-.806.96-1.525 2.532-1.34 4.01 1.42.11 2.878-.73 3.79-1.826z" fill="#FFF"/></g><g fill="#FFF"><path d="M50.698 32.17h-2.39L47 27.992h-4.55l-1.245 4.178H38.88l4.505-14.223h2.784l4.528 14.223zm-4.092-5.93l-1.184-3.714c-.125-.38-.36-1.273-.706-2.68h-.042c-.138.605-.36 1.5-.665 2.68l-1.163 3.713h3.76zM62.288 26.916c0 1.744-.464 3.123-1.392 4.135-.83.902-1.863 1.352-3.095 1.352-1.33 0-2.284-.485-2.866-1.456h-.042v5.403H52.65V25.29c0-1.096-.03-2.222-.084-3.376h1.973l.124 1.626h.042c.748-1.225 1.883-1.836 3.406-1.836 1.19 0 2.185.477 2.98 1.434.798.957 1.196 2.216 1.196 3.778zM60.003 27c0-1-.22-1.822-.665-2.47-.485-.675-1.136-1.013-1.953-1.013-.553 0-1.056.188-1.505.56-.45.373-.745.862-.883 1.467-.07.282-.104.513-.104.694v1.71c0 .746.225 1.376.676 1.89.45.514 1.034.77 1.753.77.845 0 1.502-.33 1.973-.99.47-.663.707-1.535.707-2.62zM73.898 26.916c0 1.744-.464 3.123-1.393 4.135-.83.902-1.862 1.352-3.093 1.352-1.33 0-2.285-.485-2.866-1.456h-.042v5.403H64.26V25.29c0-1.096-.027-2.222-.082-3.376h1.972l.126 1.626h.042c.747-1.225 1.882-1.836 3.406-1.836 1.19 0 2.184.477 2.98 1.434.796.957 1.194 2.216 1.194 3.778zM71.613 27c0-1-.222-1.822-.666-2.47-.484-.675-1.134-1.013-1.95-1.013-.555 0-1.057.188-1.507.56-.45.373-.744.862-.882 1.467-.068.282-.104.513-.104.694v1.71c0 .746.225 1.376.673 1.89.45.513 1.035.77 1.757.77.845 0 1.502-.33 1.972-.99.472-.663.707-1.535.707-2.62zM86.88 28.18c0 1.21-.414 2.195-1.244 2.955-.912.83-2.18 1.245-3.813 1.245-1.507 0-2.714-.295-3.628-.886l.52-1.9c.984.606 2.064.91 3.24.91.846 0 1.504-.195 1.976-.582.47-.387.706-.906.706-1.554 0-.577-.194-1.063-.582-1.457-.386-.394-1.03-.76-1.93-1.1-2.452-.928-3.677-2.288-3.677-4.078 0-1.17.43-2.127 1.29-2.873.855-.748 1.998-1.12 3.426-1.12 1.274 0 2.332.224 3.177.674l-.56 1.858c-.79-.437-1.682-.655-2.68-.655-.79 0-1.405.198-1.847.59-.374.353-.56.782-.56 1.29 0 .56.213 1.026.642 1.392.373.337 1.052.702 2.036 1.096 1.206.493 2.09 1.07 2.66 1.73.567.658.85 1.482.85 2.465zM94.295 23.624h-2.472v4.98c0 1.266.436 1.9 1.31 1.9.4 0 .732-.037.995-.107l.062 1.73c-.442.168-1.024.252-1.744.252-.886 0-1.578-.275-2.078-.824-.497-.55-.748-1.47-.748-2.764v-5.17h-1.473v-1.71h1.473v-1.878l2.203-.675v2.552h2.472v1.712zM105.45 26.958c0 1.576-.445 2.87-1.33 3.882-.93 1.042-2.162 1.562-3.7 1.562-1.48 0-2.66-.5-3.54-1.497-.878-1-1.318-2.26-1.318-3.777 0-1.59.452-2.89 1.36-3.904.906-1.013 2.128-1.52 3.665-1.52 1.48 0 2.673.5 3.573 1.5.86.968 1.29 2.22 1.29 3.754zm-2.328.073c0-.944-.198-1.756-.6-2.432-.472-.82-1.144-1.227-2.015-1.227-.9 0-1.586.41-2.056 1.228-.402.677-.6 1.5-.6 2.476 0 .946.198 1.757.6 2.433.486.818 1.163 1.227 2.037 1.227.856 0 1.53-.417 2.014-1.25.414-.688.622-1.508.622-2.453zM112.74 23.918c-.222-.042-.46-.063-.707-.063-.79 0-1.4.302-1.83.908-.372.535-.56 1.21-.56 2.026v5.38h-2.24l.02-7.026c0-1.182-.028-2.258-.084-3.23h1.952l.082 1.963h.062c.237-.674.61-1.217 1.122-1.624.5-.367 1.04-.55 1.62-.55.208 0 .395.016.562.042v2.173zM122.77 26.557c0 .408-.026.752-.082 1.033h-6.728c.026 1.013.35 1.788.976 2.323.567.477 1.3.717 2.2.717.997 0 1.906-.162 2.723-.485l.35 1.58c-.955.425-2.082.635-3.384.635-1.565 0-2.794-.468-3.688-1.403-.892-.935-1.34-2.19-1.34-3.766 0-1.546.417-2.834 1.25-3.86.87-1.097 2.047-1.646 3.528-1.646 1.455 0 2.556.55 3.304 1.645.593.87.89 1.948.89 3.227zm-2.138-.59c.014-.677-.132-1.26-.436-1.753-.388-.634-.985-.95-1.787-.95-.734 0-1.33.31-1.786.93-.374.49-.596 1.082-.664 1.77h4.672v.002z"/></g><g fill="#FFF"><path d="M45.864 9.947c0 1.258-.37 2.205-1.113 2.84-.686.588-1.662.882-2.927.882-.627 0-1.163-.03-1.612-.085V6.712c.587-.096 1.218-.145 1.9-.145 1.204 0 2.112.266 2.724.798.686.602 1.03 1.462 1.03 2.582zm-1.162.03c0-.814-.213-1.44-.638-1.876-.425-.434-1.046-.652-1.863-.652-.346 0-.642.024-.887.073v5.226c.136.022.384.03.745.03.844 0 1.495-.237 1.953-.714.46-.476.692-1.17.692-2.084zM52.028 11.046c0 .775-.218 1.41-.654 1.908-.456.51-1.06.767-1.817.767-.727 0-1.307-.244-1.74-.735-.43-.49-.646-1.11-.646-1.856 0-.78.223-1.42.67-1.918.445-.497 1.044-.746 1.8-.746.728 0 1.312.245 1.755.735.42.478.633 1.093.633 1.846zm-1.144.036c0-.465-.1-.863-.296-1.196-.23-.402-.56-.603-.988-.603-.443 0-.78.2-1.01.603-.2.333-.297.738-.297 1.216 0 .465.1.864.296 1.196.237.402.57.603 1 .603.42 0 .75-.203.988-.612.204-.34.306-.74.306-1.206zM60.292 8.568l-1.552 5.04h-1.01l-.642-2.19c-.163-.545-.296-1.088-.4-1.627h-.02c-.095.555-.227 1.097-.398 1.63l-.683 2.187h-1.02l-1.46-5.04h1.133l.56 2.396c.136.567.248 1.107.337 1.618h.02c.082-.42.218-.957.41-1.606l.703-2.405h.9l.673 2.353c.163.574.296 1.126.398 1.66h.03c.076-.52.188-1.072.338-1.66l.6-2.354h1.084v-.002zM66.007 13.607h-1.102V10.72c0-.888-.333-1.333-1-1.333-.327 0-.59.122-.796.367-.204.244-.307.533-.307.863v2.988H61.7v-3.597c0-.442-.013-.922-.04-1.442h.97l.05.788h.03c.13-.245.32-.447.573-.608.298-.188.633-.283 1-.283.462 0 .847.15 1.153.456.38.372.57.93.57 1.668v3.02zM69.048 13.607h-1.102v-7.35h1.102v7.35zM75.538 11.046c0 .775-.217 1.41-.653 1.908-.457.51-1.062.767-1.817.767-.73 0-1.308-.244-1.74-.735-.43-.49-.647-1.11-.647-1.856 0-.78.223-1.42.67-1.918.445-.497 1.045-.746 1.8-.746.728 0 1.312.245 1.756.735.42.478.632 1.093.632 1.846zm-1.144.036c0-.465-.1-.863-.296-1.196-.23-.402-.56-.603-.988-.603-.444 0-.78.2-1.01.603-.198.333-.296.738-.296 1.216 0 .465.1.864.295 1.196.238.402.57.603 1 .603.42 0 .75-.203.988-.612.205-.34.306-.74.306-1.206zM80.874 13.607h-.99l-.082-.58h-.03c-.34.462-.822.694-1.45.694-.467 0-.846-.152-1.13-.455-.26-.276-.39-.62-.39-1.026 0-.617.253-1.086.76-1.41.508-.326 1.222-.485 2.14-.478v-.094c0-.664-.343-.995-1.03-.995-.49 0-.92.125-1.293.373l-.225-.735c.46-.29 1.03-.434 1.7-.434 1.297 0 1.947.695 1.947 2.084v1.855c0 .504.025.904.072 1.202zm-1.145-1.732v-.777c-1.217-.02-1.825.318-1.825 1.015 0 .263.07.46.212.59.142.133.323.198.538.198.242 0 .468-.077.675-.232.207-.156.334-.354.382-.596.01-.055.017-.12.017-.197zM87.14 13.607h-.98l-.05-.81h-.032c-.312.616-.845.924-1.593.924-.597 0-1.095-.237-1.49-.714-.394-.477-.59-1.096-.59-1.855 0-.815.213-1.475.642-1.98.416-.47.925-.705 1.53-.705.667 0 1.133.227 1.398.684h.02V6.256H87.1v5.992c0 .49.012.942.04 1.357zm-1.144-2.125v-.84c0-.146-.01-.263-.03-.353-.062-.27-.196-.497-.4-.68-.204-.182-.45-.274-.737-.274-.412 0-.734.165-.97.498-.235.332-.354.757-.354 1.275 0 .497.113.9.34 1.212.238.33.56.497.962.497.362 0 .652-.14.87-.416.214-.255.318-.563.318-.922zM96.567 11.046c0 .775-.217 1.41-.653 1.908-.456.51-1.06.767-1.817.767-.726 0-1.306-.244-1.74-.735-.43-.49-.647-1.11-.647-1.856 0-.78.222-1.42.668-1.918.447-.497 1.046-.746 1.803-.746.727 0 1.313.245 1.755.735.42.478.632 1.093.632 1.846zm-1.142.036c0-.465-.1-.863-.296-1.196-.233-.402-.56-.603-.99-.603-.442 0-.78.2-1.01.603-.2.333-.297.738-.297 1.216 0 .465.1.864.296 1.196.237.402.57.603 1 .603.42 0 .75-.203.99-.612.202-.34.305-.74.305-1.206zM102.495 13.607h-1.1V10.72c0-.888-.333-1.333-1-1.333-.33 0-.593.122-.797.367-.204.244-.306.533-.306.863v2.988H98.19v-3.597c0-.442-.014-.922-.04-1.442h.967l.052.788h.03c.13-.245.32-.447.57-.608.3-.188.634-.283 1-.283.463 0 .848.15 1.154.456.382.372.57.93.57 1.668v3.02zM109.915 9.407H108.7v2.448c0 .622.217.933.644.933.198 0 .362-.017.49-.053l.03.85c-.218.084-.504.125-.857.125-.435 0-.774-.134-1.02-.404-.245-.27-.367-.722-.367-1.358v-2.54h-.725v-.84h.725v-.923l1.08-.33v1.252h1.214v.84zM115.75 13.607h-1.102v-2.865c0-.903-.332-1.355-.998-1.355-.512 0-.86.262-1.052.786-.033.11-.052.244-.052.403v3.03h-1.1v-7.35h1.1v3.037h.02c.348-.553.846-.828 1.49-.828.457 0 .835.152 1.135.456.374.38.56.945.56 1.69v2.997zM121.772 10.85c0 .2-.015.37-.04.507h-3.307c.014.498.172.877.478 1.14.28.235.64.353 1.083.353.49 0 .935-.08 1.337-.238l.172.778c-.47.207-1.023.31-1.664.31-.767 0-1.372-.23-1.81-.69-.44-.458-.657-1.075-.657-1.85 0-.76.203-1.39.612-1.896.427-.538 1.005-.808 1.734-.808.712 0 1.254.27 1.62.808.296.428.442.957.442 1.585zm-1.052-.29c.008-.333-.064-.62-.214-.86-.19-.312-.482-.468-.877-.468-.36 0-.654.152-.878.456-.183.243-.292.533-.327.872h2.295z"/></g></g></svg>
3
+
images/black-google.svg ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="136" height="42" viewBox="0 0 136 42" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>black get it on google</title><defs><linearGradient x1="19.215%" y1="-35.157%" x2="69.302%" y2="93.537%" id="b"><stop stop-color="#19A3B4" offset="0%"/><stop stop-color="#5BC3AF" offset="34.817%"/><stop stop-color="#C9F7A6" offset="92.234%"/><stop stop-color="#D7FEA5" offset="100%"/></linearGradient><path id="a" d="M13.983 7.228L1.547.216C1.194.018.87-.028.607.056L10.79 10.502l3.19-3.272"/><linearGradient x1="-14.698%" y1="-114.322%" x2="74.844%" y2="114.156%" id="c"><stop stop-color="#FC227C" offset="0%"/><stop stop-color="#FEEB7B" offset="100%"/></linearGradient><linearGradient x1="28.151%" y1="-14.814%" x2="48.188%" y2="82.894%" id="e"><stop stop-color="#0E4DA0" offset="0%"/><stop stop-color="#6BFED4" offset="100%"/></linearGradient><path id="d" d="M.605.057C.227.177-.018.57-.018 1.165l.002 18.697c0 .587.238.974.605 1.103L10.79 10.503.605.057"/><linearGradient x1="132.245%" y1="16.466%" x2="5.959%" y2="126.31%" id="g"><stop stop-color="#FC472E" offset="0%"/><stop stop-color="#FC472E" offset=".332%"/><stop stop-color="#893CD8" offset="100%"/></linearGradient><path id="f" d="M.59 20.965c.264.092.596.05.957-.154l12.45-7.02-3.205-3.287L.59 20.965"/><path id="h" d="M0 .054h91.96V18H0V.054z"/><path id="j" d="M0 .143h38.904V7H0V.143z"/><path id="l" d="M0 .143h38.904V7H0V.143z"/></defs><g fill="none" fill-rule="evenodd"><rect fill="#000" width="136" height="42" rx="7"/><g transform="translate(11 15)"><use fill="url(#b)" xlink:href="#a"/><path d="M14 13.79l4.244-2.394c.86-.487.86-1.28 0-1.765l-4.26-2.402L10.79 10.5 14 13.79" fill="url(#c)"/><use fill="url(#e)" xlink:href="#d"/><use fill="url(#g)" xlink:href="#f"/></g><g transform="translate(35 18)"><path d="M13.32 6.392H6.996v1.895h4.484c-.22 2.658-2.41 3.79-4.475 3.79-2.643 0-4.95-2.1-4.95-5.045 0-2.868 2.2-5.077 4.956-5.077 2.127 0 3.38 1.37 3.38 1.37l1.314-1.375S10.018.054 6.944.054C3.03.054 0 3.392 0 6.998c0 3.534 2.85 6.98 7.043 6.98 3.69 0 6.39-2.554 6.39-6.33 0-.796-.115-1.257-.115-1.257v.002zM18.692 5.02c-2.594 0-4.453 2.048-4.453 4.438 0 2.424 1.802 4.51 4.482 4.51 2.427 0 4.414-1.872 4.414-4.458 0-2.964-2.312-4.49-4.444-4.49m.026 1.757c1.275 0 2.484 1.042 2.484 2.72 0 1.644-1.204 2.716-2.49 2.716-1.414 0-2.53-1.144-2.53-2.728 0-1.55 1.103-2.708 2.536-2.708M28.48 5.02c-2.593 0-4.452 2.048-4.452 4.438 0 2.424 1.803 4.51 4.483 4.51 2.428 0 4.415-1.872 4.415-4.458 0-2.964-2.312-4.49-4.444-4.49m.027 1.757c1.275 0 2.484 1.042 2.484 2.72 0 1.644-1.203 2.716-2.49 2.716-1.413 0-2.528-1.144-2.528-2.728 0-1.55 1.102-2.708 2.535-2.708M38.07 5.024c-2.38 0-4.253 2.107-4.253 4.47 0 2.695 2.17 4.48 4.21 4.48 1.264 0 1.935-.505 2.43-1.086v.882c0 1.544-.927 2.47-2.328 2.47-1.354 0-2.032-1.018-2.268-1.595l-1.703.72c.603 1.29 1.82 2.635 3.983 2.635 2.367 0 4.17-1.506 4.17-4.666v-8.04h-1.856v.757c-.57-.62-1.35-1.026-2.388-1.026zm.172 1.754c1.167 0 2.365 1.007 2.365 2.727 0 1.748-1.196 2.71-2.39 2.71-1.27 0-2.45-1.04-2.45-2.694 0-1.717 1.225-2.742 2.475-2.742zM50.962 5.013c-2.246 0-4.132 1.805-4.132 4.47 0 2.818 2.102 4.49 4.347 4.49 1.874 0 3.024-1.036 3.71-1.964l-1.53-1.03c-.398.622-1.062 1.23-2.17 1.23-1.245 0-1.818-.688-2.173-1.355l5.94-2.49-.31-.73c-.573-1.428-1.91-2.622-3.682-2.622zm.077 1.72c.808 0 1.39.436 1.638.957l-3.966 1.675c-.17-1.297 1.045-2.63 2.327-2.63z" fill="#FFF"/><mask id="i" fill="#fff"><use xlink:href="#h"/></mask><path d="M43.804 13.707h1.95V.517h-1.95v13.19zM69.96 13.707h1.95V.517h-1.95v13.19zM64.333 6.95h-2.77V2.487h2.77c1.21 0 2.208 1.007 2.208 2.23 0 1.224-.997 2.23-2.207 2.23m0-6.43h-4.72V13.707h1.95V8.92h2.77c2.287 0 4.16-1.89 4.16-4.2 0-2.312-1.873-4.203-4.16-4.203M89.83 5.013l-2.556 5.877-2.556-5.877h-2.13l3.62 8.327L84.183 18h2.13l5.65-12.987H89.83zM79.893 9.894c-.25 1.097-1.09 1.886-2.16 2.18-2.254.62-2.815-3.082.537-2.573.575.07 1.078.215 1.623.394zm0 3.813h1.95V8.963c.306-4.893-5.833-6.044-8.156-2.516l1.57 1.064c1.136-2.006 4.377-1.544 4.59.606-.974-.26-2.027-.45-2.988-.35-1.502.152-2.787 1.115-2.99 2.693-.11.85.077 1.902.666 2.542.918.997 2.424 1.132 3.662.79.697-.19 1.246-.61 1.695-1.15v1.065z" fill="#FFF" mask="url(#i)"/></g><g transform="translate(35 6)"><mask id="k" fill="#fff"><use xlink:href="#j"/></mask><path d="M6.314 3.264H3.317v.934h2.125C5.337 5.506 4.3 6.064 3.322 6.064 2.067 6.064.974 5.03.974 3.58c0-1.413 1.042-2.5 2.348-2.5 1.01 0 1.603.674 1.603.674l.622-.677s-.8-.934-2.256-.934C1.436.143 0 1.787 0 3.563 0 5.303 1.35 7 3.34 7c1.748 0 3.028-1.257 3.028-3.117 0-.392-.055-.62-.055-.62z" fill="#FFF" mask="url(#k)"/><mask id="m" fill="#fff"><use xlink:href="#l"/></mask><path d="M18.56 6.867h.926V.37h-.925v6.497zM13.382 6.867h.925V1.342h1.518v-.97h-3.96v.97h1.517v5.525zM7.343 6.867h3.546v-.97H8.266V4.103h2.307v-.97H8.267V1.342h2.622v-.97H7.342v6.495zM21.757 6.867h.924V1.342h1.52v-.97h-3.96v.97h1.517v5.525zM29.87.143c-1.855 0-3.29 1.644-3.29 3.42 0 1.726 1.328 3.41 3.29 3.436 1.963-.027 3.292-1.71 3.292-3.437 0-1.776-1.436-3.42-3.292-3.42m0 5.92c-1.24-.015-2.317-1.044-2.317-2.483 0-1.4 1.026-2.483 2.317-2.5 1.292.017 2.317 1.1 2.317 2.5 0 1.44-1.076 2.468-2.317 2.484M34.086 6.867h.925V2.135l2.97 4.732h.924V.37h-.925V5.1L35.01.37h-.924v6.497z" fill="#FFF" mask="url(#m)"/></g></g></svg>
includes/class-ecwid-kissmetrics.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  class Ecwid_Kissmetrics {
4
 
5
- const API_KEY = '73a63d56f0a933d42635f7a79e540db8cdab1fba';//'12a19b058a28c5db7b722584d59e60e4f080e142';
6
  const STORAGE_OPTION_NAME = 'ecwid_kissmetrics';
7
  const EVENT_PREFIX = 'wp-plugin ';
8
 
@@ -30,12 +30,30 @@ class Ecwid_Kissmetrics {
30
  wp_enqueue_script('ecwid-kissmetrics', 'https://scripts.kissmetrics.com/' . self::API_KEY . '.2.js');
31
  wp_enqueue_script('ecwid-kissmetrics-events', ECWID_PLUGIN_URL . 'js/kissmetrics.js', array( 'ecwid-kissmetrics' ) );
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  $kissmetrics = array(
34
- 'events' => $this->_get_pending_events(),
35
  'key' => self::API_KEY
36
  );
37
 
38
- $this->_flush_events();
39
 
40
  $store_id = get_ecwid_store_id();
41
  if ($store_id != ECWID_DEMO_STORE_ID) {
@@ -59,14 +77,27 @@ class Ecwid_Kissmetrics {
59
  }
60
 
61
  protected function _enqueue_record( $event ) {
62
- $events = $this->_get_pending_events();
 
 
63
 
64
- array_push( $events, array( 'event' => $event ) );
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- update_option ( self::STORAGE_OPTION_NAME, $events );
67
  }
68
 
69
- protected function _get_pending_events() {
70
  $value = get_option( self::STORAGE_OPTION_NAME );
71
 
72
  if ( !is_array($value) ) {
@@ -76,7 +107,7 @@ class Ecwid_Kissmetrics {
76
  return $value;
77
  }
78
 
79
- protected function _flush_events() {
80
  update_option( self::STORAGE_OPTION_NAME, null );
81
  }
82
  }
2
 
3
  class Ecwid_Kissmetrics {
4
 
5
+ const API_KEY = '12a19b058a28c5db7b722584d59e60e4f080e142';
6
  const STORAGE_OPTION_NAME = 'ecwid_kissmetrics';
7
  const EVENT_PREFIX = 'wp-plugin ';
8
 
30
  wp_enqueue_script('ecwid-kissmetrics', 'https://scripts.kissmetrics.com/' . self::API_KEY . '.2.js');
31
  wp_enqueue_script('ecwid-kissmetrics-events', ECWID_PLUGIN_URL . 'js/kissmetrics.js', array( 'ecwid-kissmetrics' ) );
32
 
33
+
34
+ $this->_enqueue_property('Storefront URL', ecwid_get_store_page_url());
35
+ $this->_enqueue_property('WP Theme', ecwid_get_theme_name());
36
+ $this->_enqueue_property('WP Chameleon Enabled', get_option('ecwid_use_chameleon') ? 'true' : 'false');
37
+
38
+ $woo = 'none';
39
+ $all_plugins = get_plugins();
40
+ if (array_key_exists('woocommerce/woocommerce.php', $all_plugins)) {
41
+ $active_plugins = get_option('active_plugins');
42
+ if (in_array('woocommerce/woocommerce.php', $active_plugins)) {
43
+ $woo = 'active';
44
+ } else {
45
+ $woo = 'inactive';
46
+ }
47
+ }
48
+ $kissmetrics['woo'] = $woo;
49
+ $this->_enqueue_property('Woocommerce installed', $woo);
50
+
51
  $kissmetrics = array(
52
+ 'items' => $this->_get_pending(),
53
  'key' => self::API_KEY
54
  );
55
 
56
+ $this->_flush_pending();
57
 
58
  $store_id = get_ecwid_store_id();
59
  if ($store_id != ECWID_DEMO_STORE_ID) {
77
  }
78
 
79
  protected function _enqueue_record( $event ) {
80
+ $items = $this->_get_pending();
81
+
82
+ array_push( $items, array( 'event' => $event ) );
83
 
84
+ update_option ( self::STORAGE_OPTION_NAME, $items );
85
+ }
86
+
87
+ protected function _enqueue_property( $name, $value ) {
88
+ $items = $this->_get_pending();
89
+
90
+ array_push( $items, array(
91
+ 'property' => array(
92
+ $name => $value
93
+ )
94
+ )
95
+ );
96
 
97
+ update_option ( self::STORAGE_OPTION_NAME, $items );
98
  }
99
 
100
+ protected function _get_pending() {
101
  $value = get_option( self::STORAGE_OPTION_NAME );
102
 
103
  if ( !is_array($value) ) {
107
  return $value;
108
  }
109
 
110
+ protected function _flush_pending() {
111
  update_option( self::STORAGE_OPTION_NAME, null );
112
  }
113
  }
includes/class-ecwid-message-manager.php CHANGED
@@ -87,7 +87,7 @@ TXT
87
 
88
  $do_not_show_again = true == $params['hideable'];
89
 
90
- include ECWID_PLUGIN_DIR . '/templates/admin-message.php';
91
  }
92
 
93
  public static function disable_message($name)
@@ -191,7 +191,7 @@ TXT
191
  {
192
  return array(
193
  'on_activate' => array(
194
- 'title' => __('Greetings! Your Ecwid store is now active.', 'ecwid-shopping-cart'),
195
  'message' => __('Take a few simple steps to complete store setup', 'ecwid-shopping-cart'),
196
  'primary_title' => __('Set up Ecwid Store', 'ecwid-shopping-cart'),
197
  'primary_url' => 'admin.php?page=ecwid',
@@ -199,22 +199,11 @@ TXT
199
  'default' => 'disabled'
200
  ),
201
 
202
- 'on_storeid_set' => array(
203
- 'title' => __('Good job! Your store is set up and you\'re ready to sell.', 'ecwid-shopping-cart'),
204
- 'message' => __('Use the dashboard below to add products, track sales and adjust settings in your store. We also created a store page on your site and now you can fine-tune the storefront appearance.', 'ecwid-shopping-cart'),
205
- 'primary_title' => __('Visit Storefront', 'ecwid-shopping-cart'),
206
- 'primary_url' => '',
207
- 'primary_blank' => true,
208
- 'secondary_title' => __('Configure Appearance', 'ecwid-shopping-cart'),
209
- 'secondary_url' => 'admin.php?page=ecwid-appearance',
210
- 'hideable' => true
211
- ),
212
-
213
  'on_no_storeid_on_setup_pages' => array(
214
  'type' => 'warning',
215
  'title' => __('Your store is almost ready!', 'ecwid-shopping-cart' ),
216
- 'message' => __('Connect your Ecwid account with this site to complete setup and start selling', 'ecwid-shopping-cart' ),
217
- 'primary_title' => __('Connect Your Ecwid Store', 'ecwid-shopping-cart' ),
218
  'primary_url' => 'admin.php?page=ecwid',
219
  'hideable' => true
220
  ),
87
 
88
  $do_not_show_again = true == $params['hideable'];
89
 
90
+ include ECWID_PLUGIN_DIR . 'templates/admin-message.php';
91
  }
92
 
93
  public static function disable_message($name)
191
  {
192
  return array(
193
  'on_activate' => array(
194
+ 'title' => __('Greetings! Your Ecwid plugin is now active.', 'ecwid-shopping-cart'),
195
  'message' => __('Take a few simple steps to complete store setup', 'ecwid-shopping-cart'),
196
  'primary_title' => __('Set up Ecwid Store', 'ecwid-shopping-cart'),
197
  'primary_url' => 'admin.php?page=ecwid',
199
  'default' => 'disabled'
200
  ),
201
 
 
 
 
 
 
 
 
 
 
 
 
202
  'on_no_storeid_on_setup_pages' => array(
203
  'type' => 'warning',
204
  'title' => __('Your store is almost ready!', 'ecwid-shopping-cart' ),
205
+ 'message' => __('Complete setup and start selling', 'ecwid-shopping-cart' ),
206
+ 'primary_title' => __('Complete Setup', 'ecwid-shopping-cart' ),
207
  'primary_url' => 'admin.php?page=ecwid',
208
  'hideable' => true
209
  ),
includes/class-ecwid-oauth.php CHANGED
@@ -21,13 +21,13 @@ class Ecwid_OAuth {
21
 
22
  $this->_load_state();
23
 
24
- $this->api = new Ecwid_Api_V3(get_ecwid_store_id());
25
  }
26
 
27
  public function show_reconnect()
28
  {
29
  $ecwid_oauth = $this;
30
- require_once(ECWID_PLUGIN_DIR . '/templates/reconnect.php');
31
  }
32
 
33
  public function test_post()
21
 
22
  $this->_load_state();
23
 
24
+ $this->api = new Ecwid_Api_V3();
25
  }
26
 
27
  public function show_reconnect()
28
  {
29
  $ecwid_oauth = $this;
30
+ require_once(ECWID_PLUGIN_DIR . 'templates/reconnect.php');
31
  }
32
 
33
  public function test_post()
includes/class-ecwid-store-editor.php CHANGED
@@ -30,8 +30,8 @@ class Ecwid_Store_Editor {
30
  public function add_mce_plugin($plugins) {
31
 
32
  $plugins_array = array(
33
- 'ecwid' => plugins_url( 'ecwid-shopping-cart/js/store-editor-mce.js' ),
34
- 'ecwid_common' => plugins_url( 'ecwid-shopping-cart/js/store-editor-common.js' ),
35
  );
36
 
37
  return array_merge($plugins, $plugins_array);
@@ -61,11 +61,11 @@ HTML;
61
  }
62
 
63
  public function add_scripts() {
64
- wp_enqueue_style( 'ecwid-store-editor-css', plugins_url( 'ecwid-shopping-cart/css/store-popup.css' ), array(), get_option('ecwid_plugin_version') );
65
- wp_enqueue_script( 'ecwid-store-editor-common-js', plugins_url( 'ecwid-shopping-cart/js/store-editor-common.js' ), array(), get_option('ecwid_plugin_version') );
66
- wp_enqueue_script( 'ecwid-store-editor-page-js', plugins_url('ecwid-shopping-cart/js/store-editor-page.js' ), array(), get_option('ecwid_plugin_version') );
67
  wp_localize_script( 'ecwid-store-editor-page-js', 'ecwid_i18n', array( 'edit_store_appearance' => __( 'Edit Appearance', 'ecwid-shopping-cart' ) ) );
68
- add_editor_style( plugins_url( 'ecwid-shopping-cart/css/page-editor.css' ) );
69
  }
70
 
71
  public function get_store_svg() {
30
  public function add_mce_plugin($plugins) {
31
 
32
  $plugins_array = array(
33
+ 'ecwid' => ECWID_PLUGIN_URL . 'js/store-editor-mce.js',
34
+ 'ecwid_common' => ECWID_PLUGIN_URL . 'js/store-editor-common.js',
35
  );
36
 
37
  return array_merge($plugins, $plugins_array);
61
  }
62
 
63
  public function add_scripts() {
64
+ wp_enqueue_style( 'ecwid-store-editor-css', ECWID_PLUGIN_URL . 'css/store-popup.css', array(), get_option('ecwid_plugin_version') );
65
+ wp_enqueue_script( 'ecwid-store-editor-common-js', ECWID_PLUGIN_URL . 'js/store-editor-common.js', array(), get_option('ecwid_plugin_version') );
66
+ wp_enqueue_script( 'ecwid-store-editor-page-js', ECWID_PLUGIN_URL . 'js/store-editor-page.js', array(), get_option('ecwid_plugin_version') );
67
  wp_localize_script( 'ecwid-store-editor-page-js', 'ecwid_i18n', array( 'edit_store_appearance' => __( 'Edit Appearance', 'ecwid-shopping-cart' ) ) );
68
+ add_editor_style( ECWID_PLUGIN_URL . 'css/page-editor.css' );
69
  }
70
 
71
  public function get_store_svg() {
includes/oembed.php CHANGED
@@ -56,7 +56,7 @@ function ecwid_get_embed_content()
56
  }
57
 
58
  if (ecwid_is_paid_account()) {
59
- $api = new Ecwid_Api_V3(get_ecwid_store_id());
60
 
61
  $category = $api->get_category($root_category_id);
62
 
56
  }
57
 
58
  if (ecwid_is_paid_account()) {
59
+ $api = new Ecwid_Api_V3();
60
 
61
  $category = $api->get_category($root_category_id);
62
 
includes/themes.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- define( 'ECWID_THEMES_DIR', ECWID_PLUGIN_DIR . '/includes/themes' );
4
 
5
  add_action('after_switch_theme', 'ecwid_after_switch_theme');
6
 
@@ -51,7 +51,8 @@ function ecwid_apply_theme($theme_name = null)
51
  'attitude',
52
  'responsiveboat',
53
  'central',
54
- 'edin'
 
55
  );
56
 
57
 
1
  <?php
2
 
3
+ define( 'ECWID_THEMES_DIR', ECWID_PLUGIN_DIR . 'includes/themes' );
4
 
5
  add_action('after_switch_theme', 'ecwid_after_switch_theme');
6
 
51
  'attitude',
52
  'responsiveboat',
53
  'central',
54
+ 'edin',
55
+ 'accesspress-mag'
56
  );
57
 
58
 
includes/themes/class-ecwid-theme-accesspress-mag.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once ECWID_THEMES_DIR . '/class-ecwid-theme-base.php';
4
+
5
+ class Ecwid_Theme_AccessPressMag extends Ecwid_Theme_Base
6
+ {
7
+ protected $name = 'AccessPress Mag';
8
+
9
+ public function __construct()
10
+ {
11
+ parent::__construct();
12
+
13
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/accesspress-mag.css' , array('accesspress-mag-style'), get_option('ecwid_plugin_version'), 'all' );
14
+ }
15
+ }
16
+
17
+ $ecwid_current_theme = new Ecwid_Theme_AccessPressMag();
includes/themes/class-ecwid-theme-attitude.php CHANGED
@@ -10,7 +10,7 @@ public function __construct()
10
  {
11
  parent::__construct();
12
 
13
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/attitude.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
10
  {
11
  parent::__construct();
12
 
13
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/attitude.css', array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
includes/themes/class-ecwid-theme-base.php CHANGED
@@ -11,7 +11,7 @@ class Ecwid_Theme_Base {
11
  if ( $this->adjust_pb_scroll ) {
12
  wp_enqueue_script(
13
  'ecwid-scroller',
14
- plugins_url( 'ecwid-shopping-cart/js/create_scroller.js' ),
15
  array( 'jquery' ),
16
  get_option('ecwid_plugin_version')
17
  );
11
  if ( $this->adjust_pb_scroll ) {
12
  wp_enqueue_script(
13
  'ecwid-scroller',
14
+ ECWID_PLUGIN_URL . 'js/create_scroller.js' ,
15
  array( 'jquery' ),
16
  get_option('ecwid_plugin_version')
17
  );
includes/themes/class-ecwid-theme-customizr.php CHANGED
@@ -12,8 +12,8 @@ class Ecwid_Theme_Customizr extends Ecwid_Theme_Base
12
  {
13
  parent::__construct();
14
 
15
- wp_enqueue_script( 'ecwid-theme-js', plugins_url( 'ecwid-shopping-cart/js/themes/customizr.js' ), array( 'jquery' ), get_option('ecwid_plugin_version'), true );
16
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/customizr.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
17
  }
18
  }
19
 
12
  {
13
  parent::__construct();
14
 
15
+ wp_enqueue_script( 'ecwid-theme-js', ECWID_PLUGIN_URL . 'js/themes/customizr.js', array( 'jquery' ), get_option('ecwid_plugin_version'), true );
16
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/customizr.css', array(), get_option('ecwid_plugin_version'), 'all' );
17
  }
18
  }
19
 
includes/themes/class-ecwid-theme-edin.php CHANGED
@@ -11,7 +11,7 @@ class Ecwid_Theme_Edin extends Ecwid_Theme_Base
11
  parent::__construct();
12
 
13
  if (ecwid_page_has_productbrowser()) {
14
- wp_enqueue_script( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/js/themes/edin.js' ), array( 'jquery' ), get_option('ecwid_plugin_version') );
15
  }
16
  }
17
  }
11
  parent::__construct();
12
 
13
  if (ecwid_page_has_productbrowser()) {
14
+ wp_enqueue_script( 'ecwid-theme', ECWID_PLUGIN_URL . 'js/themes/edin.js', array( 'jquery' ), get_option('ecwid_plugin_version') );
15
  }
16
  }
17
  }
includes/themes/class-ecwid-theme-evolve.php CHANGED
@@ -10,7 +10,7 @@ class Ecwid_Theme_Evolve extends Ecwid_Theme_Base
10
  {
11
  parent::__construct();
12
 
13
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/evolve.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
10
  {
11
  parent::__construct();
12
 
13
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/evolve.css', array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
includes/themes/class-ecwid-theme-mantra.php CHANGED
@@ -10,7 +10,7 @@ class Ecwid_Theme_Mantra extends Ecwid_Theme_Base
10
  {
11
  parent::__construct();
12
 
13
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/mantra.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
10
  {
11
  parent::__construct();
12
 
13
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/mantra.css', array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
includes/themes/class-ecwid-theme-pagelines.php CHANGED
@@ -12,7 +12,7 @@ class Ecwid_Theme_Pagelines extends Ecwid_Theme_Base
12
  {
13
  parent::__construct();
14
 
15
- wp_enqueue_script( 'ecwid-theme-js', plugins_url( 'ecwid-shopping-cart/js/themes/pagelines.js' ), array( 'jquery' ), get_option('ecwid_plugin_version'), true );
16
  }
17
  }
18
 
12
  {
13
  parent::__construct();
14
 
15
+ wp_enqueue_script( 'ecwid-theme-js', ECWID_PLUGIN_URL . 'js/themes/pagelines.js', array( 'jquery' ), get_option('ecwid_plugin_version'), true );
16
  }
17
  }
18
 
includes/themes/class-ecwid-theme-responsive.php CHANGED
@@ -13,8 +13,8 @@ class Ecwid_Theme_Responsive extends Ecwid_Theme_Base
13
  if (!is_admin()) {
14
 
15
  if ( $this->need_advanced_layout() ) {
16
- wp_enqueue_style( 'ecwid-theme-adjustments' , plugins_url( 'ecwid-shopping-cart/css/themes/responsive-adjustments.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
17
- wp_enqueue_script( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/js/themes/responsive.js' ), array( 'jquery' ), get_option('ecwid_plugin_version'), true );
18
 
19
  add_filter( 'ecwid_minicart_shortcode_content', array( $this, 'minicart_shortcode_content' ) );
20
  add_filter( 'ecwid_search_shortcode_content', array( $this, 'search_shortcode_content' ) );
@@ -22,7 +22,7 @@ class Ecwid_Theme_Responsive extends Ecwid_Theme_Base
22
 
23
  wp_enqueue_style( 'ecwid-open-sans' , 'http://fonts.googleapis.com/css?family=Open+Sans:400,700&subset=latin,cyrillic-ext,cyrillic,greek-ext,vietnamese,greek,latin-ext');
24
  wp_enqueue_style( 'dashicons' );
25
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/responsive.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
26
 
27
  add_filter('body_class', array($this, 'body_class'));
28
 
13
  if (!is_admin()) {
14
 
15
  if ( $this->need_advanced_layout() ) {
16
+ wp_enqueue_style( 'ecwid-theme-adjustments' , ECWID_PLUGIN_URL . 'css/themes/responsive-adjustments.css', array(), get_option('ecwid_plugin_version'), 'all' );
17
+ wp_enqueue_script( 'ecwid-theme', ECWID_PLUGIN_URL . 'js/themes/responsive.js', array( 'jquery' ), get_option('ecwid_plugin_version'), true );
18
 
19
  add_filter( 'ecwid_minicart_shortcode_content', array( $this, 'minicart_shortcode_content' ) );
20
  add_filter( 'ecwid_search_shortcode_content', array( $this, 'search_shortcode_content' ) );
22
 
23
  wp_enqueue_style( 'ecwid-open-sans' , 'http://fonts.googleapis.com/css?family=Open+Sans:400,700&subset=latin,cyrillic-ext,cyrillic,greek-ext,vietnamese,greek,latin-ext');
24
  wp_enqueue_style( 'dashicons' );
25
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/responsive.css', array(), get_option('ecwid_plugin_version'), 'all' );
26
 
27
  add_filter('body_class', array($this, 'body_class'));
28
 
includes/themes/class-ecwid-theme-responsiveboat.php CHANGED
@@ -10,7 +10,7 @@ class Ecwid_Theme_ResonsiveBoat extends Ecwid_Theme_Base
10
  {
11
  parent::__construct();
12
 
13
- wp_enqueue_style( 'ecwid-theme-fixes' , plugins_url( 'ecwid-shopping-cart/css/themes/responsiveboat.css' ), array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
10
  {
11
  parent::__construct();
12
 
13
+ wp_enqueue_style( 'ecwid-theme-fixes' , ECWID_PLUGIN_URL . 'css/themes/responsiveboat.css', array(), get_option('ecwid_plugin_version'), 'all' );
14
  }
15
  }
16
 
includes/themes/class-ecwid-theme-twentyfifteen.php CHANGED
@@ -11,7 +11,7 @@ class Ecwid_Theme_2015 extends Ecwid_Theme_Base
11
  parent::__construct();
12
 
13
  if (ecwid_page_has_productbrowser()) {
14
- wp_enqueue_style( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/css/themes/2015.css' ), array('twentyfifteen-style'), get_option('ecwid_plugin_version') );
15
  }
16
 
17
  add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
11
  parent::__construct();
12
 
13
  if (ecwid_page_has_productbrowser()) {
14
+ wp_enqueue_style( 'ecwid-theme', ECWID_PLUGIN_URL . 'css/themes/2015.css', array('twentyfifteen-style'), get_option('ecwid_plugin_version') );
15
  }
16
 
17
  add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
includes/themes/class-ecwid-theme-twentyfourteen.php CHANGED
@@ -13,7 +13,7 @@ class Ecwid_Theme_2014 extends Ecwid_Theme_Base
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
- wp_enqueue_style( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/css/themes/2014.css' ), array('twentyfourteen-style'), get_option('ecwid_plugin_version') );
17
  }
18
  }
19
  }
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
+ wp_enqueue_style( 'ecwid-theme', ECWID_PLUGIN_URL . 'css/themes/2014.css', array('twentyfourteen-style'), get_option('ecwid_plugin_version') );
17
  }
18
  }
19
  }
includes/themes/class-ecwid-theme-twentysixteen.php CHANGED
@@ -13,7 +13,7 @@ class Ecwid_Theme_2016 extends Ecwid_Theme_Base
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
- wp_enqueue_style( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/css/themes/2016.css' ), array('twentysixteen-style'), get_option('ecwid_plugin_version') );
17
  }
18
  add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
19
  }
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
+ wp_enqueue_style( 'ecwid-theme', ECWID_PLUGIN_URL . 'css/themes/2016.css', array('twentysixteen-style'), get_option('ecwid_plugin_version') );
17
  }
18
  add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
19
  }
includes/themes/class-ecwid-theme-twentytwelve.php CHANGED
@@ -13,7 +13,7 @@ class Ecwid_Theme_2012 extends Ecwid_Theme_Base
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
- wp_enqueue_script( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/js/themes/2012.js' ), array( 'jquery' ), get_option('ecwid_plugin_version'), true );
17
  }
18
  }
19
  }
13
  parent::__construct();
14
 
15
  if (ecwid_page_has_productbrowser()) {
16
+ wp_enqueue_script( 'ecwid-theme', ECWID_PLUGIN_URL . 'js/themes/2012.js', array( 'jquery' ), get_option('ecwid_plugin_version'), true );
17
  }
18
  }
19
  }
includes/widgets.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ include_once "widgets/class-ecwid-widget-badge.php";
4
+ include_once "widgets/class-ecwid-widget-minicart.php";
5
+ include_once "widgets/class-ecwid-widget-minicart-miniview.php";
6
+ include_once "widgets/class-ecwid-widget-recently-viewed.php";
7
+ include_once "widgets/class-ecwid-widget-search.php";
8
+ include_once "widgets/class-ecwid-widget-store-link.php";
9
+ include_once "widgets/class-ecwid-widget-vcategories.php";
10
+
11
+
12
+ function ecwid_sidebar_widgets_init() {
13
+ register_widget('Ecwid_Widget_Badge');
14
+ register_widget('Ecwid_Widget_Search');
15
+ register_widget('Ecwid_Widget_VCategories');
16
+ register_widget('Ecwid_Widget_Minicart_Miniview');
17
+ register_widget('Ecwid_Widget_Minicart');
18
+ register_widget('Ecwid_Widget_Store_Link');
19
+ register_widget('Ecwid_Widget_Recently_Viewed');
20
+ }
21
+
22
+ add_action('widgets_init', 'ecwid_sidebar_widgets_init');
includes/widgets/class-ecwid-widget-badge.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Ecwid_Widget_Badge extends WP_Widget {
4
+
5
+ var $url_template = "https://dj925myfyz5v.cloudfront.net/badges/%s.png";
6
+ var $available_badges;
7
+
8
+ function __construct() {
9
+ $widget_ops = array('classname' => 'widget_ecwid_badge', 'description' => __("Do you like Ecwid and want to help it grow? You can add this fancy 'Powered by Ecwid' badge on your site to show your visitors that you're a proud user of Ecwid.", 'ecwid-shopping-cart') );
10
+ parent::__construct('ecwidbadge', __('Ecwid Badge', 'ecwid-shopping-cart'), $widget_ops);
11
+
12
+ $this->available_badges = array(
13
+ 'ecwid-shopping-cart-widget-5' => array (
14
+ 'name' => 'ecwid-shopping-cart-widget-5',
15
+ 'width' => '73',
16
+ 'height' => '20',
17
+ 'alt' => __('Ecwid shopping cart widget', 'ecwid-shopping-cart')
18
+ ),
19
+ 'ecwid-shopping-cart-widget-6' => array (
20
+ 'name' => 'ecwid-shopping-cart-widget-6',
21
+ 'width' => '73',
22
+ 'height' => '20',
23
+ 'alt' => __('Ecwid shopping cart widget', 'ecwid-shopping-cart')
24
+ ),
25
+ 'ecwid-ecommerce-solution-2' => array (
26
+ 'name' => 'ecwid-ecommerce-solution-2',
27
+ 'width' => '165',
28
+ 'height' => '58',
29
+ 'alt' => __('Ecwid ecommerce solution', 'ecwid-shopping-cart')
30
+ ),
31
+ 'ecwid-free-shopping-cart-2' => array (
32
+ 'name' => 'ecwid-free-shopping-cart-2',
33
+ 'width' => '175',
34
+ 'height' => '58',
35
+ 'alt' => __('Ecwid free shopping cart', 'ecwid-shopping-cart')
36
+ ),
37
+ 'ecwid-shopping-cart-3' => array (
38
+ 'name' => 'ecwid-shopping-cart-3',
39
+ 'width' => '165',
40
+ 'height' => '56',
41
+ 'alt' => __('Ecwid shopping cart', 'ecwid-shopping-cart')
42
+ ),
43
+ 'ecwid-ecommerce-widgets-3' => array (
44
+ 'name' => 'ecwid-ecommerce-widgets-3',
45
+ 'width' => '165',
46
+ 'height' => '58',
47
+ 'alt' => __('Ecwid e-commerce widgets', 'ecwid-shopping-cart')
48
+ ),
49
+ 'ecwid-shopping-cart-3' => array (
50
+ 'name' => 'ecwid-shopping-cart-3',
51
+ 'width' => '165',
52
+ 'height' => '56',
53
+ 'alt' => __('Ecwid shopping cart', 'ecwid-shopping-cart')
54
+ ),
55
+ 'ecwid-ecommerce-widgets-3' => array (
56
+ 'name' => 'ecwid-ecommerce-widgets-3',
57
+ 'width' => '165',
58
+ 'height' => '58',
59
+ 'alt' => __('Ecwid e-commerce widgets', 'ecwid-shopping-cart')
60
+ ),
61
+ 'ecwid-ecommerce-solution-3' => array (
62
+ 'name' => 'ecwid-ecommerce-solution-3',
63
+ 'width' => '165',
64
+ 'height' => '58',
65
+ 'alt' => __('Ecwid ecommerce solution', 'ecwid-shopping-cart')
66
+ ),
67
+ 'ecwid-free-shopping-cart-3' => array (
68
+ 'name' => 'ecwid-free-shopping-cart-3',
69
+ 'width' => '175',
70
+ 'height' => '58',
71
+ 'alt' => __('Ecwid free shopping cart', 'ecwid-shopping-cart')
72
+ )
73
+ );
74
+ }
75
+
76
+ function widget($args, $instance)
77
+ {
78
+ extract($args);
79
+
80
+ if (!isset($instance['badge_id']) || !array_key_exists($instance['badge_id'], $this->available_badges)) {
81
+ return;
82
+ }
83
+ $badge = $this->available_badges[$instance['badge_id']];
84
+ $url = sprintf($this->url_template, $badge['name']);
85
+
86
+ echo $before_widget;
87
+
88
+ echo <<<HTML
89
+ <div>
90
+ <a target="_blank" rel="nofollow" href="http://www.ecwid.com?source=wporg-badge">
91
+ <img src="$url" width="$badge[width]" height="$badge[height]" alt="$badge[alt]" />
92
+ </a>
93
+ </div>
94
+ HTML;
95
+
96
+ echo $after_widget;
97
+ }
98
+
99
+ function update($new_instance, $old_instance){
100
+ $instance = $old_instance;
101
+ $instance['badge_id'] =
102
+ array_key_exists($new_instance['badge_id'], $this->available_badges)
103
+ ? $new_instance['badge_id']
104
+ : '';
105
+
106
+ return $instance;
107
+ }
108
+
109
+ function form($instance) {
110
+ $instance = wp_parse_args( (array) $instance, array('badge_id' => 'ecwid-shopping-cart-widget-5') );
111
+
112
+ foreach ($this->available_badges as $id => $widget) {
113
+ $element_id = "badge-$id";
114
+ $name = $this->get_field_name('badge_id');
115
+ $checked = '';
116
+ if (isset($instance['badge_id']) && $instance['badge_id'] == $id) {
117
+ $checked = 'checked="checked"';
118
+ }
119
+ $url = sprintf($this->url_template, $id);
120
+ $content = <<<HTML
121
+ <label class="ecwid-badge">
122
+ <div class="checkbox">
123
+ <input name="$name" type="radio" value="$widget[name]"$checked/>
124
+ </div>
125
+ <div class="image">
126
+ <img src="$url" width="$widget[width]" height="$widget[height]" alt="$widget[alt]" />
127
+ </div>
128
+ </label>
129
+ HTML;
130
+ echo $content;
131
+ }
132
+ }
133
+ }
includes/widgets/class-ecwid-widget-minicart-miniview.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_Minicart_Miniview extends WP_Widget {
3
+
4
+ function __construct() {
5
+ $widget_ops = array('classname' => 'widget_ecwid_minicart_miniview', 'description' => __("Adds a compact cart widget for customer to see the products they added to the cart.", 'ecwid-shopping-cart') );
6
+ parent::__construct('ecwidminicart_miniview', __('Shopping Cart (Mini)', 'ecwid-shopping-cart'), $widget_ops);
7
+ }
8
+
9
+ function widget($args, $instance) {
10
+ extract($args);
11
+ $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
12
+
13
+ echo $before_widget;
14
+
15
+ if ( $title )
16
+ echo $before_title . $title . $after_title;
17
+
18
+
19
+ echo '<div>';
20
+ echo '<!-- noptimize -->';
21
+
22
+ echo ecwid_get_scriptjs_code();
23
+ echo ecwid_get_product_browser_url_script();
24
+ echo '<script data-cfasync="false" type="text/javascript"> xMinicart("style=left:10px","layout=Mini"); </script>';
25
+
26
+ echo '<!-- /noptimize -->';
27
+ echo '</div>';
28
+
29
+ echo $after_widget;
30
+ }
31
+
32
+ function update($new_instance, $old_instance){
33
+ $instance = $old_instance;
34
+ $instance['title'] = strip_tags(stripslashes($new_instance['title']));
35
+
36
+ return $instance;
37
+ }
38
+
39
+ function form($instance){
40
+ $instance = wp_parse_args( (array) $instance, array('title'=>'') );
41
+
42
+ $title = htmlspecialchars($instance['title']);
43
+
44
+ echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
45
+ }
46
+
47
+ }
includes/widgets/class-ecwid-widget-minicart.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_Minicart extends WP_Widget {
3
+
4
+ function __construct() {
5
+ $widget_ops = array('classname' => 'widget_ecwid_minicart', 'description' => __("Adds a cart widget for customer to see the products they added to the cart.", 'ecwid-shopping-cart') );
6
+ parent::__construct('ecwidminicart', __('Shopping Cart', 'ecwid-shopping-cart'), $widget_ops);
7
+
8
+ }
9
+
10
+ function widget($args, $instance) {
11
+ extract($args);
12
+ $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
13
+
14
+ echo $before_widget;
15
+
16
+ if ( $title )
17
+ echo $before_title . $title . $after_title;
18
+
19
+ echo '<div>';
20
+
21
+ echo '<!-- noptimize -->';
22
+ echo ecwid_get_scriptjs_code();
23
+ echo ecwid_get_product_browser_url_script();
24
+ echo '<script data-cfasync="false" type="text/javascript"> xMinicart("style="); </script>';
25
+
26
+ echo '<!-- /noptimize -->';
27
+ echo '</div>';
28
+
29
+ echo $after_widget;
30
+ }
31
+
32
+ function update($new_instance, $old_instance){
33
+ $instance = $old_instance;
34
+ $instance['title'] = strip_tags(stripslashes($new_instance['title']));
35
+
36
+ return $instance;
37
+ }
38
+
39
+ function form($instance){
40
+ $instance = wp_parse_args( (array) $instance, array('title'=>'') );
41
+
42
+ $title = htmlspecialchars($instance['title']);
43
+
44
+ echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
45
+ }
46
+
47
+ }
includes/widgets/class-ecwid-widget-recently-viewed.php ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_Recently_Viewed extends WP_Widget {
3
+
4
+ var $max = 10;
5
+ var $min = 1;
6
+ var $default = 3;
7
+
8
+ function __construct() {
9
+ $widget_ops = array('classname' => 'widget_ecwid_recently_viewed', 'description' => __('Displays a list of products recently viewed by the customer to easily return to the products they saw in your shop.', 'ecwid-shopping-cart'));
10
+ parent::__construct('ecwidrecentlyviewed', __('Recently Viewed Products', 'ecwid-shopping-cart'), $widget_ops);
11
+ $recently_viewed = json_decode(stripslashes(@$_COOKIE['ecwid-shopping-cart-recently-viewed']));
12
+
13
+ if ($recently_viewed && $recently_viewed->store_id != get_ecwid_store_id() && !is_admin()) {
14
+ setcookie('ecwid-shopping-cart-recently-viewed', null, strtotime('-1 day'));
15
+ }
16
+ }
17
+
18
+ function widget($args, $instance) {
19
+
20
+ wp_enqueue_script('ecwid-recently-viewed-js', ECWID_PLUGIN_URL . 'js/recently-viewed.js', array('jquery', 'utils', 'ecwid-products-list-js'), get_option('ecwid_plugin_version'));
21
+ wp_enqueue_style('ecwid-products-list-css');
22
+ wp_enqueue_style('ecwid-recently-viewed-css', ECWID_PLUGIN_URL . 'css/recently-viewed.css', array(), get_option('ecwid_plugin_version'));
23
+ extract($args);
24
+
25
+ $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
26
+
27
+ echo $before_widget;
28
+
29
+ if ( $title )
30
+ echo $before_title . $title . $after_title;
31
+
32
+ echo '<!-- noptimize -->' . ecwid_get_scriptjs_code() . '<!-- /noptimize -->';
33
+
34
+ $recently_viewed = false;
35
+ if (isset($_COOKIE['ecwid-shopping-cart-recently-viewed'])) {
36
+ $recently_viewed = json_decode($_COOKIE['ecwid-shopping-cart-recently-viewed']);
37
+ }
38
+ $recently_viewed = json_decode(stripslashes(@$_COOKIE['ecwid-shopping-cart-recently-viewed']));
39
+
40
+ if ($recently_viewed && $recently_viewed->store_id != get_ecwid_store_id()) {
41
+ $recently_viewed = null;
42
+ }
43
+
44
+ echo '<div class="ecwid-recently-viewed-products" data-ecwid-max="' . $instance['number_of_products'] . '">';
45
+
46
+
47
+ $api = false;
48
+ if (ecwid_is_api_enabled()) {
49
+ $api = ecwid_new_product_api();
50
+ }
51
+
52
+ $counter = 0;
53
+ $ids = array();
54
+ if ($recently_viewed && isset($recently_viewed->products)) {
55
+
56
+ for ($i = count($recently_viewed->products) - 1; $i >= 0; $i--) {
57
+ $product = $recently_viewed->products[$i];
58
+
59
+ $counter++;
60
+ if (isset($product->id) && isset($product->link)) {
61
+ $ids[] = $product->id;
62
+ $hide = $counter > $instance['number_of_products'] ? ' hidden' : '';
63
+
64
+ if ($api) {
65
+ $product_https = $api->get_product_https($product->id);
66
+ }
67
+
68
+ $name = isset($product_https) ? $product_https['name']: '';
69
+
70
+ echo <<<HTML
71
+ <a class="product$hide" href="$product->link" alt="$name" title="$name">
72
+ <div class="ecwid ecwid-SingleProduct ecwid-Product ecwid-Product-$product->id" data-single-product-link="$product->link" itemscope itemtype="http://schema.org/Product" data-single-product-id="$product->id">
73
+ <div itemprop="image" data-force-image="$product_https[imageUrl]"></div>
74
+ <div class="ecwid-title" itemprop="name"></div>
75
+ <div itemtype="http://schema.org/Offer" itemscope itemprop="offers"><div class="ecwid-productBrowser-price ecwid-price" itemprop="price"></div></div>
76
+ </div>
77
+
78
+ <!-- noptimize --><script type="text/javascript">xSingleProduct();</script><!-- /noptimize -->
79
+ </a>
80
+ HTML;
81
+ }
82
+ }
83
+ } else {
84
+ echo <<<HTML
85
+ <script type="text/javascript">
86
+ jQuery(document).ready(function() {
87
+ wpCookies.remove('ecwid-shopping-cart-recently-viewed');
88
+ recently_viewed = {products: []};
89
+ });
90
+ </script>
91
+ HTML;
92
+ }
93
+ $ids_string = '';
94
+ if (!empty($ids)) {
95
+ $ids_string = implode(',', $ids);
96
+ }
97
+
98
+ echo <<<HTML
99
+ <script type="text/javascript">
100
+ <!--
101
+ jQuery(document).ready(function() {
102
+ jQuery('#$this->id .ecwid-recently-viewed-products').recentlyViewedProducts();
103
+ });
104
+ -->
105
+ </script>
106
+ HTML;
107
+
108
+ echo "</div>";
109
+
110
+ $store_link_message = empty($instance['store_link_title']) ? __('You have not viewed any product yet. Open store.', 'ecwid-shopping-cart') : $instance['store_link_title'];
111
+
112
+ $page_id = ecwid_get_current_store_page_id();
113
+ $post = get_post($page_id);
114
+
115
+ if (empty($recently_viewed->products)) {
116
+ echo '<a class="show-if-empty" href="' . ecwid_get_store_page_url() . '">' . $store_link_message . '</a>';
117
+ }
118
+
119
+ echo $after_widget;
120
+ }
121
+
122
+ function update($new_instance, $old_instance){
123
+ $instance = $old_instance;
124
+ $instance['title'] = strip_tags(stripslashes($new_instance['title']));
125
+ $instance['store_link_title'] = strip_tags(stripslashes($new_instance['store_link_title']));
126
+ $num = intval($new_instance['number_of_products']);
127
+ if ($num > $this->max || $num < $this->min) {
128
+ $num = $this->default;
129
+ }
130
+ $instance['number_of_products'] = intval($new_instance['number_of_products']);
131
+
132
+ return $instance;
133
+ }
134
+
135
+ function form($instance){
136
+
137
+ $instance = wp_parse_args( (array) $instance,
138
+ array(
139
+ 'title' => __('Recently Viewed Products', 'ecwid-shopping-cart'),
140
+ 'store_link_title' => __('You have not viewed any product yet. Open store.', 'ecwid-shopping-cart'),
141
+ 'number_of_products' => 3
142
+ )
143
+ );
144
+
145
+ $title = htmlspecialchars($instance['title']);
146
+ $store_link_title = htmlspecialchars($instance['store_link_title']);
147
+ $number_of_products = $instance['number_of_products'];
148
+ if ($number_of_products)
149
+
150
+ echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title') . ': <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
151
+ echo '<p><label for="' . $this->get_field_name('store_link_title') . '">' . __('Store Link Title', 'ecwid-shopping-cart') . ': <input style="width:100%;" id="' . $this->get_field_id('store_link_title') . '" name="' . $this->get_field_name('store_link_title') . '" type="text" value="' . $store_link_title . '" /></label></p>';
152
+ echo '<p><label for="' . $this->get_field_name('number_of_products') . '">' . __( 'Number of products to show', 'ecwid-shopping-cart' ) . ': <input style="width:100%;" id="' . $this->get_field_id('number_of_products') . '" name="' . $this->get_field_name('number_of_products') . '" type="number" min="' . $this->min . '" max="' . $this->max . '" value="' . $number_of_products . '" /></label></p>';
153
+ }
154
+
155
+ function is_valid_number_of_products($num) {
156
+ return is_numeric($num) && $num <= $this->max && $num >= $this->min;
157
+ }
158
+ }
includes/widgets/class-ecwid-widget-search.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_Search extends WP_Widget {
3
+
4
+ function __construct() {
5
+ $widget_ops = array('classname' => 'widget_ecwid_search', 'description' => __("Displays a simple search box for your customers to find a product in your storex", 'ecwid-shopping-cart'));
6
+ parent::__construct('ecwidsearch', __('Product Search', 'ecwid-shopping-cart'), $widget_ops);
7
+ }
8
+
9
+ function widget($args, $instance) {
10
+ extract($args);
11
+ $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
12
+
13
+ echo $before_widget;
14
+
15
+ if ( $title )
16
+ echo $before_title . $title . $after_title;
17
+
18
+ echo '<div>';
19
+ echo '<!-- noptimize -->';
20
+
21
+ echo ecwid_get_scriptjs_code();
22
+ echo ecwid_get_product_browser_url_script();
23
+ echo '<script data-cfasync="false" type="text/javascript"> xSearchPanel("style="); </script>';
24
+
25
+ echo '<!-- /noptimize -->';
26
+ echo '</div>';
27
+
28
+ echo $after_widget;
29
+ }
30
+
31
+ function update($new_instance, $old_instance){
32
+ $instance = $old_instance;
33
+ $instance['title'] = strip_tags(stripslashes($new_instance['title']));
34
+
35
+ return $instance;
36
+ }
37
+
38
+ function form($instance){
39
+ $instance = wp_parse_args( (array) $instance, array('title'=>'') );
40
+
41
+ $title = htmlspecialchars($instance['title']);
42
+
43
+ echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
44
+ }
45
+
46
+ }
includes/widgets/class-ecwid-widget-store-link.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_Store_Link extends WP_Widget {
3
+
4
+ function __construct() {
5
+ $widget_ops = array('classname' => 'widget_ecwid_store_link', 'description' => __('Displays a link to the store page in sidebar for customer to quickly access your store from any page on the site.', 'ecwid-shopping-cart'));
6
+ parent::__construct('ecwidstorelink', __('Store Page Link', 'ecwid-shopping-cart'), $widget_ops);
7
+ }
8
+
9
+ function widget($args, $instance) {
10
+ extract($args);
11
+ echo $before_widget;
12
+
13
+ echo '<div>';
14
+
15
+ echo '<a href="' . ecwid_get_store_page_url() . '">' . $instance['label'] . '</a>';
16
+ echo '</div>';
17
+
18
+ echo $after_widget;
19
+ }
20
+
21
+ function update($new_instance, $old_instance){
22
+ $instance = $old_instance;
23
+ $instance['label'] = strip_tags(stripslashes($new_instance['label']));
24
+
25
+ return $instance;
26
+ }
27
+
28
+ function form($instance){
29
+ $instance = wp_parse_args( (array) $instance, array( 'label' => __('Shop', 'ecwid-shopping-cart') ) );
30
+
31
+ $label = htmlspecialchars($instance['label']);
32
+
33
+ echo '<p><label for="' . $this->get_field_name('label') . '">' . __('Text') . ': <input style="width:100%;" id="' . $this->get_field_id('label') . '" name="' . $this->get_field_name('label') . '" type="text" value="' . $label . '" /></label></p>';
34
+ }
35
+
36
+ }
includes/widgets/class-ecwid-widget-vcategories.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Ecwid_Widget_VCategories extends WP_Widget {
3
+
4
+ function __construct() {
5
+ $widget_ops = array('classname' => 'widget_ecwid_vcategories', 'description' => __('Adds vertical categories block to let the customer navigate your store.', 'ecwid-shopping-cart'));
6
+ parent::__construct('ecwidvcategories', __('Store Categories', 'ecwid-shopping-cart'), $widget_ops);
7
+ }
8
+
9
+ function widget($args, $instance) {
10
+ extract($args);
11
+ $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
12
+
13
+ echo $before_widget;
14
+
15
+ if ( $title )
16
+ echo $before_title . $title . $after_title;
17
+
18
+ echo '<div>';
19
+ echo '<!-- noptimize -->';
20
+
21
+ echo ecwid_get_scriptjs_code();
22
+ echo ecwid_get_product_browser_url_script();
23
+ echo '<script data-cfasync="false" type="text/javascript"> xVCategories("style="); </script>';
24
+
25
+ echo '<!-- /noptimize -->';
26
+ echo '</div>';
27
+
28
+ echo $after_widget;
29
+ }
30
+
31
+ function update($new_instance, $old_instance){
32
+ $instance = $old_instance;
33
+ $instance['title'] = strip_tags(stripslashes($new_instance['title']));
34
+
35
+ return $instance;
36
+ }
37
+
38
+ function form($instance){
39
+ $instance = wp_parse_args( (array) $instance, array('title'=>'') );
40
+
41
+ $title = htmlspecialchars($instance['title']);
42
+
43
+ echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
44
+ }
45
+
46
+ }
js/admin.js CHANGED
@@ -65,6 +65,7 @@
65
  for (var i in this.widgets) {
66
  if (widgetElement.find('.' + i).length > 0) {
67
  ecwid_kissmetrics_record('sb-widget ' + this.widgets[i] + 'Added');
 
68
  break;
69
  }
70
  }
@@ -115,7 +116,7 @@
115
 
116
  if (jQuery('#ecwid-frame').length > 0) {
117
  if (jQuery('div.update-nag').length > 0) {
118
- jQuery('#superwrap').addClass('has-wp-message');
119
  }
120
  for (var i = 0; i < admin_pages.length; i++) {
121
  jQuery('li.toplevel_page_ecwid .wp-submenu a[href="' + admin_pages[i].url + '"]')
@@ -136,4 +137,8 @@
136
  });
137
  }
138
  }
 
 
 
 
139
  });
65
  for (var i in this.widgets) {
66
  if (widgetElement.find('.' + i).length > 0) {
67
  ecwid_kissmetrics_record('sb-widget ' + this.widgets[i] + 'Added');
68
+ ecwid_kissmetrics_record('sb-widget-added');
69
  break;
70
  }
71
  }
116
 
117
  if (jQuery('#ecwid-frame').length > 0) {
118
  if (jQuery('div.update-nag').length > 0) {
119
+ jQuery('#ecwid-frame').addClass('has-wp-message');
120
  }
121
  for (var i = 0; i < admin_pages.length; i++) {
122
  jQuery('li.toplevel_page_ecwid .wp-submenu a[href="' + admin_pages[i].url + '"]')
137
  });
138
  }
139
  }
140
+
141
+ jQuery('#wp-admin-bar-ecwid-main-default a').click(function() {
142
+ ecwid_kissmetrics_record('Top Menu Clicked');
143
+ });
144
  });
js/kissmetrics.js CHANGED
@@ -2,15 +2,22 @@ if ( typeof ecwid_kissmetrics.store_id != 'undefined' ) {
2
  _kmq.push([ 'identify', ecwid_kissmetrics.store_id ] );
3
  }
4
 
 
 
 
 
 
5
 
6
  function ecwid_kissmetrics_record(event) {
7
  if (typeof this.fired == 'undefined') {
8
  this.fired = [];
9
  }
10
 
 
 
11
  if (this.fired.indexOf(event) != -1) return;
12
 
13
- ecwid_kissmetrics.events.push({event: event});
14
  this.fired.push(event);
15
 
16
  ecwid_kissmetrics_flush();
@@ -21,11 +28,16 @@ function ecwid_kissmetrics_flush() {
21
  return;
22
  }
23
 
24
- for (var i = 0; i < ecwid_kissmetrics.events.length; i++) {
25
- _kmq.push( [ 'record', ecwid_kissmetrics.events[i].event ] );
 
 
 
 
 
26
  }
27
 
28
- ecwid_kissmetrics.events = [];
29
  }
30
 
31
  jQuery(document).ready(function() {
2
  _kmq.push([ 'identify', ecwid_kissmetrics.store_id ] );
3
  }
4
 
5
+ function ecwid_kissmetrics_set(nameValue) {
6
+ ecwid_kissmetrics.items.push({'property' : nameValue });
7
+
8
+ ecwid_kissmetrics_flush();
9
+ }
10
 
11
  function ecwid_kissmetrics_record(event) {
12
  if (typeof this.fired == 'undefined') {
13
  this.fired = [];
14
  }
15
 
16
+ event = 'wp-plugin ' + event;
17
+
18
  if (this.fired.indexOf(event) != -1) return;
19
 
20
+ ecwid_kissmetrics.items.push({event: event});
21
  this.fired.push(event);
22
 
23
  ecwid_kissmetrics_flush();
28
  return;
29
  }
30
 
31
+ for (var i = 0; i < ecwid_kissmetrics.items.length; i++) {
32
+ var item = ecwid_kissmetrics.items[i];
33
+ if (typeof item.event != 'undefined') {
34
+ _kmq.push(['record', ecwid_kissmetrics.items[i].event]);
35
+ } else if (typeof item.property != 'undefined') {
36
+ _kmq.push( [ 'set', ecwid_kissmetrics.items[i].property ] );
37
+ }
38
  }
39
 
40
+ ecwid_kissmetrics.items = [];
41
  }
42
 
43
  jQuery(document).ready(function() {
js/landing.js CHANGED
@@ -2,4 +2,49 @@ switch_to_connect = function() {
2
  jQuery('.ecwid-landing').removeClass('register').addClass('connect');
3
  jQuery('.ecwid-thank-step-one').addClass('active');
4
  wpCookies.set('ecwid_create_store_clicked', 1);
5
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  jQuery('.ecwid-landing').removeClass('register').addClass('connect');
3
  jQuery('.ecwid-thank-step-one').addClass('active');
4
  wpCookies.set('ecwid_create_store_clicked', 1);
5
+ }
6
+
7
+ hide_on_loading = '.create-store-button, .create-store-have-account-question';
8
+ invisible_on_loading = '.create-store-have-account-link';
9
+ show_on_loading = '.create-store-loading, .create-store-loading-note';
10
+
11
+ hide_on_success = '.create-store-loading, .create-store-loading-note';
12
+ show_on_success = '.create-store-success, .create-store-success-note';
13
+
14
+
15
+ jQuery(document).ready(function(){
16
+
17
+ jQuery('.create-store-button').click(function() {
18
+
19
+ var $context = jQuery(this).closest('.ecwid-button');
20
+ jQuery(hide_on_loading + ', ' + invisible_on_loading, $context).fadeTo(150, .01).promise().done(function() {
21
+ jQuery(hide_on_loading, $context).hide();
22
+ jQuery(invisible_on_loading, $context).css('visibility', 'hidden');
23
+
24
+ jQuery(show_on_loading, $context).fadeIn(300);
25
+ })
26
+
27
+ jQuery.ajax(ajaxurl + '?action=ecwid_create_store',
28
+ {
29
+ success: function(result) {
30
+ var html = result;
31
+ jQuery(hide_on_success, $context).fadeTo(150, .01).promise().done(function() {
32
+ jQuery(hide_on_success, $context).hide();
33
+
34
+ jQuery(show_on_success, $context).fadeIn(300);
35
+ setTimeout(function() {
36
+ location.href="admin.php?page=ecwid&just-created";
37
+ }, 1000);
38
+ })
39
+ },
40
+ error: function() {
41
+ window.location.href = ecwidParams.registerLink;
42
+ }
43
+ }
44
+ );
45
+ });
46
+
47
+ });
48
+ switch_to_success = function() {
49
+
50
+ }
js/nav-menu.js CHANGED
@@ -66,7 +66,7 @@ jQuery(document).ready(function() {
66
  if (!findEcwidLink(element)) return;
67
 
68
  ecwid_kissmetrics_record('menu-items ' + ecwidClasses[ecwidLink] + 'Added');
69
-
70
  }
71
 
72
  findEcwidLink = function(element) {
66
  if (!findEcwidLink(element)) return;
67
 
68
  ecwid_kissmetrics_record('menu-items ' + ecwidClasses[ecwidLink] + 'Added');
69
+ ecwid_kissmetrics_record('menu-items-added');
70
  }
71
 
72
  findEcwidLink = function(element) {
languages/ecwid-shopping-cart-ru_RU.mo CHANGED
Binary file
languages/ecwid-shopping-cart-ru_RU.po CHANGED
@@ -133,7 +133,7 @@ msgstr "Просмотренные товары"
133
  msgid "Number of products to show"
134
  msgstr "Количество товаров для отображения"
135
 
136
- msgid "Greetings! Your Ecwid store is now active."
137
  msgstr "Добро пожаловать в Эквид!"
138
 
139
  msgid "Take a few simple steps to complete store setup"
@@ -157,11 +157,11 @@ msgstr "Настроить внешний вид"
157
  msgid "Your store is almost ready!"
158
  msgstr "Магазин почти готов!"
159
 
160
- msgid "Connect your Ecwid account with this site to complete setup and start selling"
161
- msgstr "Привяжите Эквид-аккаунт к сайту, чтобы завершить установку и начать продавать"
162
 
163
- msgid "Connect Your Ecwid Store"
164
- msgstr "Привязать Эквид-аккаунт"
165
 
166
  msgid "To add extra functions to your store, drag and drop Ecwid store elements on your site. When you're done, you can get back to modifying your settings."
167
  msgstr "Добавьте дополнительные элементы магазина, перетащив виджеты Эквида в нужное место сайта. После установки виджетов можете вернуться к настройкам магазина."
@@ -289,9 +289,6 @@ msgstr "Ошибка подключения: после нажатия на кн
289
  msgid "Don't have Ecwid account? Create it here"
290
  msgstr "Ещё нет аккаунта в Эквиде? Зарегистрируйтесь"
291
 
292
- msgid "Questions? <a %s>Read FAQ</a> or contact support at <a %s>wordpress@ecwid.com</a>"
293
- msgstr "Есть вопросы? Посетите <a %s>Центр поддержки Эквида (англ)</a> или напишите нам на <a %s>wordpress@ecwid.com</a>"
294
-
295
  msgid "Store ID"
296
  msgstr "ID Магазина"
297
 
@@ -419,7 +416,7 @@ msgid "More than 800,000 merchants in 175 countries"
419
  msgstr "Эквид уже используют 800,000 продавцов из 175 стран"
420
 
421
  msgid "Start selling <br>on your WordPress <nobr>site for free</nobr>"
422
- msgstr "Начните продавать<br>на своём Wordpress <nobr>сайте бесплатно</nobr>"
423
 
424
  msgid "Get Started, Create Ecwid Account"
425
  msgstr "Зарегистрировать аккаунт"
@@ -512,7 +509,7 @@ msgid "Sales"
512
  msgstr "Продажи"
513
 
514
  msgid "If you want to connect another Ecwid store, you can re-connect on <a %s>this page</a>"
515
- msgstr "Чтобы отвязать Эквид-аккаунт от сайта и подключить другой, воспользуйтесь <a %s>этой страницей<a>"
516
 
517
  msgid "Your store Control Panel. Right here in WordPress."
518
  msgstr "Панель управления магазином, встроенная в Wordpress."
@@ -529,8 +526,47 @@ msgstr "Сообщить о проблеме"
529
  msgid "https://help.ecwid.com"
530
  msgstr "https://help.ecwid.com/customer/ru/portal/articles"
531
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  msgid "Download log file"
533
  msgstr "Скачать лог-файл"
534
 
535
  msgid "See more"
536
- msgstr "Посмотреть все"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  msgid "Number of products to show"
134
  msgstr "Количество товаров для отображения"
135
 
136
+ msgid "Greetings! Your Ecwid plugin is now active."
137
  msgstr "Добро пожаловать в Эквид!"
138
 
139
  msgid "Take a few simple steps to complete store setup"
157
  msgid "Your store is almost ready!"
158
  msgstr "Магазин почти готов!"
159
 
160
+ msgid "Complete setup and start selling"
161
+ msgstr "Завершите установку и начните продавать"
162
 
163
+ msgid "Complete Setup"
164
+ msgstr "Продолжить установку"
165
 
166
  msgid "To add extra functions to your store, drag and drop Ecwid store elements on your site. When you're done, you can get back to modifying your settings."
167
  msgstr "Добавьте дополнительные элементы магазина, перетащив виджеты Эквида в нужное место сайта. После установки виджетов можете вернуться к настройкам магазина."
289
  msgid "Don't have Ecwid account? Create it here"
290
  msgstr "Ещё нет аккаунта в Эквиде? Зарегистрируйтесь"
291
 
 
 
 
292
  msgid "Store ID"
293
  msgstr "ID Магазина"
294
 
416
  msgstr "Эквид уже используют 800,000 продавцов из 175 стран"
417
 
418
  msgid "Start selling <br>on your WordPress <nobr>site for free</nobr>"
419
+ msgstr "Начните продавать<br>на своём WordPress <nobr>сайте бесплатно</nobr>"
420
 
421
  msgid "Get Started, Create Ecwid Account"
422
  msgstr "Зарегистрировать аккаунт"
509
  msgstr "Продажи"
510
 
511
  msgid "If you want to connect another Ecwid store, you can re-connect on <a %s>this page</a>"
512
+ msgstr "Чтобы отвязать Эквид-аккаунт от сайта и подключить другой, воспользуйтесь <a %s>этой страницей</a>"
513
 
514
  msgid "Your store Control Panel. Right here in WordPress."
515
  msgstr "Панель управления магазином, встроенная в Wordpress."
526
  msgid "https://help.ecwid.com"
527
  msgstr "https://help.ecwid.com/customer/ru/portal/articles"
528
 
529
+ msgid "Welcome to Ecwid!"
530
+ msgstr "Добро пожаловать в Ecwid!"
531
+
532
+ msgid "Thank you for choosing Ecwid to build your online store. The first step to sell successfully online is to setup your store! Let’s get started and add a store to your website in a few simple steps."
533
+ msgstr "Спасибо, что выбрали Ecwid для создания вашего интернет-магазина. Первый шаг к успешной онлайн торговле — настройка магазина! Давайте добавим магазин на ваш сайт за несколько простых шагов."
534
+
535
+ msgid "Create Free Ecwid Store"
536
+ msgstr "Создать Эквид-магазин"
537
+
538
+ msgid "Preparing your store dashboard"
539
+ msgstr "Подготовка панели управления"
540
+
541
+ msgid "Store is created"
542
+ msgstr "Магазин создан"
543
+
544
  msgid "Download log file"
545
  msgstr "Скачать лог-файл"
546
 
547
  msgid "See more"
548
+ msgstr "Посмотреть все"
549
+
550
+ msgid "Read FAQ"
551
+ msgstr "Посмотреть FAQ"
552
+
553
+ msgid "https://help.ecwid.com/customer/portal/articles/1085017-wordpress-downloadable"
554
+ msgstr "https://help.ecwid.com/customer/ru/portal/articles/1085017-wordpress-org"
555
+
556
+ msgid "Questions?"
557
+ msgstr "Есть вопросы?"
558
+
559
+ msgid "<a target=\"_blank\" href=\"https://help.ecwid.com/customer/portal/articles/1085017-wordpress-downloadable\">Read FAQ</a> or contact support at <a %s>wordpress@ecwid.com</a>"
560
+ msgstr "Посетите <a target=\"_blank\" href=\"https://help.ecwid.com/customer/ru/portal/articles/1085017-wordpress-org\">Центр поддержки Эквида</a> или напишите нам на <a %s>wordpress@ecwid.com</a>"
561
+
562
+ msgid "Want to connect another Ecwid store?"
563
+ msgstr "Хотите подключить другой Эквид-магазин?"
564
+
565
+ msgid "You can reconnect on <a %s>this page</a>"
566
+ msgstr "<a %s>Отвязать Эквид-аккаунт от сайта и подключить другой</a>"
567
+
568
+ msgid "Creating store"
569
+ msgstr "Создание магазина"
570
+
571
+ msgid "Manage Store on iPhone, iPad or Android"
572
+ msgstr "Управляйте магазином с iPhone, iPad, Android"
lib/ecwid_api_v3.php CHANGED
@@ -11,9 +11,9 @@ class Ecwid_Api_V3
11
 
12
  public $store_id = null;
13
 
14
- public function __construct($store_id) {
15
 
16
- $this->store_id = $store_id;
17
  $this->_api_url = ' https://app.ecwid.com/api/v3/';
18
  $this->_stores_api_url = $this->_api_url . 'stores';
19
 
@@ -163,13 +163,57 @@ class Ecwid_Api_V3
163
 
164
  $url = $this->build_request_url($this->_stores_api_url, $params);
165
 
166
- $result = EcwidPlatform::fetch_url($url);
167
 
168
  return @$result['code'] == 200;
169
  }
170
 
171
- public function create_store($params)
172
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  $request_params = array(
174
  'appClientId',
175
  'appSecretKey',
@@ -177,10 +221,7 @@ class Ecwid_Api_V3
177
  );
178
  $url = $this->build_request_url($this->_stores_api_url, $request_params);
179
 
180
- return $url;
181
-
182
- $result = EcwidPlatform::http_post_request($url, $params);
183
-
184
  return $result;
185
  }
186
 
11
 
12
  public $store_id = null;
13
 
14
+ public function __construct() {
15
 
16
+ $this->store_id = EcwidPlatform::get_store_id();
17
  $this->_api_url = ' https://app.ecwid.com/api/v3/';
18
  $this->_stores_api_url = $this->_api_url . 'stores';
19
 
163
 
164
  $url = $this->build_request_url($this->_stores_api_url, $params);
165
 
166
+ $result = EcwidPlatform::http_get_request($url);
167
 
168
  return @$result['code'] == 200;
169
  }
170
 
171
+ public function create_store()
172
  {
173
+ global $current_user;
174
+ $admin_email = $current_user->user_email;
175
+
176
+ $admin_first = get_user_meta($current_user->ID, 'first_name', true);
177
+ if (!$admin_first) {
178
+ $admin_first = get_user_meta($current_user->ID, 'nickname', true);
179
+ }
180
+ $admin_last = get_user_meta($current_user->ID, 'last_name', true);
181
+ if (!$admin_last) {
182
+ $admin_last = get_user_meta($current_user->ID, 'nickname', true);
183
+ }
184
+ $admin_name = "$admin_first $admin_last";
185
+ $admin_nickname = $current_user->display_name;
186
+ $store_url = ecwid_get_store_page_url();
187
+ $site_name = get_bloginfo('name');
188
+ $site_email = get_option('admin_email');
189
+ $params = array(
190
+ 'merchant' => array(
191
+ 'email' => $admin_email,
192
+ 'name' => $admin_name,
193
+ 'password' => wp_generate_password(8),
194
+ 'ip' => $_SERVER['REMOTE_ADDR']
195
+ ),
196
+ 'affiliatePartner' => array(
197
+ 'source' => 'wporg'
198
+ ),
199
+ 'profile' => array(
200
+ 'generalInfo' => array(
201
+ 'storeUrl' => $store_url
202
+ ),
203
+ 'account' => array(
204
+ 'accountName' => $admin_name,
205
+ 'accountNickName' => $admin_nickname,
206
+ 'accountEmail' => $admin_email
207
+ ),
208
+ 'settings' => array(
209
+ 'storeName' => $site_name
210
+ ),
211
+ 'mailNotifications' => array(
212
+ 'adminNotificationEmails' => array($site_email),
213
+ 'customerNotificationFromEmail' => $site_email
214
+ )
215
+ ),
216
+ );
217
  $request_params = array(
218
  'appClientId',
219
  'appSecretKey',
221
  );
222
  $url = $this->build_request_url($this->_stores_api_url, $request_params);
223
 
224
+ $result = EcwidPlatform::http_post_request($url, json_encode($params));
 
 
 
225
  return $result;
226
  }
227
 
lib/ecwid_platform.php CHANGED
@@ -6,6 +6,11 @@ class EcwidPlatform {
6
 
7
  static protected $crypt = null;
8
 
 
 
 
 
 
9
  static public function init_crypt($force = false)
10
  {
11
  if ( $force || is_null(self::$crypt) ) {
@@ -66,63 +71,77 @@ class EcwidPlatform {
66
 
67
  static public function fetch_url($url)
68
  {
69
- $use_file_get_contents = get_option('ecwid_fetch_url_use_file_get_contents', false);
70
-
71
- if ($use_file_get_contents == 'Y') {
72
- $result = @file_get_contents($url);
73
- } else {
74
- if (get_option('ecwid_http_use_stream', false)) {
75
- self::$http_use_streams = true;
 
 
 
 
 
 
 
 
 
 
76
  }
77
- $result = wp_remote_get( $url, array( 'timeout' => get_option( 'ecwid_remote_get_timeout', 5 ) ) );
 
78
 
79
- if (get_option('ecwid_http_use_stream', false)) {
80
- self::$http_use_streams = false;
81
- }
82
- if (!is_array($result)) {
83
- $result = @file_get_contents($url);
84
- if (!empty($result)) {
85
- update_option('ecwid_fetch_url_use_file_get_contents', true);
86
- }
87
- }
88
- }
89
-
90
- $return = array(
91
- 'code' => '',
92
- 'data' => '',
93
- 'message' => ''
94
- );
95
-
96
- if (is_array($result)) {
97
- $return = array(
98
- 'code' => $result['response']['code'],
99
- 'data' => $result['body']
100
- );
101
- } elseif (is_object($result)) {
102
-
103
- $return = array(
104
- 'code' => $result->get_error_code(),
105
- 'data' => $result->get_error_data(),
106
- 'message' => $result->get_error_message()
107
- );
108
-
109
- $get_contents = file_get_contents($url);
110
- if ($get_contents !== false) {
111
- $return = array(
112
- 'code' => 200,
113
- 'data' => $get_contents,
114
- 'is_file_get_contents' => true
115
- );
116
- }
117
- }
118
-
119
- return $return;
 
 
120
  }
121
 
122
  static public function http_post_request($url, $data = array())
123
  {
124
  $result = null;
125
  if (get_option('ecwid_http_use_stream', false) !== true) {
 
126
  $result = wp_remote_post(
127
  $url,
128
  array( 'body' => $data )
6
 
7
  static protected $crypt = null;
8
 
9
+ static public function get_store_id()
10
+ {
11
+ return get_ecwid_store_id();
12
+ }
13
+
14
  static public function init_crypt($force = false)
15
  {
16
  if ( $force || is_null(self::$crypt) ) {
71
 
72
  static public function fetch_url($url)
73
  {
74
+ $use_file_get_contents = get_option('ecwid_fetch_url_use_file_get_contents', false);
75
+
76
+ if ($use_file_get_contents == 'Y') {
77
+ $result = @file_get_contents($url);
78
+ } else {
79
+ if (get_option('ecwid_http_use_stream', false)) {
80
+ self::$http_use_streams = true;
81
+ }
82
+ $result = wp_remote_get( $url, array( 'timeout' => get_option( 'ecwid_remote_get_timeout', 5 ) ) );
83
+
84
+ if (get_option('ecwid_http_use_stream', false)) {
85
+ self::$http_use_streams = false;
86
+ }
87
+ if (!is_array($result)) {
88
+ $result = @file_get_contents($url);
89
+ if (!empty($result)) {
90
+ update_option('ecwid_fetch_url_use_file_get_contents', true);
91
  }
92
+ }
93
+ }
94
 
95
+ $return = array(
96
+ 'code' => '',
97
+ 'data' => '',
98
+ 'message' => ''
99
+ );
100
+
101
+ if (is_string($result)) {
102
+ $return['code'] = 200;
103
+ $return['data'] = $result;
104
+ }
105
+
106
+ if (is_array($result)) {
107
+ $return = array(
108
+ 'code' => $result['response']['code'],
109
+ 'data' => $result['body']
110
+ );
111
+ } elseif (is_object($result)) {
112
+
113
+ $return = array(
114
+ 'code' => $result->get_error_code(),
115
+ 'data' => $result->get_error_data(),
116
+ 'message' => $result->get_error_message()
117
+ );
118
+
119
+ $get_contents = file_get_contents($url);
120
+ if ($get_contents !== false) {
121
+ $return = array(
122
+ 'code' => 200,
123
+ 'data' => $get_contents,
124
+ 'is_file_get_contents' => true
125
+ );
126
+ }
127
+ }
128
+
129
+ if ( empty($return['data']) || $return['code'] != 200 ) {
130
+ update_option('ecwid_remote_get_fails', 1);
131
+ }
132
+
133
+ return $return;
134
+ }
135
+
136
+ static public function http_get_request($url) {
137
+ return self::fetch_url($url);
138
  }
139
 
140
  static public function http_post_request($url, $data = array())
141
  {
142
  $result = null;
143
  if (get_option('ecwid_http_use_stream', false) !== true) {
144
+
145
  $result = wp_remote_post(
146
  $url,
147
  array( 'body' => $data )
readme.txt CHANGED
@@ -1,61 +1,61 @@
1
  === Ecwid Shopping Cart ===
2
  Contributors: ecwid
3
- Tags: ecwid, shopping cart, ecommerce, wordpress ecommerce, wp e-commerce, paypal, e-commerce, online store, store, shop, cart, online shop, shopping, digital goods, downloadable products, product catalog, ecomerce, products, facebook, f-commerce
4
  Requires at least: 3.5
5
  Tested up to: 4.4
6
- Stable tag: 4.0.7
7
 
8
- Ecwid is a full-featured shopping cart that can be added to any Wordpress site in less than 5 minutes. Start using Ecwid for free today.
9
 
10
  == Description ==
11
- **Wordpress.com officially recommends Ecwid as an e-commerce solution to millions of its users!**
12
 
13
- [Ecwid](http://www.ecwid.com?source=wporg-plugin-site "Ecwid site") is a powerful and easy-to-use shopping cart solution that allows you to sell on your WordPress website. Join over *800,000* sellers in *175* countries and sell globally with over *40* international payment options, real-time shipping integrations and support of *45* languages.
14
 
15
- = Full-featured Shopping Cart =
16
 
17
- Ecwid is a free e-commerce solution that is designed to fit any existing site. Simply set up this plugin and your products, categories and checkout pages will automatically embed on your WordPress site and adjust themselves to the given page size and layout. Quickly launch your online shop and use [Ecwid's rich feature set](http://www.ecwid.com/features?source=wporg-plugin-site "Ecwid features") to attract more customers to your WordPress store.
18
 
19
- = Data Security and Seamless Upgrades =
20
 
21
- With Ecwid, your store data is fully hosted on our secure servers. So, regardless of the hosting you use, you get free of cost:
22
 
23
- * unlimited storage and regular backups
24
- * seamless upgrades and security updates
25
- * secure checkout via encrypted HTTPS connection
26
-
27
- So, you don't need to worry about software updates, security patches and server maintenance - we do that for you. Your online store gets all the new features and bug fixes automatically.
28
 
 
29
 
30
- = Mobile Responsive Design =
31
 
32
- Ecwid works fine on any Wordpress site, especially on those running mobile-optimized themes. Your store looks perfect on any smartphone and automatically adapts to your customer’s screen size: laptops, tablets, smart TVs or smart watches. Check out this [demo](http://www.ecwid.com/demo?source=wporg-plugin-site)
33
 
 
 
 
34
 
35
- = Social Commerce =
36
 
37
- Unlock power of social commerce with Ecwid – add your existing online store to Facebook in a few clicks and sell to millions of Facebook users. Ecwid will automatically synchronize your products, customers, orders and inventory between your WordPress and Facebook store fronts. Ecwid is the **#1 e-commerce app on Facebook**. Join!
38
 
 
39
 
40
  = Sell Everywhere =
41
 
42
- With Ecwid, you can mirror your online shop on many websites, blogs, social sites and marketplaces like *Google Shopping*, *Yahoo* and *Shopping.com* and sell simultaneously everywhere. Add your store to as many sites as you want, manage it from one place.
43
 
 
 
 
44
 
45
- = Lightning Fast =
46
 
47
- New-gen technologies make Ecwid much faster than usual shopping carts regardless the hosting service you use.
48
 
 
49
 
50
- = Free =
51
- Although Ecwid is packed with high-value features, Free plan is always available with no setup charges and no transaction fees. Get your online store up and running without paying anything. As your business grows, you can consider upgrading to one of our premium plans to get more ecommerce features. See also: [Ecwid plan and pricing](http://www.ecwid.com/pricing?source=wporg-plugin-site)
52
 
53
- = See In Action =
54
 
55
  * [Demo Store](http://www.ecwid.com/demo?source=wporg-plugin-site "Ecwid demo")
56
  * [Ecwid Control panel](https://my.ecwid.com/?source=wporg-plugin-site "Ecwid Control Panel") (you will be able to create a free Ecwid account)
57
 
58
-
59
  = Ecwid Site =
60
 
61
  * [www.ecwid.com](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid site")
@@ -104,8 +104,18 @@ http://codex.wordpress.org/Managing_Plugins#Installing_Plugins
104
  * [Ecwid site](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid Site")
105
 
106
  == Changelog ==
107
- = 4.1 =
 
 
 
 
 
 
 
 
 
108
 
 
109
  - **Product images are included in the sitemap generated by the Yoast SEO plugin.** Ecwid is integrated with popular SEO plugins: Yoast SEO and Google XML Sitemaps, which allows merchants to generate a sitemap containing the links to their products and categories. Now, the sitemaps generated by Yoast SEO will also automatically include links to the product images. This will make Google better index your products pictures and list them in the search results.
110
  - **Ecwid plugin now supports oEmbed discovery.** As of version 4.4, WordPress supports oEmbed. In short, that's a tool which makes a link to a post or a page of your site looks nice when pasted on another site supporting this. Ecwid now supports it too, so if you paste a link to your store page on any other oEmbed-empowered site (e.g. another Wordpress site), it will automatically displays a nice widget with the page title and a list of your store categories.
111
  - Fixes and improvements for the storefront widgets and for the plugins admin pages.
1
  === Ecwid Shopping Cart ===
2
  Contributors: ecwid
3
+ Tags: ecwid, shopping cart, ecommerce, paypal, e-commerce, online store, store, shop, cart, digital goods, downloadable products, product catalog, facebook
4
  Requires at least: 3.5
5
  Tested up to: 4.4
6
+ Stable tag: 4.1.2
7
 
8
+ Powerful, easy to use shopping cart. PCI DSS Level 1: same as your bank. Sell on the go iPhone&Android app. Superb support. Free plan available
9
 
10
  == Description ==
11
+ Ecwid is a powerful, secure and easy-to-use shopping cart solution that allows you to sell on your WordPress website. Join over *900,000* sellers in *175* countries and sell globally with over *40* international payment options, real-time shipping integrations and support of *45* languages.
12
 
13
+ = PCI DSS validated Level 1 Service Provider =
14
 
15
+ Ecwid is PCI DSS Level 1 certified, which is the gold standard for e-commerce solutions worldwide. This means that when selling online with Ecwid, you won’t have any problems with the bank you do business with. With 40+ payment options and secure HTTPS checkout your Ecwid store is PCI DSS compliant from the beginning.
16
 
17
+ = Free Support =
18
 
19
+ Friendly and knowledgeable support experts available 24/5 so you can get immediate help when you need it. Free email support and community forums. Unlimited chat and phone support available in premium plans.
20
 
 
21
 
22
+ = Merchant Mobile Apps =
 
 
 
 
23
 
24
+ Ecwid provides free mobile applications for iOS and Android to manage your store and sell on the go. Scan products, track inventory, manage sales and accept payments using your mobile device as a POS station. Everything is automatically synchronized with your Wordpress store.
25
 
26
+ = Unlimited Storage, Automatic Backups and Seamless Upgrades =
27
 
28
+ With Ecwid, your store data is fully hosted on our secure servers. Regardless of the hosting service you use, your Ecwid store includes:
29
 
30
+ * unlimited storage
31
+ * regular backups
32
+ * seamless upgrades and security updates
33
 
34
+ So, you don't need to worry about software updates, security patches and server maintenance - we do that for you. Your online store gets all the new features and bug fixes automatically.
35
 
36
+ = Facebook Storefront =
37
 
38
+ Add your online store to Facebook and sell to millions of Facebook users. No addons needed. Ecwid will automatically synchronize your products, customers, orders and inventory between your WordPress and Facebook storefronts. Ecwid is the **#1 e-commerce app on Facebook**. Join!
39
 
40
  = Sell Everywhere =
41
 
42
+ With Ecwid, you can include your online shop on multiple websites, blogs, social sites and marketplaces like *Google Shopping* and *eBay* and sell simultaneously everywhere. Add your store to as many sites as you want, manage it from one place.
43
 
44
+ = Mobile Responsive Design =
45
+
46
+ Ecwid works great on any Wordpress site, especially those running on mobile-optimized themes. Your store looks perfect on smartphones and automatically adapts to your customer’s screen size: laptops, tablets, smart TVs or smart watches. Check out this [demo](http://www.ecwid.com/demo?source=wporg-plugin-site)
47
 
 
48
 
49
+ = Free Plan Available =
50
 
51
+ The Free plan is always available with no hidden setup charges or transaction fees. Get your online store up and running at zero cost. As your business grows, Ecwid will grow with you. When the time is right, consider upgrading to one of our premium plans to get more robust ecommerce features. See also: [Ecwid plan and pricing](http://www.ecwid.com/pricing?source=wporg-plugin-site)
52
 
 
 
53
 
54
+ = See Ecwid In Action =
55
 
56
  * [Demo Store](http://www.ecwid.com/demo?source=wporg-plugin-site "Ecwid demo")
57
  * [Ecwid Control panel](https://my.ecwid.com/?source=wporg-plugin-site "Ecwid Control Panel") (you will be able to create a free Ecwid account)
58
 
 
59
  = Ecwid Site =
60
 
61
  * [www.ecwid.com](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid site")
104
  * [Ecwid site](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid Site")
105
 
106
  == Changelog ==
107
+ = 4.1.2 =
108
+ - **Ecwid mobile apps badges of the dashboard page.** We made a facelift for the plugin dashboard page footer and included mobile apps badges there to make it easier for new users to find and install Ecwid mobile applications for iPhone, iPad and Android. Why bother to install it? It allows you to manage your store and sell on the go.
109
+ - **Fixes for the embedded store Control Panel.** There were issues in the store control panel when the Wordpress site was hosted on a server with incorrect system date set. We made the plugin tolerant of this kind of hosting issues – the embedded store Control Panel should now be displayed fine on every server.
110
+ - **A fix for the Advanced settings page in the plugin backend.** In some rare cases, the advanced settings page in the plugin didn't show the Chameleon option, which enables auto adjustment of the store layout. We fixed that and the Chameleon option is now available for every user. A good moment to try it, if you haven't yet.
111
+ - A few miscellaneous fixes and improvemens in the plugin core.
112
+
113
+ = 4.1.1 =
114
+ - **Layout improvements for the Accesspress-mag theme.** Accesspress-mag theme users might notice slight glitches in the store buttons. We fixed those.
115
+ - **Added the page default category dropdown for free users.** When you add a store on your site page, you can set the store category to be displayed on that page. This "default category" tool was previously just a text input where you were supposed to put the category ID, if you're on free Ecwid plan. Now it's a dropdown menu so you can easily select a store category for each page. It's very useful if you want to display different categories on different pages of your site.
116
+ - Minor bug fixes and improvements
117
 
118
+ = 4.1 =
119
  - **Product images are included in the sitemap generated by the Yoast SEO plugin.** Ecwid is integrated with popular SEO plugins: Yoast SEO and Google XML Sitemaps, which allows merchants to generate a sitemap containing the links to their products and categories. Now, the sitemaps generated by Yoast SEO will also automatically include links to the product images. This will make Google better index your products pictures and list them in the search results.
120
  - **Ecwid plugin now supports oEmbed discovery.** As of version 4.4, WordPress supports oEmbed. In short, that's a tool which makes a link to a post or a page of your site looks nice when pasted on another site supporting this. Ecwid now supports it too, so if you paste a link to your store page on any other oEmbed-empowered site (e.g. another Wordpress site), it will automatically displays a nice widget with the page title and a list of your store categories.
121
  - Fixes and improvements for the storefront widgets and for the plugins admin pages.
templates/admin-footer.php CHANGED
@@ -1,10 +1,26 @@
1
  <div class="ecwid-admin-footer">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  <?php if (@$show_reconnect): ?>
3
-
4
- <p><?php echo sprintf(__('If you want to connect another Ecwid store, you can re-connect on <a %s>this page</a>', 'ecwid-shopping-cart'), 'href="admin.php?page=ecwid&reconnect"'); ?></p>
5
-
6
- <?php endif; ?>
7
-
8
- <p><?php echo sprintf(__('Questions? <a %s>Read FAQ</a> or contact support at <a %s>wordpress@ecwid.com</a>', 'ecwid-shopping-cart'), 'target="_blank" href="https://help.ecwid.com/customer/portal/articles/1085017-wordpress-downloadable#FAQ"', 'href="mailto:wordpress@ecwid.com"'); ?></p>
9
-
10
- </div>
1
  <div class="ecwid-admin-footer">
2
+ <div class="ecwid-admin-footer-block ecwid-app-badges-block">
3
+ <h4 class="ecwid-admin-footer-title"><?php _e('Manage Store on iPhone, iPad or Android', 'ecwid-shopping-cart'); ?></h4>
4
+ <div class="ecwid-app-badges">
5
+ <a href="https://itunes.apple.com/en/app/ecwid/id626731456?mt=8"target="_blank" rel="nofollow">
6
+ <?php ecwid_embed_svg('black-app-store'); ?>
7
+ </a>
8
+ <a href="https://play.google.com/store/apps/details?id=com.ecwid.android">
9
+ <?php ecwid_embed_svg('black-google'); ?>
10
+ </a>
11
+ </div>
12
+ </div>
13
+ <div class="ecwid-admin-footer-block">
14
+ <h4 class="ecwid-admin-footer-title"><?php _e('Questions?', 'ecwid-shopping-cart'); ?></h4>
15
+ <div class="ecwid-admin-footer-text">
16
+ <?php echo sprintf(__('<a target="_blank" href="https://help.ecwid.com/customer/portal/articles/1085017-wordpress-downloadable">Read FAQ</a> or contact support at <a %s>wordpress@ecwid.com</a>', 'ecwid-shopping-cart'), 'href="mailto:wordpress@ecwid.com"'); ?>
17
+ </div>
18
+ </div>
19
  <?php if (@$show_reconnect): ?>
20
+ <div class="ecwid-admin-footer-block">
21
+ <h4 class="ecwid-admin-footer-title"><?php _e('Want to connect another Ecwid store?', 'ecwid-shopping-cart'); ?></h4>
22
+ <div class="ecwid-admin-footer-text">
23
+ <?php echo sprintf(__('You can reconnect on <a %s>this page</a>', 'ecwid-shopping-cart'), 'href="admin.php?page=ecwid&reconnect"'); ?>
24
+ </div>
25
+ </div>
26
+ <?php endif; ?>
 
templates/advanced-settings.php CHANGED
@@ -11,7 +11,6 @@
11
  <?php if (get_option('ecwid_hide_appearance_menu') != 'Y'): ?>
12
  <div class="pure-control-group bottom-border">
13
 
14
- <?php if (ecwid_is_paid_account()): ?>
15
  <label for="ecwid_default_category_id">
16
  <?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
17
  </label>
@@ -19,30 +18,16 @@
19
  <select name="ecwid_default_category_id" id="ecwid_default_category_id">
20
  <option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
21
  <?php foreach ($categories as $category): ?>
22
- <option
23
- value="<?php echo esc_attr($category['id']); ?>"
24
- <?php if ($category['id'] == get_option('ecwid_default_category_id')): ?>
25
- selected="selected"
26
- <?php endif; ?>
27
- >
28
- <?php echo esc_html($category['path_str']); ?>
29
- </option>
30
  <?php endforeach; ?>
31
  </select>
32
- <?php else: ?>
33
-
34
- <label for="ecwid_default_category_id">
35
- <?php _e('Default category ID', 'ecwid-shopping-cart'); ?>
36
- </label>
37
-
38
- <input
39
- id="ecwid_default_category_id"
40
- name="ecwid_default_category_id"
41
- type="text"
42
- placeholder="<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>"
43
- value="<?php echo esc_attr(get_option('ecwid_default_category_id')) ?>"
44
- />
45
- <?php endif; ?>
46
  <div class="note">
47
  <?php _e('By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. "Featured Products") to new visitors.', 'ecwid-shopping-cart'); ?>
48
  </div>
11
  <?php if (get_option('ecwid_hide_appearance_menu') != 'Y'): ?>
12
  <div class="pure-control-group bottom-border">
13
 
 
14
  <label for="ecwid_default_category_id">
15
  <?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
16
  </label>
18
  <select name="ecwid_default_category_id" id="ecwid_default_category_id">
19
  <option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
20
  <?php foreach ($categories as $category): ?>
21
+ <option
22
+ value="<?php echo esc_attr($category->id); ?>"
23
+ <?php if ($category->id == get_option('ecwid_default_category_id')): ?>
24
+ selected="selected"
25
+ <?php endif; ?>
26
+ >
27
+ <?php echo esc_html($category->path); ?>
28
+ </option>
29
  <?php endforeach; ?>
30
  </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  <div class="note">
32
  <?php _e('By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. "Featured Products") to new visitors.', 'ecwid-shopping-cart'); ?>
33
  </div>
templates/ecwid-admin.php CHANGED
@@ -1,7 +1,6 @@
1
  <script type='text/javascript'>//<![CDATA[
2
- document.body.className += ' ecwid-no-padding';
3
-
4
- jQuery(document).ready(function(){
5
  $ = jQuery;
6
  // Create IE + others compatible event handler
7
  var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
@@ -11,7 +10,6 @@
11
  // Listen to message from child window
12
  eventer(messageEvent,function(e) {
13
  $('#ecwid-frame').css('height', e.data.height + 'px');
14
- $('#superwrap').css('height', (e.data.height) + 'px');
15
  },false);
16
 
17
  $('#ecwid-frame').attr('src', '<?php echo $iframe_src; ?>');
@@ -20,11 +18,8 @@
20
 
21
  </script>
22
 
23
- <div id="superwrap" class="ecwid-admin-superwrap">
24
- <div id="wrap">
25
  <iframe seamless id="ecwid-frame" frameborder="0" width="100%" height="700" scrolling="no"></iframe>
26
- </div>
27
- </div>
28
 
29
  <?php require_once ECWID_PLUGIN_DIR . 'templates/admin-footer.php'; ?>
30
 
1
  <script type='text/javascript'>//<![CDATA[
2
+ jQuery(document).ready(function() {
3
+ document.body.className += ' ecwid-no-padding';
 
4
  $ = jQuery;
5
  // Create IE + others compatible event handler
6
  var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
10
  // Listen to message from child window
11
  eventer(messageEvent,function(e) {
12
  $('#ecwid-frame').css('height', e.data.height + 'px');
 
13
  },false);
14
 
15
  $('#ecwid-frame').attr('src', '<?php echo $iframe_src; ?>');
18
 
19
  </script>
20
 
21
+
 
22
  <iframe seamless id="ecwid-frame" frameborder="0" width="100%" height="700" scrolling="no"></iframe>
 
 
23
 
24
  <?php require_once ECWID_PLUGIN_DIR . 'templates/admin-footer.php'; ?>
25
 
templates/landing.php CHANGED
@@ -4,73 +4,54 @@
4
  </script>
5
  <div class="ecwid-landing <?php echo $register ? 'register' : 'connect'; echo $connection_error ? ' conn-error': ''; ?>">
6
  <div class="ecwid-thank">
7
- <h1 class="on-register">
8
- <span><?php _e('Plugin is installed successfully!', 'ecwid-shopping-cart'); ?></span>
9
- <?php _e('There are just a few steps left to start selling<br /> on your WordPress site', 'ecwid-shopping-cart'); ?>
10
  </h1>
11
- <h1 class="on-connect">
12
- <span><?php _e('Plugin is installed successfully!', 'ecwid-shopping-cart'); ?></span>
13
- <?php _e('There are few little steps left to start selling<br /> on your WordPress site', 'ecwid-shopping-cart'); ?>
14
- </h1>
15
- <div class="ecwid-thank-steps">
16
- <div class="ecwid-thank-step ecwid-thank-step-one<?php echo $register ?'' : ' active'; ?>">
17
- <div class="ecwid-thank-step-image"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/ecwid.svg" class="none-active"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/ecwid-active.svg" class="active"></div>
18
- <div class="ecwid-thank-step-description">
19
- <h2><?php _e('Register', 'ecwid-shopping-cart'); ?></h2>
20
- <p><?php _e('Create a free Ecwid account to manage your store and inventory.<br /> No credit card required', 'ecwid-shopping-cart'); ?></p>
21
- </div>
22
- </div>
23
- <div class="ecwid-thank-step ecwid-thank-step-two">
24
- <div class="ecwid-thank-step-image"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/plug.svg" class="none-active"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/plug-active.svg" class="active"></div>
25
- <div class="ecwid-thank-step-description">
26
- <h2>
27
- <?php _e('Connect', 'ecwid-shopping-cart'); ?>
28
- </h2>
29
- <p class="on-register"><?php _e('Add your Ecwid store to your site <nobr>in two clicks</nobr>', 'ecwid-shopping-cart'); ?></p>
30
- <p class="on-connect"><?php _e('Connect your Ecwid store to this site <nobr>in two clicks</nobr>', 'ecwid-shopping-cart'); ?></p>
31
  </div>
 
 
 
 
 
 
 
 
 
32
  </div>
33
- <div class="ecwid-thank-step ecwid-thank-step-three">
34
- <div class="ecwid-thank-step-image">
35
- <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/dollar.svg" class="none-active">
36
- <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/dollar-active.svg" class="active">
37
- </div>
38
- <div class="ecwid-thank-step-description">
39
- <h2><?php _e('Start selling', 'ecwid-shopping-cart'); ?></h2>
40
- <p><?php _e('Your storefront is ready', 'ecwid-shopping-cart'); ?></p>
41
- </div>
42
  </div>
43
- </div>
44
- <div class="ecwid-button">
45
- <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" class="button button--blue on-register" onclick="javascript:switch_to_connect();ecwid_kissmetrics_record('createAccountButtonClick');">
46
- <?php _e('Create Ecwid store', 'ecwid-shopping-cart'); ?>
47
- </a>
48
- <a class="button button--green on-connect" href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');">
49
- <?php _e('Connect your store', 'ecwid-shopping-cart'); ?>
50
- </a>
51
- <div class="button-description-mobile on-register">
52
  <?php _e('Free registration, No credit card required', 'ecwid-shopping-cart'); ?>
53
  </div>
54
  <div class="button-description-mobile on-error ecwid-connection-error">
55
  <?php _e( 'Connection error: please click the button again and give permissions for this plugin<br /> to show your Ecwid store on this site.', 'ecwid-shopping-cart' ); ?>
56
  </div>
57
- <div class="button-description-mobile on-connect on-no-error">
58
- <?php _e('You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site', 'ecwid-shopping-cart'); ?>
59
- </div>
60
- <div class="ecwid-button-description on-register">
61
- <?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?>
62
- <a href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to Wordpress site', 'ecwid-shopping-cart'); ?></a>
63
- </div>
64
- <div class="ecwid-button-description on-connect">
65
- <?php _e('Don\'t have an Ecwid account?', 'ecwid-shopping-cart'); ?>
66
- <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" onclick="javascript:switch_to_connect();"><?php _e('Register at Ecwid for free', 'ecwid-shopping-cart'); ?></a>
67
  </div>
68
- <div class="button-description-mobile on-register">
69
  <?php _e('You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site', 'ecwid-shopping-cart'); ?>
70
  </div>
71
- <div class="button-description-mobile on-connect">
72
- <?php _e('No credit card required', 'ecwid-shopping-cart'); ?>
73
- </div>
74
  <div class="button-description-mobile">
75
  <h3><?php _e('Get ready to sell online', 'ecwid-shopping-cart'); ?></h3>
76
  </div>
@@ -147,21 +128,38 @@
147
  <h2><?php _e('Start selling <br>on your WordPress <nobr>site for free</nobr>', 'ecwid-shopping-cart'); ?>
148
  </h2>
149
  <div class="ecwid-button">
150
- <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" class="button button--blue on-register" onclick="javascript:switch_to_connect(); ecwid_kissmetrics_record('createAccountButtonClick');">
151
- <?php _e('Get Started, Create Ecwid Account', 'ecwid-shopping-cart'); ?>
152
- </a>
153
- <a class="button button--green on-connect" href="admin-post.php?action=ecwid_connect">
154
- <?php _e('Connect your store', 'ecwid-shopping-cart'); ?>
155
- </a>
156
- <div class="ecwid-button-description on-register">
157
- <?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?>
158
- <a href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to this site', 'ecwid-shopping-cart'); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  </div>
160
- <div class="ecwid-button-description on-connect">
161
- <?php _e('Don\'t have an Ecwid account?', 'ecwid-shopping-cart'); ?>
162
- <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" onclick="javascript:switch_to_connect();ecwid_kissmetrics_record('createAccountButtonClick');"><?php _e('Register at Ecwid for free', 'ecwid-shopping-cart'); ?></a>
163
  </div>
164
 
 
 
 
 
165
  </div>
166
  </div>
167
  </div>
4
  </script>
5
  <div class="ecwid-landing <?php echo $register ? 'register' : 'connect'; echo $connection_error ? ' conn-error': ''; ?>">
6
  <div class="ecwid-thank">
7
+ <h1>
8
+ <?php _e('Welcome to Ecwid!', 'ecwid-shopping-cart'); ?>
9
+ <span><?php _e('Thank you for choosing Ecwid to build your online store. The first step to sell successfully online is to setup your store! Let’s get started and add a store to your website in a few simple steps.', 'ecwid-shopping-cart'); ?></span>
10
  </h1>
11
+
12
+ <div class="ecwid-button">
13
+
14
+ <button class="create-store-button btn btn-primary btn-large">
15
+ <?php _e('Create Free Ecwid Store', 'ecwid-shopping-cart'); ?>
16
+ </button>
17
+ <button class="create-store-loading btn btn-primary btn-large btn-loading">
18
+ <div class="loader">
19
+ <div class="ecwid-spinner spin-right">
20
+ <svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
21
+ <path class="loader-outer" d="M30,60 C46.5685425,60 60,46.5685425 60,30 C60,13.4314575 46.5685425,0 30,0 C13.4314575,0 0,13.4314575 0,30 C0,46.5685425 13.4314575,60 30,60 L30,60 Z"></path>
22
+ <path class="loader-background" d="M30,56 C44.3594035,56 56,44.3594035 56,30 C56,15.6405965 44.3594035,4 30,4 C15.6405965,4 4,15.6405965 4,30 C4,44.3594035 15.6405965,56 30,56 L30,56 Z" fill="#FFFFFF"></path>
23
+ <path class="loader-inner" d="M12.0224719,32.0224719 C10.9078652,32.0224719 10,31.1146067 10,30 C10,18.9707865 18.9707865,10 30,10 C31.1146067,10 32.0224719,10.9078652 32.0224719,12.0224719 C32.0224719,13.1370787 31.1146067,14.0449438 30,14.0449438 C21.2,14.0449438 14.0449438,21.2 14.0449438,30 C14.0449438,31.1146067 13.1370787,32.0224719 12.0224719,32.0224719 L12.0224719,32.0224719 Z M30,50 C28.8853933,50 27.9775281,49.0921348 27.9775281,47.9775281 C27.9775281,46.8629213 28.8853933,45.9550562 30,45.9550562 C38.8,45.9550562 45.9550562,38.8 45.9550562,30 C45.9550562,28.8853933 46.8629213,27.9775281 47.9775281,27.9775281 C49.0921348,27.9775281 50,28.8853933 50,30 C50,41.0292135 41.0292135,50 30,50 L30,50 Z" fill="#231F20"></path>
24
+ </svg>
25
+ </div>
 
 
 
 
 
26
  </div>
27
+ </button>
28
+
29
+ <button class="create-store-success btn btn-large btn-success btn-icon">
30
+ <i class="icon-check"></i>
31
+ <?php _e('Store is created', 'ecwid-shopping-cart'); ?>
32
+ </button>
33
+
34
+ <div class="create-store-loading-note ecwid-button-description">
35
+ <?php _e('Creating store', 'ecwid-shopping-cart'); ?>
36
  </div>
37
+
38
+ <div class="create-store-success-note ecwid-button-description">
39
+ <?php _e('Preparing your store dashboard', 'ecwid-shopping-cart'); ?>
 
 
 
 
 
 
40
  </div>
41
+
42
+ <div class="button-description-mobile">
 
 
 
 
 
 
 
43
  <?php _e('Free registration, No credit card required', 'ecwid-shopping-cart'); ?>
44
  </div>
45
  <div class="button-description-mobile on-error ecwid-connection-error">
46
  <?php _e( 'Connection error: please click the button again and give permissions for this plugin<br /> to show your Ecwid store on this site.', 'ecwid-shopping-cart' ); ?>
47
  </div>
48
+ <div class="create-store-have-account ecwid-button-description">
49
+ <span class="create-store-have-account-question"><?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?></span>
50
+ <a class="create-store-have-account-link" href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to Wordpress site', 'ecwid-shopping-cart'); ?></a>
 
 
 
 
 
 
 
51
  </div>
52
+ <div class="button-description-mobile">
53
  <?php _e('You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site', 'ecwid-shopping-cart'); ?>
54
  </div>
 
 
 
55
  <div class="button-description-mobile">
56
  <h3><?php _e('Get ready to sell online', 'ecwid-shopping-cart'); ?></h3>
57
  </div>
128
  <h2><?php _e('Start selling <br>on your WordPress <nobr>site for free</nobr>', 'ecwid-shopping-cart'); ?>
129
  </h2>
130
  <div class="ecwid-button">
131
+ <button class="create-store-button btn btn-primary btn-large">
132
+ <?php _e('Create Free Ecwid Store', 'ecwid-shopping-cart'); ?>
133
+ </button>
134
+ <button class="create-store-loading btn btn-primary btn-large btn-loading">
135
+ <div class="loader">
136
+ <div class="ecwid-spinner spin-right">
137
+ <svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
138
+ <path class="loader-outer" d="M30,60 C46.5685425,60 60,46.5685425 60,30 C60,13.4314575 46.5685425,0 30,0 C13.4314575,0 0,13.4314575 0,30 C0,46.5685425 13.4314575,60 30,60 L30,60 Z"></path>
139
+ <path class="loader-background" d="M30,56 C44.3594035,56 56,44.3594035 56,30 C56,15.6405965 44.3594035,4 30,4 C15.6405965,4 4,15.6405965 4,30 C4,44.3594035 15.6405965,56 30,56 L30,56 Z" fill="#FFFFFF"></path>
140
+ <path class="loader-inner" d="M12.0224719,32.0224719 C10.9078652,32.0224719 10,31.1146067 10,30 C10,18.9707865 18.9707865,10 30,10 C31.1146067,10 32.0224719,10.9078652 32.0224719,12.0224719 C32.0224719,13.1370787 31.1146067,14.0449438 30,14.0449438 C21.2,14.0449438 14.0449438,21.2 14.0449438,30 C14.0449438,31.1146067 13.1370787,32.0224719 12.0224719,32.0224719 L12.0224719,32.0224719 Z M30,50 C28.8853933,50 27.9775281,49.0921348 27.9775281,47.9775281 C27.9775281,46.8629213 28.8853933,45.9550562 30,45.9550562 C38.8,45.9550562 45.9550562,38.8 45.9550562,30 C45.9550562,28.8853933 46.8629213,27.9775281 47.9775281,27.9775281 C49.0921348,27.9775281 50,28.8853933 50,30 C50,41.0292135 41.0292135,50 30,50 L30,50 Z" fill="#231F20"></path>
141
+ </svg>
142
+ </div>
143
+ </div>
144
+ </button>
145
+
146
+ <button class="create-store-success btn btn-large btn-success btn-icon">
147
+ <i class="icon-check"></i>
148
+ <?php _e('Store is created', 'ecwid-shopping-cart'); ?>
149
+ </button>
150
+
151
+ <div class="create-store-loading-note ecwid-button-description">
152
+ <?php _e('Creating store', 'ecwid-shopping-cart'); ?>
153
  </div>
154
+
155
+ <div class="create-store-success-note ecwid-button-description">
156
+ <?php _e('Preparing your store dashboard', 'ecwid-shopping-cart'); ?>
157
  </div>
158
 
159
+ <div class="ecwid-button-description">
160
+ <?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?>
161
+ <a href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to this site', 'ecwid-shopping-cart'); ?></a>
162
+ </div>
163
  </div>
164
  </div>
165
  </div>
templates/landing_old.php ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script type='text/javascript'>//<![CDATA[
2
+ document.body.className += ' ecwid-no-padding';
3
+ //]]>
4
+ </script>
5
+ <div class="ecwid-landing <?php echo $register ? 'register' : 'connect'; echo $connection_error ? ' conn-error': ''; ?>">
6
+ <div class="ecwid-thank">
7
+ <h1 class="on-register">
8
+ <span><?php _e('Plugin is installed successfully!', 'ecwid-shopping-cart'); ?></span>
9
+ <?php _e('There are just a few steps left to start selling<br /> on your WordPress site', 'ecwid-shopping-cart'); ?>
10
+ </h1>
11
+ <h1 class="on-connect">
12
+ <span><?php _e('Plugin is installed successfully!', 'ecwid-shopping-cart'); ?></span>
13
+ <?php _e('There are few little steps left to start selling<br /> on your WordPress site', 'ecwid-shopping-cart'); ?>
14
+ </h1>
15
+ <div class="ecwid-thank-steps">
16
+ <div class="ecwid-thank-step ecwid-thank-step-one<?php echo $register ?'' : ' active'; ?>">
17
+ <div class="ecwid-thank-step-image"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/ecwid.svg" class="none-active"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/ecwid-active.svg" class="active"></div>
18
+ <div class="ecwid-thank-step-description">
19
+ <h2><?php _e('Register', 'ecwid-shopping-cart'); ?></h2>
20
+ <p><?php _e('Create a free Ecwid account to manage your store and inventory.<br /> No credit card required', 'ecwid-shopping-cart'); ?></p>
21
+ </div>
22
+ </div>
23
+ <div class="ecwid-thank-step ecwid-thank-step-two">
24
+ <div class="ecwid-thank-step-image"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/plug.svg" class="none-active"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/plug-active.svg" class="active"></div>
25
+ <div class="ecwid-thank-step-description">
26
+ <h2>
27
+ <?php _e('Connect', 'ecwid-shopping-cart'); ?>
28
+ </h2>
29
+ <p class="on-register"><?php _e('Add your Ecwid store to your site <nobr>in two clicks</nobr>', 'ecwid-shopping-cart'); ?></p>
30
+ <p class="on-connect"><?php _e('Connect your Ecwid store to this site <nobr>in two clicks</nobr>', 'ecwid-shopping-cart'); ?></p>
31
+ </div>
32
+ </div>
33
+ <div class="ecwid-thank-step ecwid-thank-step-three">
34
+ <div class="ecwid-thank-step-image">
35
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/dollar.svg" class="none-active">
36
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/dollar-active.svg" class="active">
37
+ </div>
38
+ <div class="ecwid-thank-step-description">
39
+ <h2><?php _e('Start selling', 'ecwid-shopping-cart'); ?></h2>
40
+ <p><?php _e('Your storefront is ready', 'ecwid-shopping-cart'); ?></p>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ <div class="ecwid-button">
45
+ <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" class="button button--blue on-register" onclick="javascript:switch_to_connect();ecwid_kissmetrics_record('createAccountButtonClick');">
46
+ <?php _e('Create Ecwid store', 'ecwid-shopping-cart'); ?>
47
+ </a>
48
+ <a class="button button--green on-connect" href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');">
49
+ <?php _e('Connect your store', 'ecwid-shopping-cart'); ?>
50
+ </a>
51
+ <div class="button-description-mobile on-register">
52
+ <?php _e('Free registration, No credit card required', 'ecwid-shopping-cart'); ?>
53
+ </div>
54
+ <div class="button-description-mobile on-error ecwid-connection-error">
55
+ <?php _e( 'Connection error: please click the button again and give permissions for this plugin<br /> to show your Ecwid store on this site.', 'ecwid-shopping-cart' ); ?>
56
+ </div>
57
+ <div class="button-description-mobile on-connect on-no-error">
58
+ <?php _e('You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site', 'ecwid-shopping-cart'); ?>
59
+ </div>
60
+ <div class="ecwid-button-description on-register">
61
+ <?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?>
62
+ <a href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to Wordpress site', 'ecwid-shopping-cart'); ?></a>
63
+ </div>
64
+ <div class="ecwid-button-description on-connect">
65
+ <?php _e('Don\'t have an Ecwid account?', 'ecwid-shopping-cart'); ?>
66
+ <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" onclick="javascript:switch_to_connect();ecwid_kissmetrics_record('createAccountButtonClick');"><?php _e('Register at Ecwid for free', 'ecwid-shopping-cart'); ?></a>
67
+ </div>
68
+ <div class="button-description-mobile on-register">
69
+ <?php _e('You will be asked to log in to your Ecwid Control Panel<br />and give permissions to show your store on this site', 'ecwid-shopping-cart'); ?>
70
+ </div>
71
+ <div class="button-description-mobile on-connect">
72
+ <?php _e('No credit card required', 'ecwid-shopping-cart'); ?>
73
+ </div>
74
+ <div class="button-description-mobile">
75
+ <h3><?php _e('Get ready to sell online', 'ecwid-shopping-cart'); ?></h3>
76
+ </div>
77
+ </div>
78
+ <div class="ecwid-thank-background">
79
+ <div class="ecwid-thank-background-tablet"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/tablet-iphone.png"></div>
80
+ </div>
81
+ </div>
82
+ <div class="ecwid-description">
83
+ <div class="ecwid-description-inner">
84
+ <div class="ecwid-description-image"><img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/ecwid-description-image.jpg"></div>
85
+ <div class="ecwid-description-text">
86
+ <h2><?php _e('Sell Everywhere<br>with your Ecwid store', 'ecwid-shopping-cart'); ?></h2>
87
+ <p><?php _e('Start selling on your WordPress site. Then mirror your shop on your Facebook page, blog and marketplaces like Google Shopping, Yahoo and Shopping.com.', 'ecwid-shopping-cart'); ?></p>
88
+ <p><?php _e('Use Ecwid\'s mobile-POS to swipe credit cards and sell on the go. Your orders and inventory are always synchronized with your online store.', 'ecwid-shopping-cart'); ?></p>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ <div class="ecwid-features">
93
+ <div class="ecwid-features-inner">
94
+ <h2><?php _e('Features', 'ecwid-shopping-cart'); ?></h2>
95
+ <div class="ecwid-features-top">
96
+ <div class="ecwid-features-top-item">
97
+ <div class="ecwid-features-top-item-image">
98
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/wordpress.svg">
99
+ </div>
100
+ <div class="ecwid-features-top-item-text">
101
+ <h3><?php _e('Compatible with your theme', 'ecwid-shopping-cart'); ?></h3>
102
+ <p><?php echo sprintf(__('Ecwid is compatible with your<br>“%s” WordPress theme<br>out of the box.', 'ecwid-shopping-cart'), ecwid_get_theme_name()); ?></p>
103
+ </div>
104
+ </div>
105
+ <div class="ecwid-features-top-item">
106
+ <div class="ecwid-features-top-item-image">
107
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/gift.svg" class="gift">
108
+ </div>
109
+ <div class="ecwid-features-top-item-text">
110
+ <h3><?php _e('Free and always up to date', 'ecwid-shopping-cart'); ?></h3>
111
+ <p><?php _e('Free plan always available with tons of features<br>at no additional cost. Updates are seamless, automatic<br>and free of charge.', 'ecwid-shopping-cart'); ?></p>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ <div class="ecwid-features-bottom">
116
+ <div class="ecwid-features-bottom-item">
117
+ <div class="ecwid-features-bottom-item-image">
118
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/responsive-grow.svg">
119
+ </div>
120
+ <div class="ecwid-features-bottom-item-text">
121
+ <h3><?php _e('Responsive design', 'ecwid-shopping-cart'); ?></h3>
122
+ <p><?php _e('Your store looks perfect<br />on all devices', 'ecwid-shopping-cart'); ?></p>
123
+ </div>
124
+ </div>
125
+ <div class="ecwid-features-bottom-item">
126
+ <div class="ecwid-features-bottom-item-image">
127
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/secure-pci.svg" class="secure">
128
+ </div>
129
+ <div class="ecwid-features-bottom-item-text">
130
+ <h3><?php _e('PCI DSS Certified', 'ecwid-shopping-cart'); ?></h3>
131
+ <p><?php _e('Secure checkout with over 40<br />payment options', 'ecwid-shopping-cart'); ?></p>
132
+ </div>
133
+ </div>
134
+ <div class="ecwid-features-bottom-item">
135
+ <div class="ecwid-features-bottom-item-image">
136
+ <img src="<?php echo ECWID_PLUGIN_URL; ?>images/landing/global.svg">
137
+ </div>
138
+ <div class="ecwid-features-bottom-item-text">
139
+ <h3><?php _e('Global Reach', 'ecwid-shopping-cart'); ?></h3>
140
+ <p><?php _e('More than 800,000 merchants in 175 countries', 'ecwid-shopping-cart'); ?></p>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ <div class="ecwid-start">
147
+ <h2><?php _e('Start selling <br>on your WordPress <nobr>site for free</nobr>', 'ecwid-shopping-cart'); ?>
148
+ </h2>
149
+ <div class="ecwid-button">
150
+ <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" class="button button--blue on-register" onclick="javascript:switch_to_connect(); ecwid_kissmetrics_record('createAccountButtonClick');">
151
+ <?php _e('Get Started, Create Ecwid Account', 'ecwid-shopping-cart'); ?>
152
+ </a>
153
+ <a class="button button--green on-connect" href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');">
154
+ <?php _e('Connect your store', 'ecwid-shopping-cart'); ?>
155
+ </a>
156
+ <div class="ecwid-button-description on-register">
157
+ <?php _e('Already have Ecwid account?', 'ecwid-shopping-cart'); ?>
158
+ <a href="admin-post.php?action=ecwid_connect" onclick="javascript:ecwid_kissmetrics_record('connectStoreButtonClick');"><?php _e('Connect your store to this site', 'ecwid-shopping-cart'); ?></a>
159
+ </div>
160
+ <div class="ecwid-button-description on-connect">
161
+ <?php _e('Don\'t have an Ecwid account?', 'ecwid-shopping-cart'); ?>
162
+ <a target="_blank" href="<?php echo esc_attr(ecwid_get_register_link()); ?>" onclick="javascript:switch_to_connect();ecwid_kissmetrics_record('createAccountButtonClick');"><?php _e('Register at Ecwid for free', 'ecwid-shopping-cart'); ?></a>
163
+ </div>
164
+
165
+ </div>
166
+ </div>
167
+ </div>
168
+
169
+ <script type="text/javascript">
170
+ ecwid_kissmetrics_record('Welcome Page Viewed');
171
+ </script>
templates/store-popup.php CHANGED
@@ -149,46 +149,30 @@
149
 
150
  <div class="pure-control-group params-list default-category-id">
151
 
152
- <?php if (ecwid_is_paid_account()): ?>
153
- <?php if ($categories): ?>
154
- <label for="ecwid_default_category_id">
155
- <?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
156
- </label>
157
-
158
-
159
- <div class="value">
160
-
161
- <select name="default_category_id" id="ecwid_default_category_id">
162
- <option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
163
- <?php foreach ($categories as $category): ?>
164
- <option
165
- value="<?php echo esc_attr($category['id']); ?>"
166
- <?php if ($category['id'] == get_option('ecwid_default_category_id')): ?>
167
- selected="selected"
168
- <?php endif; ?>
169
- >
170
- <?php echo esc_html($category['path_str']); ?>
171
- </option>
172
- <?php endforeach; ?>
173
- </select>
174
- </div>
175
-
176
- <?php endif; ?>
177
- <?php else: ?>
178
-
179
- <label for="ecwid_default_category_id">
180
- <?php _e('Default category ID', 'ecwid-shopping-cart'); ?>
181
- </label>
182
-
183
- <input
184
- id="ecwid_default_category_id"
185
- name="ecwid_default_category_id"
186
- type="text"
187
- placeholder="<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>"
188
- value="<?php echo esc_attr(get_option('ecwid_default_category_id')) ?>"
189
- />
190
- <?php endif; ?>
191
 
 
192
  </div>
193
 
194
  <div class="pure-control-group params-list">
149
 
150
  <div class="pure-control-group params-list default-category-id">
151
 
152
+ <?php if ($categories): ?>
153
+ <label for="ecwid_default_category_id">
154
+ <?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
155
+ </label>
156
+
157
+
158
+ <div class="value">
159
+
160
+ <select name="default_category_id" id="ecwid_default_category_id">
161
+ <option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
162
+ <?php foreach ($categories as $category): ?>
163
+ <option
164
+ value="<?php echo esc_attr($category->id); ?>"
165
+ <?php if ($category->id == get_option('ecwid_default_category_id')): ?>
166
+ selected="selected"
167
+ <?php endif; ?>
168
+ >
169
+ <?php echo esc_html($category->path); ?>
170
+ </option>
171
+ <?php endforeach; ?>
172
+ </select>
173
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
+ <?php endif; ?>
176
  </div>
177
 
178
  <div class="pure-control-group params-list">