Elementor Essential Addons - Version 2.9.0

Version Description

  • Added : Section Particles effect
  • Added: Filterable gallery capability to remove All label
  • Enhancement : Product Grid element with more features
  • Fixed: invalid calc funciton in progressbar
  • Few minor bugfix and improvements
Download this release

Release Info

Developer re_enter_rupok
Plugin Icon 128x128 Elementor Essential Addons
Version 2.9.0
Comparing to
See all releases

Code changes from version 2.8.7 to 2.9.0

Files changed (84) hide show
  1. admin/assets/css/admin.css +0 -1
  2. admin/assets/css/eael-notice.css +95 -62
  3. admin/assets/images/ea-icon-color.png +0 -0
  4. admin/assets/images/ea-icon.png +0 -0
  5. admin/assets/images/eael-featured.png +0 -0
  6. admin/assets/images/gift-icon.png +0 -0
  7. admin/assets/images/icon-extensions.svg +4 -0
  8. admin/assets/images/icon-heart.svg +0 -0
  9. admin/assets/images/icon-modules.svg +0 -0
  10. admin/assets/images/icon-settings.svg +0 -0
  11. admin/assets/images/icon-upgrade.svg +0 -0
  12. admin/assets/images/lock-icon.png +0 -0
  13. admin/assets/images/wpsp-logo.svg +54 -0
  14. admin/assets/js/admin.js +0 -0
  15. admin/assets/vendor/sweetalert2/css/sweetalert2.min.css +0 -0
  16. admin/assets/vendor/sweetalert2/js/core.js +0 -0
  17. admin/assets/vendor/sweetalert2/js/sweetalert2.min.js +0 -0
  18. admin/partials/elements.php +21 -0
  19. admin/partials/extensions.php +32 -0
  20. admin/settings.php +3 -1
  21. assets/css/essential-addons-editor.css +0 -0
  22. assets/css/essential-addons-elementor.css +321 -245
  23. assets/css/tooltipster.bundle.min.css +0 -0
  24. assets/img/accordion.png +0 -0
  25. assets/img/bg.jpg +0 -0
  26. assets/img/flexia-preview.jpg +0 -0
  27. assets/img/play-icon.png +0 -0
  28. assets/js/eael-scripts.js +201 -2
  29. assets/js/fancy-text.js +0 -0
  30. assets/js/isotope.pkgd.min.js +0 -0
  31. assets/js/jquery.magnific-popup.min.js +0 -0
  32. assets/js/jquery.resize.min.js +0 -0
  33. assets/js/load-more.js +0 -0
  34. assets/js/loading-bar.min.js +0 -0
  35. assets/js/masonry.min.js +0 -0
  36. assets/js/mixitup.min.js +0 -0
  37. assets/js/particles.js +5 -0
  38. assets/js/tooltipster.bundle.min.js +0 -0
  39. assets/sass/_particles.scss +3 -0
  40. assets/sass/_progress-bar.scss +25 -4
  41. assets/sass/_woo-products.scss +369 -288
  42. assets/sass/essential-addons-elementor.scss +2 -1
  43. assets/social-feeds/codebird.js +0 -0
  44. assets/social-feeds/doT.min.js +0 -0
  45. assets/social-feeds/jquery.socialfeed.js +0 -0
  46. assets/social-feeds/moment.js +0 -0
  47. elements/advance-accordion/advance-accordion.php +0 -0
  48. elements/advance-tabs/advance-tabs.php +0 -0
  49. elements/caldera-forms/caldera-forms.php +0 -0
  50. elements/call-to-action/call-to-action.php +0 -0
  51. elements/countdown/countdown.php +0 -0
  52. elements/creative-button/creative-button.php +0 -0
  53. elements/data-table/data-table.php +0 -0
  54. elements/dual-color-header/dual-color-header.php +0 -0
  55. elements/facebook-feed/facebook-feed.php +0 -0
  56. elements/fancy-text/fancy-text.php +0 -0
  57. elements/filterable-gallery/filterable-gallery.php +7 -3
  58. elements/gravity-form/gravity-form.php +0 -0
  59. elements/image-accordion/image-accordion.php +0 -0
  60. elements/infobox/infobox.php +0 -0
  61. elements/ninja-form/ninja-form.php +0 -0
  62. elements/post-timeline/post-timeline.php +0 -0
  63. elements/pricing-table/pricing-table.php +0 -0
  64. elements/product-grid/product-grid.php +212 -190
  65. elements/team-members/team-members.php +0 -0
  66. elements/tooltip/tooltip.php +0 -0
  67. elements/twitter-feed/twitter-feed.php +0 -0
  68. elements/weforms/weforms.php +0 -0
  69. elements/wpforms/wpforms.php +0 -0
  70. essential_adons_elementor.php +31 -178
  71. extensions/eael-particle-section/eael-particle-section.php +192 -0
  72. extensions/eael-particle-section/particle-themes.php +554 -0
  73. includes/class-plugin-usage-tracker.php +6 -4
  74. includes/class-wpdev-core-install.php +109 -0
  75. includes/class-wpdev-notices.php +782 -0
  76. includes/eae-posts-group-control.php +0 -0
  77. includes/eael-rollback.php +43 -71
  78. includes/elementor-helper.php +0 -0
  79. includes/extensions.php +46 -0
  80. includes/queries.php +0 -0
  81. includes/templates/content.php +0 -0
  82. includes/templates/product-loop.php +37 -0
  83. includes/version-rollback.php +1 -0
  84. readme.txt +22 -3
admin/assets/css/admin.css CHANGED
@@ -330,7 +330,6 @@ textarea.eael-form-control {
330
  animation-iteration-count: infinite;
331
  animation-timing-function: linear;
332
  }
333
- }
334
 
335
  @-webkit-keyframes rotate {
336
  from {-webkit-transform: rotate(0deg);}
330
  animation-iteration-count: infinite;
331
  animation-timing-function: linear;
332
  }
 
333
 
334
  @-webkit-keyframes rotate {
335
  from {-webkit-transform: rotate(0deg);}
admin/assets/css/eael-notice.css CHANGED
@@ -1,65 +1,98 @@
1
-
2
  /* review notice */
3
 
4
- .eael-review-notice {
5
- padding: 10px;
6
- background-color: #fff;
7
- border-radius: 3px;
8
- margin: 15px;
9
- border-left: 4px solid transparent;
10
- display: flex;
11
- align-items: center;
12
- }
13
- .eael-review-notice:after{
14
- content: '';
15
- display: table;
16
- clear: both;
17
- }
18
- .eael-review-thumbnail{
19
- width: 90px;
20
- float: left;
21
- padding: 5px;
22
- text-align: center;
23
- border-right: 4px solid transparent;
24
- }
25
- .eael-review-thumbnail img {
26
- width: 72px;
27
- opacity: .85;
28
- transition: all .3s;
29
- }
30
- .eael-review-thumbnail img:hover {
31
- opacity: 1;
32
- }
33
- .eael-review-text{
34
- overflow: hidden;
35
- }
36
- .eael-review-text h3{
37
- font-size: 24px;
38
- margin: 0 0 5px;
39
- font-weight: 400;
40
- line-height: 1.3;
41
- }
42
- .eael-review-text p{
43
- font-size: 13px;
44
- margin: 0 0 5px;
45
- }
46
- .eael-review-ul {
47
- margin: 8px 0 0 0;
48
- padding: 0;
49
- }
50
- .eael-review-ul li{
51
- display: inline-block;
52
- margin-right: 15px;
53
- }
54
- .eael-review-ul li a{
55
- display: inline-block;
56
- color: #10738B;
57
- text-decoration: none;
58
- padding-left: 26px;
59
- position: relative;
60
- }
61
- .eael-review-ul li a span{
62
- position: absolute;
63
- left: 0;
64
- top: -2px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
 
1
  /* review notice */
2
 
3
+ .wpdeveloper-review-notice {
4
+ padding: 10px;
5
+ background-color: #fff;
6
+ border-radius: 3px;
7
+ margin: 15px;
8
+ border-left: 4px solid transparent;
9
+ display: flex;
10
+ align-items: center;
11
+ }
12
+
13
+ .wpdeveloper-review-notice:after {
14
+ content: '';
15
+ display: table;
16
+ clear: both;
17
+ }
18
+
19
+ .wpdeveloper-notice-thumbnail {
20
+ width: 90px;
21
+ float: left;
22
+ padding: 5px;
23
+ text-align: center;
24
+ border-right: 4px solid transparent;
25
+ }
26
+
27
+ .wpdeveloper-notice-thumbnail img {
28
+ width: 72px;
29
+ opacity: .85;
30
+ transition: all .3s;
31
+ }
32
+
33
+ .wpdeveloper-notice-thumbnail img:hover {
34
+ opacity: 1;
35
+ }
36
+
37
+ .eael-review-text {
38
+ overflow: hidden;
39
+ }
40
+
41
+ .eael-review-text h3 {
42
+ font-size: 24px;
43
+ margin: 0 0 5px;
44
+ font-weight: 400;
45
+ line-height: 1.3;
46
+ }
47
+
48
+ .eael-review-text p {
49
+ font-size: 13px;
50
+ margin: 0 0 5px;
51
+ }
52
+
53
+ .wpdeveloper-notice-link {
54
+ margin: 8px 0 0 0;
55
+ padding: 0;
56
+ }
57
+
58
+ .wpdeveloper-notice-link li {
59
+ display: inline-block;
60
+ margin-right: 15px;
61
+ }
62
+
63
+ .wpdeveloper-notice-link li a {
64
+ display: inline-block;
65
+ color: #10738B;
66
+ text-decoration: none;
67
+ padding-left: 26px;
68
+ position: relative;
69
+ }
70
+
71
+ .wpdeveloper-notice-link li a span {
72
+ position: absolute;
73
+ left: 0;
74
+ top: -2px;
75
+ }
76
+
77
+ .wpdeveloper-upsale-notice .wpdeveloper-notice-message {
78
+ display: flex;
79
+ align-items: center;
80
+ padding: 10px 0;
81
+ }
82
+ .wpdeveloper-upsale-notice .wpdeveloper-notice-message + .notice-dismiss {
83
+ top: 18px;
84
+ }
85
+ .wpdeveloper-upsale-notice #plugin-install-core {
86
+ margin-left: 10px;
87
+ }
88
+ .notice.notice-has-thumbnail {
89
+ padding-left: 0px;
90
+ }
91
+
92
+ .wpdeveloper-upsale-notice {
93
+ display: flex;
94
+ }
95
+ .wpdeveloper-upsale-notice .wpdeveloper-notice-thumbnail {
96
+ padding: 0;
97
+ width: 80px;
98
  }
admin/assets/images/ea-icon-color.png CHANGED
File without changes
admin/assets/images/ea-icon.png CHANGED
File without changes
admin/assets/images/eael-featured.png CHANGED
File without changes
admin/assets/images/gift-icon.png CHANGED
File without changes
admin/assets/images/icon-extensions.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
3
+ <path style="line-height:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;block-progression:tb;isolation:auto;mix-blend-mode:normal" d="M 9 11 C 6.8026661 11 5 12.802666 5 15 L 5 27 L 5 28 L 5 65 C 5 67.197334 6.8026661 69 9 69 L 71 69 C 73.197334 69 75 67.197334 75 65 L 75 27 C 75 24.802666 73.197334 23 71 23 L 70 23 L 70 21 C 70 18.802666 68.197334 17 66 17 L 28.166016 17 L 27.205078 14.693359 L 27.205078 14.691406 C 26.27448 12.459084 24.086456 11 21.667969 11 L 9 11 z M 9 13 L 21.667969 13 C 23.284912 13 24.7376 13.968195 25.359375 15.460938 L 26.833984 19 L 66 19 C 67.116666 19 68 19.883334 68 21 L 68 23 L 9 23 C 8.2573422 23 7.5981308 23.261659 7 23.619141 L 7 15 C 7 13.883334 7.8833339 13 9 13 z M 9 25 L 71 25 C 72.116666 25 73 25.883334 73 27 L 73 65 C 73 66.116666 72.116666 67 71 67 L 9 67 C 7.8833339 67 7 66.116666 7 65 L 7 28 L 7 27 C 7 25.883334 7.8833339 25 9 25 z M 69 26 A 1 1 0 0 0 68 27 A 1 1 0 0 0 69 28 A 1 1 0 0 0 70 27 A 1 1 0 0 0 69 26 z M 40 29 C 37.250484 29 35 31.250484 35 34 C 35 34.36902 35.197011 34.656907 35.275391 35 L 31 35 C 29.35503 35 28 36.35503 28 38 L 28 41.275391 C 27.656907 41.197011 27.36902 41 27 41 C 24.250484 41 22 43.250484 22 46 C 22 48.749516 24.250484 51 27 51 C 27.36902 51 27.656907 50.802989 28 50.724609 L 28 55 C 28 56.64497 29.35503 58 31 58 L 34 58 L 37.414062 58 L 37.09375 56.751953 C 37.032056 56.511196 37 56.259976 37 56 C 37 54.331516 38.331516 53 40 53 C 41.668484 53 43 54.331516 43 56 C 43 56.259976 42.96794 56.511196 42.90625 56.751953 L 42.585938 58 L 45 58 L 49 58 C 50.64497 58 52 56.64497 52 55 L 52 51 L 52 48.585938 L 50.751953 48.90625 C 50.511196 48.967944 50.259976 49 50 49 C 48.331516 49 47 47.668484 47 46 C 47 44.331516 48.331516 43 50 43 C 50.259976 43 50.511196 43.03206 50.751953 43.09375 L 52 43.414062 L 52 41 L 52 38 C 52 36.35503 50.64497 35 49 35 L 44.724609 35 C 44.802989 34.656907 45 34.36902 45 34 C 45 31.250484 42.749516 29 40 29 z M 69 30 A 1 1 0 0 0 68 31 A 1 1 0 0 0 69 32 A 1 1 0 0 0 70 31 A 1 1 0 0 0 69 30 z M 40 31 C 41.668484 31 43 32.331516 43 34 C 43 34.539832 42.847747 35.040361 42.582031 35.496094 L 41.705078 37 L 49 37 C 49.56503 37 50 37.43497 50 38 L 50 41 C 47.250484 41 45 43.250484 45 46 C 45 48.749516 47.250484 51 50 51 L 50 55 C 50 55.56503 49.56503 56 49 56 L 45 56 C 45 53.250484 42.749516 51 40 51 C 37.250484 51 35 53.250484 35 56 L 34 56 L 31 56 C 30.43497 56 30 55.56503 30 55 L 30 47.705078 L 28.496094 48.582031 C 28.040361 48.847747 27.539832 49 27 49 C 25.331516 49 24 47.668484 24 46 C 24 44.331516 25.331516 43 27 43 C 27.539832 43 28.040361 43.152253 28.496094 43.417969 L 30 44.294922 L 30 38 C 30 37.43497 30.43497 37 31 37 L 38.294922 37 L 37.417969 35.496094 C 37.152253 35.040361 37 34.539832 37 34 C 37 32.331516 38.331516 31 40 31 z M 69 34 A 1 1 0 0 0 68 35 A 1 1 0 0 0 69 36 A 1 1 0 0 0 70 35 A 1 1 0 0 0 69 34 z M 69 38 A 1 1 0 0 0 68 39 A 1 1 0 0 0 69 40 A 1 1 0 0 0 70 39 A 1 1 0 0 0 69 38 z M 69 42 A 1 1 0 0 0 68 43 A 1 1 0 0 0 69 44 A 1 1 0 0 0 70 43 A 1 1 0 0 0 69 42 z M 69 46 A 1 1 0 0 0 68 47 A 1 1 0 0 0 69 48 A 1 1 0 0 0 70 47 A 1 1 0 0 0 69 46 z M 69 50 A 1 1 0 0 0 68 51 A 1 1 0 0 0 69 52 A 1 1 0 0 0 70 51 A 1 1 0 0 0 69 50 z M 69 54 A 1 1 0 0 0 68 55 A 1 1 0 0 0 69 56 A 1 1 0 0 0 70 55 A 1 1 0 0 0 69 54 z M 69 58 A 1 1 0 0 0 68 59 A 1 1 0 0 0 69 60 A 1 1 0 0 0 70 59 A 1 1 0 0 0 69 58 z M 9 62 A 1 1 0 0 0 8 63 A 1 1 0 0 0 9 64 A 1 1 0 0 0 10 63 A 1 1 0 0 0 9 62 z M 13 62 A 1 1 0 0 0 12 63 A 1 1 0 0 0 13 64 A 1 1 0 0 0 14 63 A 1 1 0 0 0 13 62 z M 17 62 A 1 1 0 0 0 16 63 A 1 1 0 0 0 17 64 A 1 1 0 0 0 18 63 A 1 1 0 0 0 17 62 z M 21 62 A 1 1 0 0 0 20 63 A 1 1 0 0 0 21 64 A 1 1 0 0 0 22 63 A 1 1 0 0 0 21 62 z M 25 62 A 1 1 0 0 0 24 63 A 1 1 0 0 0 25 64 A 1 1 0 0 0 26 63 A 1 1 0 0 0 25 62 z M 29 62 A 1 1 0 0 0 28 63 A 1 1 0 0 0 29 64 A 1 1 0 0 0 30 63 A 1 1 0 0 0 29 62 z M 33 62 A 1 1 0 0 0 32 63 A 1 1 0 0 0 33 64 A 1 1 0 0 0 34 63 A 1 1 0 0 0 33 62 z M 37 62 A 1 1 0 0 0 36 63 A 1 1 0 0 0 37 64 A 1 1 0 0 0 38 63 A 1 1 0 0 0 37 62 z M 41 62 A 1 1 0 0 0 40 63 A 1 1 0 0 0 41 64 A 1 1 0 0 0 42 63 A 1 1 0 0 0 41 62 z M 45 62 A 1 1 0 0 0 44 63 A 1 1 0 0 0 45 64 A 1 1 0 0 0 46 63 A 1 1 0 0 0 45 62 z M 49 62 A 1 1 0 0 0 48 63 A 1 1 0 0 0 49 64 A 1 1 0 0 0 50 63 A 1 1 0 0 0 49 62 z M 53 62 A 1 1 0 0 0 52 63 A 1 1 0 0 0 53 64 A 1 1 0 0 0 54 63 A 1 1 0 0 0 53 62 z M 57 62 A 1 1 0 0 0 56 63 A 1 1 0 0 0 57 64 A 1 1 0 0 0 58 63 A 1 1 0 0 0 57 62 z M 61 62 A 1 1 0 0 0 60 63 A 1 1 0 0 0 61 64 A 1 1 0 0 0 62 63 A 1 1 0 0 0 61 62 z M 65 62 A 1 1 0 0 0 64 63 A 1 1 0 0 0 65 64 A 1 1 0 0 0 66 63 A 1 1 0 0 0 65 62 z M 69 62 A 1 1 0 0 0 68 63 A 1 1 0 0 0 69 64 A 1 1 0 0 0 70 63 A 1 1 0 0 0 69 62 z"></path>
4
+ </svg>
admin/assets/images/icon-heart.svg CHANGED
File without changes
admin/assets/images/icon-modules.svg CHANGED
File without changes
admin/assets/images/icon-settings.svg CHANGED
File without changes
admin/assets/images/icon-upgrade.svg CHANGED
File without changes
admin/assets/images/lock-icon.png CHANGED
File without changes
admin/assets/images/wpsp-logo.svg ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 960 960" style="enable-background:new 0 0 960 960;" xml:space="preserve">
3
+ <style type="text/css">
4
+ .st0{fill:#FFFFFF;}
5
+ .st1{fill:#6c63ff;}
6
+ .st2{fill:#FFFFFF;}
7
+ .st3{fill:#CCCCCC;}
8
+ .st4{fill:#E6E6E6;}
9
+ .st5{fill:#6c63ff;}
10
+ .st6{fill:#F2F2F2;}
11
+ .st7{fill:none;stroke:#999999;stroke-width:17.9763;stroke-linecap:round;stroke-miterlimit:10;}
12
+ .st8{fill:none;stroke:#333333;stroke-width:8.9882;stroke-linecap:round;stroke-miterlimit:10;}
13
+ .st9{fill:none;stroke:#C1272D;stroke-width:5.9921;stroke-linecap:round;stroke-miterlimit:10;}
14
+ .st10{fill:#245F7F;}
15
+ </style>
16
+ <g>
17
+ <path class="st0" d="M601.2,699.8H205c-30.7,0-55.6-24.9-55.6-55.6V248c0-30.7,24.9-55.6,55.6-55.6h396.2 c30.7,0,55.6,24.9,55.6,55.6v396.2C656.8,674.9,631.9,699.8,601.2,699.8z"/>
18
+ <path class="st1" d="M601.2,192.4H205c-30.7,0-55.6,24.9-55.6,55.6v88.5h507.4V248C656.8,217.3,631.9,192.4,601.2,192.4z"/>
19
+ <circle class="st2" cx="253.3" cy="264.5" r="36.7"/>
20
+ <circle class="st2" cx="551.6" cy="264.5" r="36.7"/>
21
+ <path class="st3" d="M253.3,275.7L253.3,275.7c-11.8,0-21.3-9.6-21.3-21.3v-85.8c0-11.8,9.6-21.3,21.3-21.3l0,0 c11.8,0,21.3,9.6,21.3,21.3v85.8C274.6,266.2,265.1,275.7,253.3,275.7z"/>
22
+ <path class="st3" d="M551.6,275.7L551.6,275.7c-11.8,0-21.3-9.6-21.3-21.3v-85.8c0-11.8,9.6-21.3,21.3-21.3l0,0 c11.8,0,21.3,9.6,21.3,21.3v85.8C573,266.2,563.4,275.7,551.6,275.7z"/>
23
+ <rect x="215.7" y="370.9" class="st4" width="75.2" height="75.2"/>
24
+ <rect x="313" y="370.9" class="st4" width="75.2" height="75.2"/>
25
+ <rect x="410.2" y="370.9" class="st4" width="75.2" height="75.2"/>
26
+ <rect x="507.5" y="370.9" class="st4" width="75.2" height="75.2"/>
27
+ <rect x="215.7" y="465" class="st4" width="75.2" height="75.2"/>
28
+ <rect x="313" y="465" class="st1" width="75.2" height="75.2" opacity="0.75"/>
29
+ <rect x="410.2" y="465" class="st4" width="75.2" height="75.2"/>
30
+ <rect x="507.5" y="465" class="st4" width="75.2" height="75.2"/>
31
+ <rect x="215.7" y="559.1" class="st4" width="75.2" height="75.2"/>
32
+ <rect x="313" y="559.1" class="st4" width="75.2" height="75.2"/>
33
+ <rect x="410.2" y="559.1" class="st4" width="75.2" height="75.2"/>
34
+ <rect x="507.5" y="559.1" class="st4" width="75.2" height="75.2"/>
35
+ <g>
36
+ <circle class="st5" cx="621.9" cy="624" r="188.7"/>
37
+ <circle class="st0" cx="621.9" cy="624" r="148"/>
38
+ <path class="st6" d="M486.6,636.8c0-81.7,66.3-148,148-148c37.6,0,72,14.1,98.1,37.2c-27.1-30.6-66.7-49.9-110.8-49.9 c-81.7,0-148,66.3-148,148c0,44.1,19.3,83.7,49.9,110.8C500.7,708.7,486.6,674.4,486.6,636.8z"/>
39
+ <polyline class="st7" points="621.9,530.4 621.9,624 559,624 "/>
40
+ <g>
41
+ <line class="st8" x1="621.9" y1="508.3" x2="621.9" y2="497.1"/>
42
+ <line class="st8" x1="621.9" y1="756.3" x2="621.9" y2="745.1"/>
43
+ <line class="st8" x1="740.3" y1="626.7" x2="751.5" y2="626.7"/>
44
+ <line class="st8" x1="492.3" y1="626.7" x2="503.5" y2="626.7"/>
45
+ <line class="st8" x1="705.6" y1="710.4" x2="713.5" y2="718.3"/>
46
+ <line class="st8" x1="530.3" y1="535.1" x2="538.2" y2="543"/>
47
+ <line class="st8" x1="538.2" y1="710.4" x2="530.3" y2="718.3"/>
48
+ <line class="st8" x1="713.5" y1="535.1" x2="705.6" y2="543"/>
49
+ </g>
50
+ <line class="st9" x1="604.4" y1="606.3" x2="684.5" y2="687.4"/>
51
+ <circle class="st10" cx="621.9" cy="624" r="16.1"/>
52
+ </g>
53
+ </g>
54
+ </svg>
admin/assets/js/admin.js CHANGED
File without changes
admin/assets/vendor/sweetalert2/css/sweetalert2.min.css CHANGED
File without changes
admin/assets/vendor/sweetalert2/js/core.js CHANGED
File without changes
admin/assets/vendor/sweetalert2/js/sweetalert2.min.js CHANGED
File without changes
admin/partials/elements.php CHANGED
@@ -346,6 +346,27 @@
346
  <?php _e( 'Offcanvas Content', 'essential-addons-elementor' ) ?>
347
  </p>
348
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  </div><!--./checkbox-container-->
350
  <div class="eael-save-btn-wrap">
351
  <button type="submit" class="button eael-btn js-eael-settings-save"><?php _e('Save settings', 'essential-addons-elementor'); ?></button>
346
  <?php _e( 'Offcanvas Content', 'essential-addons-elementor' ) ?>
347
  </p>
348
  </div>
349
+ <div class="eael-checkbox">
350
+ <input type="checkbox" id="advanced-menu" name="advanced-menu" disabled>
351
+ <label for="advanced-menu" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
352
+ <p class="eael-el-title">
353
+ <?php _e( 'Advanced Menu', 'essential-addons-elementor' ) ?>
354
+ </p>
355
+ </div>
356
+ <div class="eael-checkbox">
357
+ <input type="checkbox" id="image-scroller" name="image-scroller" disabled>
358
+ <label for="image-scroller" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
359
+ <p class="eael-el-title">
360
+ <?php _e( 'Image Scroller', 'essential-addons-elementor' ) ?>
361
+ </p>
362
+ </div>
363
+ <div class="eael-checkbox">
364
+ <input type="checkbox" id="woo-collections" name="woo-collections" disabled>
365
+ <label for="woo-collections" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
366
+ <p class="eael-el-title">
367
+ <?php _e( 'WooCommerce Product Collections', 'essential-addons-elementor' ) ?>
368
+ </p>
369
+ </div>
370
  </div><!--./checkbox-container-->
371
  <div class="eael-save-btn-wrap">
372
  <button type="submit" class="button eael-btn js-eael-settings-save"><?php _e('Save settings', 'essential-addons-elementor'); ?></button>
admin/partials/extensions.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="extensions" class="eael-settings-tab eael-extensions-list">
2
+ <div class="row">
3
+ <div class="col-full">
4
+ <!-- Content Element Starts -->
5
+ <h3>Available Extensions</h3>
6
+ <div class="eael-checkbox-container">
7
+
8
+ <div class="eael-checkbox">
9
+ <input type="checkbox" id="section-particles" name="section-particles" <?php checked( 1, $this->eael_get_settings['section-particles'], true ); ?> >
10
+ <label for="section-particles"></label>
11
+ <p class="eael-el-title"><?php _e( 'Section Particles Effect', 'essential-addons-elementor' ) ?></p>
12
+ </div>
13
+
14
+ </div>
15
+ <h3>Premium Extensions</h3>
16
+ <div class="eael-checkbox-container">
17
+
18
+ <div class="eael-checkbox">
19
+ <input type="checkbox" id="section-parallax" name="section-parallax" disabled>
20
+ <label for="section-parallax" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
21
+ <p class="eael-el-title"><?php _e( 'Section Parallax Scrolling', 'essential-addons-elementor' ) ?></p>
22
+ </div>
23
+
24
+ </div>
25
+ <!-- Content Element Ends -->
26
+
27
+ <div class="eael-save-btn-wrap">
28
+ <button type="submit" class="button eael-btn js-eael-settings-save"><?php _e('Save settings', 'essential-addons-elementor'); ?></button>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
admin/settings.php CHANGED
@@ -14,7 +14,7 @@ class Eael_Admin_Settings {
14
  * @var array
15
  * @since 2.3.0
16
  */
17
- public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed', 'twitter-feed-carousel', 'facebook-feed-carousel', 'data-table', 'filter-gallery', 'dynamic-filter-gallery', 'image-accordion', 'content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar' ];
18
 
19
  /**
20
  * Will Contain All Components Default Values
@@ -169,12 +169,14 @@ class Eael_Admin_Settings {
169
  <ul class="eael-tabs">
170
  <li><a href="#general" class="active"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-settings.svg'; ?>"><span>General</span></a></li>
171
  <li><a href="#elements"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-modules.svg'; ?>"><span>Elements</span></a></li>
 
172
  <li><a href="#version-control"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-version-control.svg'; ?>"><span>Version Control</span></a></li>
173
  <li><a href="#go-pro"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-upgrade.svg'; ?>"><span>Go Premium</span></a></li>
174
  </ul>
175
  <?php
176
  include('partials/general.php');
177
  include('partials/elements.php');
 
178
  include('partials/version-control.php');
179
  include('partials/go-pro.php');
180
  ?>
14
  * @var array
15
  * @since 2.3.0
16
  */
17
+ public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'interactive-promo', 'post-grid', 'post-block', 'post-timeline', 'product-grid', 'team-members', 'testimonials', 'weforms', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table','ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'twitter-feed', 'facebook-feed', 'data-table', 'filter-gallery', 'image-accordion', 'content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'section-particles'];
18
 
19
  /**
20
  * Will Contain All Components Default Values
169
  <ul class="eael-tabs">
170
  <li><a href="#general" class="active"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-settings.svg'; ?>"><span>General</span></a></li>
171
  <li><a href="#elements"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-modules.svg'; ?>"><span>Elements</span></a></li>
172
+ <li><a href="#extensions"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-extensions.svg'; ?>"><span>Extensions</span></a></li>
173
  <li><a href="#version-control"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-version-control.svg'; ?>"><span>Version Control</span></a></li>
174
  <li><a href="#go-pro"><img src="<?php echo plugins_url( '/', __FILE__ ).'assets/images/icon-upgrade.svg'; ?>"><span>Go Premium</span></a></li>
175
  </ul>
176
  <?php
177
  include('partials/general.php');
178
  include('partials/elements.php');
179
+ include('partials/extensions.php');
180
  include('partials/version-control.php');
181
  include('partials/go-pro.php');
182
  ?>
assets/css/essential-addons-editor.css CHANGED
File without changes
assets/css/essential-addons-elementor.css CHANGED
@@ -1337,310 +1337,383 @@ span.eael-testimonial-quote {
1337
  text-align: right;
1338
  }
1339
 
1340
- /*-------------------------*/
1341
  /* 09. Product Styles
1342
- /* ------------------------*/
1343
- .eael-product-carousel .woocommerce li.product {
1344
- background-color: #fff;
 
 
 
 
 
 
1345
  -webkit-border-radius: 0;
1346
  border-radius: 0;
 
1347
  -webkit-box-shadow: none;
1348
  box-shadow: none;
1349
  }
1350
-
1351
- .hide_rating .woocommerce .star-rating-container,
1352
- .hide_rating .woocommerce .star-rating {
1353
- display: none !important;
1354
- }
1355
-
1356
- .eael-product-carousel .woocommerce ul.products li.product h3 {
1357
- padding: 0.5em;
1358
- }
1359
-
1360
- .eael-product-carousel .woocommerce .products .star-rating {
1361
- display: block;
1362
- float: none;
1363
- margin: 10px auto;
1364
  }
1365
-
1366
- body:not(.x-ethos):not(.x-integrity):not(.x-renew):not(.x-icon) .eael-product-carousel .woocommerce li.product .button {
 
 
1367
  -webkit-box-shadow: none;
1368
  box-shadow: none;
1369
- display: block;
1370
- left: auto;
1371
- margin: 15px;
1372
- padding: 0.45em 0.5em 0.575em;
1373
- position: relative;
1374
- right: auto;
1375
- text-shadow: none;
1376
- top: auto;
1377
  }
1378
-
1379
- /*--- Product Simple and Reveal Style ---*/
1380
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-featured {
1381
- background-color: transparent;
1382
- border: medium none;
1383
- -webkit-box-shadow: none;
1384
- box-shadow: none;
 
 
 
 
 
 
 
 
 
1385
  padding: 0;
1386
  }
1387
-
1388
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-wrap,
1389
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap {
1390
- background-color: transparent;
1391
- bottom: auto;
 
 
 
 
 
 
 
 
 
 
1392
  -webkit-box-shadow: none;
1393
  box-shadow: none;
1394
- padding: 15px 0 0;
1395
- position: relative;
1396
- text-align: center;
1397
- top: auto;
 
 
 
 
 
 
 
 
1398
  }
1399
-
1400
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header h3,
1401
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header h3 {
1402
  font-size: 14px;
1403
- line-height: 1.2;
1404
- margin: 0 0 5px;
1405
- padding-bottom: 0.5em;
1406
  }
1407
-
1408
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header h3 a,
1409
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header h3 a {
1410
- color: #272727;
1411
- font-weight: normal;
1412
- letter-spacing: 0.01rem;
1413
- text-transform: uppercase;
1414
  }
1415
-
1416
- .eael-product-carousel.eael-product-simple .woocommerce li.product .price > .amount,
1417
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header .price > .amount,
1418
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header .price > ins > .amount,
1419
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header .price > .amount,
1420
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header .price > ins > .amount {
1421
- color: #272727;
1422
- font-size: 18px;
1423
- font-weight: normal;
1424
  }
1425
-
1426
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-wrap::before,
1427
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap::before {
1428
- display: none;
 
 
 
1429
  }
1430
-
1431
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-header .button {
1432
- background-color: transparent;
1433
- border: 1px solid rgba(0, 0, 0, 0.5);
 
 
 
 
 
 
 
 
 
 
1434
  -webkit-border-radius: 0;
1435
  border-radius: 0;
1436
- -webkit-box-shadow: none;
1437
- box-shadow: none;
1438
- color: #272727;
 
 
 
 
 
 
1439
  display: block;
 
 
1440
  font-size: 14px;
1441
- left: auto;
1442
- margin: 20px auto;
1443
- opacity: 1;
1444
- position: relative;
1445
- right: auto;
1446
- text-shadow: none;
1447
- top: auto;
1448
- width: 80%;
1449
  }
1450
-
1451
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-header .button:hover {
1452
- background-color: #e74c3c;
1453
- border: 1px solid #e74c3c;
1454
- color: #fff;
1455
  }
1456
-
1457
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container {
1458
- background-color: transparent;
1459
- left: auto;
1460
- opacity: 1;
1461
- position: relative;
1462
- right: auto;
1463
- top: 5px;
1464
- display: block;
1465
- margin: 0 auto;
1466
- width: 110px;
1467
  }
1468
-
1469
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container .star-rating::before,
1470
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container .star-rating::before {
1471
- color: #f2b01e;
 
 
 
 
1472
  }
1473
-
1474
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container .star-rating span::before,
1475
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container .star-rating span::before {
1476
- color: #f2b01e;
1477
  }
1478
-
1479
- .eael-product-carousel:not(.eael-product-no-style) .onsale {
 
 
 
 
 
 
 
 
 
 
 
1480
  -webkit-border-radius: 0;
1481
  border-radius: 0;
 
1482
  -webkit-box-shadow: none;
1483
  box-shadow: none;
1484
- display: block;
1485
- font-size: 14px;
1486
- height: 100px;
1487
- letter-spacing: 0;
1488
- line-height: 160px;
1489
- position: absolute;
1490
- text-align: center;
1491
- text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
1492
- text-transform: uppercase;
1493
- -webkit-transform: rotate(-45deg);
1494
- -ms-transform: rotate(-45deg);
1495
- transform: rotate(-45deg);
1496
- width: 200px;
1497
- z-index: 1;
1498
  }
1499
-
1500
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .onsale {
1501
- left: -95px;
1502
- top: -45px;
1503
  }
1504
-
1505
- .eael-product-carousel .woocommerce ul.products {
1506
- margin: 0 0 30px;
 
 
1507
  }
1508
-
1509
- /*--- Product Simple and Reveal Style ---*/
1510
- .eael-product-carousel .woocommerce li.product {
1511
- background-color: #fff;
1512
- float: left;
1513
- overflow: hidden;
1514
- padding: 0;
1515
- position: relative;
1516
- text-align: center;
1517
  }
1518
-
1519
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap {
1520
- bottom: -63px;
1521
- margin-top: -63px;
1522
  position: relative;
1523
- top: auto;
1524
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1525
- -o-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1526
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1527
- }
1528
-
1529
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .entry-wrap {
1530
- bottom: 0;
1531
- }
1532
-
1533
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .entry-wrap::before {
1534
- background-color: #fff;
1535
- display: block;
1536
  }
1537
-
1538
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container {
1539
- background-color: rgba(255, 255, 255, 0.9);
1540
- left: auto;
1541
- opacity: 0;
1542
  position: absolute;
1543
- right: 10px;
1544
- top: 10px;
1545
- }
1546
-
1547
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .star-rating-container {
1548
- opacity: 1;
1549
- }
1550
-
1551
- /*--- Product Reveal Styles ---*/
1552
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap {
1553
- bottom: auto;
1554
- font-size: 14px;
1555
  left: 0;
1556
- padding: 0;
1557
- position: absolute;
1558
  right: 0;
1559
- top: calc(100% - 4em);
1560
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1561
- -o-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1562
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1563
  }
1564
-
1565
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap {
1566
- background-color: rgba(0, 0, 0, 0.5);
1567
- bottom: auto;
 
 
 
1568
  font-size: 14px;
1569
- left: 0;
1570
- padding: 0;
1571
- position: absolute;
1572
- right: 0;
1573
  text-align: center;
1574
- top: calc(100% - 4em);
1575
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1576
- -o-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1577
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1578
  }
1579
-
1580
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap::before {
1581
- background-color: rgba(0, 0, 0, 0.5);
1582
- content: "";
1583
- display: block;
1584
- height: 50em;
1585
- left: 0;
1586
- position: absolute;
1587
- right: 0;
1588
- top: 0;
1589
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1590
- -o-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1591
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
1592
- z-index: 0;
1593
  }
1594
-
1595
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap::before {
1596
- background-color: rgba(0, 0, 0, 0.75);
1597
  }
1598
-
1599
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header {
1600
- position: relative;
 
 
 
 
 
 
 
 
1601
  }
1602
-
1603
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header h3 {
 
 
 
 
 
 
 
1604
  font-size: 14px;
1605
- line-height: 1;
 
 
 
 
 
 
1606
  margin: 0;
1607
- overflow: hidden;
1608
- padding: 1.5em;
1609
- -o-text-overflow: ellipsis;
1610
- text-overflow: ellipsis;
1611
- text-transform: uppercase;
1612
- white-space: nowrap;
1613
  }
1614
-
1615
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header h3 a {
 
 
 
 
 
 
 
 
1616
  color: #fff;
 
 
 
 
 
1617
  }
1618
-
1619
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .price > del,
1620
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header .price > del {
1621
- display: none;
 
 
 
 
1622
  }
1623
-
1624
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header .price > .amount,
1625
- .woocommerce li.product .entry-header .price > ins > .amount {
 
 
 
 
 
 
1626
  color: #fff;
1627
- font-size: 24px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1628
  }
1629
-
1630
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .added_to_cart {
1631
- display: none;
 
1632
  }
1633
-
1634
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap {
1635
- top: calc(100% - 10.385em);
 
1636
  }
1637
-
1638
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap::before {
1639
- background-color: rgba(0, 0, 0, 0.75);
 
 
1640
  }
1641
-
1642
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .star-rating-container {
 
 
 
 
 
 
 
 
 
1643
  opacity: 1;
 
 
 
1644
  }
1645
 
1646
  /*--------------------------------*/
@@ -7051,7 +7124,7 @@ a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
7051
  .eael-progressbar-line .eael-progressbar-count-wrap {
7052
  position: absolute;
7053
  right: 0;
7054
- bottom: calc(100% +5px);
7055
  font-size: 16px;
7056
  font-weight: 400;
7057
  line-height: 1;
@@ -7208,7 +7281,7 @@ a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
7208
  position: absolute;
7209
  top: 0;
7210
  left: -35px;
7211
- width: calc(100% +70px);
7212
  height: 100%;
7213
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
7214
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
@@ -7371,3 +7444,6 @@ a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
7371
  transform: none;
7372
  }
7373
  }
 
 
 
1337
  text-align: right;
1338
  }
1339
 
1340
+ /*--------------------------*/
1341
  /* 09. Product Styles
1342
+ /*--------------------------*/
1343
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product,
1344
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product,
1345
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product {
1346
+ position: relative;
1347
+ float: left;
1348
+ overflow: hidden;
1349
+ text-align: center;
1350
+ padding: 0;
1351
  -webkit-border-radius: 0;
1352
  border-radius: 0;
1353
+ background-color: #fff;
1354
  -webkit-box-shadow: none;
1355
  box-shadow: none;
1356
  }
1357
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product a, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product a,
1358
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product a,
1359
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product a {
1360
+ text-decoration: none;
 
 
 
 
 
 
 
 
 
 
1361
  }
1362
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product a:hover, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product a:hover,
1363
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product a:hover,
1364
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product a:hover {
1365
+ outline: none;
1366
  -webkit-box-shadow: none;
1367
  box-shadow: none;
 
 
 
 
 
 
 
 
1368
  }
1369
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product img, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product img,
1370
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product img,
1371
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product img {
1372
+ width: 100%;
1373
+ height: auto;
1374
+ -webkit-backface-visibility: hidden;
1375
+ backface-visibility: hidden;
1376
+ }
1377
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .woocommerce-loop-product__title, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .woocommerce-loop-product__title,
1378
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .woocommerce-loop-product__title,
1379
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .woocommerce-loop-product__title {
1380
+ font-size: 16px;
1381
+ font-weight: 700;
1382
+ line-height: 1;
1383
+ color: #333;
1384
+ margin: 25px 0 12px;
1385
  padding: 0;
1386
  }
1387
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .onsale, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .onsale,
1388
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .onsale,
1389
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .onsale {
1390
+ display: block;
1391
+ line-height: 170px;
1392
+ font-size: 13px;
1393
+ text-align: center;
1394
+ letter-spacing: 0;
1395
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
1396
+ text-transform: uppercase;
1397
+ color: #fff;
1398
+ background-color: #ff2a13;
1399
+ -webkit-border-radius: 0;
1400
+ border-radius: 0;
1401
+ border: none;
1402
  -webkit-box-shadow: none;
1403
  box-shadow: none;
1404
+ position: absolute;
1405
+ height: 100px;
1406
+ width: 200px;
1407
+ z-index: 1;
1408
+ left: -100px;
1409
+ top: -50px;
1410
+ right: auto;
1411
+ margin: 0;
1412
+ padding: 0;
1413
+ -webkit-transform: rotate(-45deg);
1414
+ -ms-transform: rotate(-45deg);
1415
+ transform: rotate(-45deg);
1416
  }
1417
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .price, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .price,
1418
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .price,
1419
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .price {
1420
  font-size: 14px;
1421
+ margin-bottom: 0;
 
 
1422
  }
1423
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .price del, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .price del,
1424
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .price del,
1425
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .price del {
1426
+ opacity: 0.5;
1427
+ display: inline-block;
 
 
1428
  }
1429
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .price ins, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .price ins,
1430
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .price ins,
1431
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .price ins {
1432
+ font-weight: 400;
1433
+ background-color: transparent;
1434
+ color: #ff2a13;
 
 
 
1435
  }
1436
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .star-rating, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .star-rating,
1437
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .star-rating,
1438
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .star-rating {
1439
+ display: block;
1440
+ float: none;
1441
+ font-size: 14px;
1442
+ margin: 10px auto;
1443
  }
1444
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button,
1445
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button,
1446
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button {
1447
+ display: inline-block;
1448
+ height: 40px;
1449
+ font-size: 14px;
1450
+ font-weight: 400;
1451
+ line-height: 40px;
1452
+ text-align: center;
1453
+ text-transform: uppercase;
1454
+ color: #fff;
1455
+ background-color: #333;
1456
+ padding: 0 30px;
1457
+ margin: 15px 0;
1458
  -webkit-border-radius: 0;
1459
  border-radius: 0;
1460
+ }
1461
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button:focus, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button:focus,
1462
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button:focus,
1463
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button:focus {
1464
+ outline: none;
1465
+ }
1466
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product a.added_to_cart, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product a.added_to_cart,
1467
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product a.added_to_cart,
1468
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product a.added_to_cart {
1469
  display: block;
1470
+ margin: 0 0 15px 0;
1471
+ padding: 0;
1472
  font-size: 14px;
1473
+ line-height: 1;
1474
+ text-transform: capitalize;
1475
+ color: #333;
1476
+ background-color: transparent;
 
 
 
 
1477
  }
1478
+ .eael-product-grid.eael-product-simple .woocommerce ul.products li.product,
1479
+ .eael-post-grid.eael-product-simple .woocommerce ul.products li.product {
1480
+ border: 1px solid #eee;
 
 
1481
  }
1482
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product,
1483
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product {
1484
+ border: 1px solid transparent;
 
 
 
 
 
 
 
 
1485
  }
1486
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button,
1487
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product a.added_to_cart,
1488
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button,
1489
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product a.added_to_cart {
1490
+ visibility: hidden;
1491
+ -webkit-transition: none;
1492
+ -o-transition: none;
1493
+ transition: none;
1494
  }
1495
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product:hover,
1496
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product:hover {
1497
+ border: 1px solid #eee;
 
1498
  }
1499
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product:hover .button.add_to_cart_button,
1500
+ .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product:hover a.added_to_cart,
1501
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product:hover .button.add_to_cart_button,
1502
+ .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product:hover a.added_to_cart {
1503
+ visibility: visible;
1504
+ }
1505
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product,
1506
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product {
1507
+ position: relative;
1508
+ float: left;
1509
+ overflow: hidden;
1510
+ text-align: center;
1511
+ padding: 0 0 15px 0;
1512
  -webkit-border-radius: 0;
1513
  border-radius: 0;
1514
+ background-color: #fff;
1515
  -webkit-box-shadow: none;
1516
  box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1517
  }
1518
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product a,
1519
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product a {
1520
+ text-decoration: none;
 
1521
  }
1522
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product a:hover,
1523
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product a:hover {
1524
+ outline: none;
1525
+ -webkit-box-shadow: none;
1526
+ box-shadow: none;
1527
  }
1528
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product img,
1529
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product img {
1530
+ width: 100%;
1531
+ height: auto;
1532
+ margin: 0;
1533
+ -webkit-backface-visibility: hidden;
1534
+ backface-visibility: hidden;
 
 
1535
  }
1536
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay,
1537
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay {
 
 
1538
  position: relative;
1539
+ overflow: hidden;
1540
+ line-height: 0;
 
 
 
 
 
 
 
 
 
 
 
1541
  }
1542
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .button-wrap,
1543
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .button-wrap {
 
 
 
1544
  position: absolute;
1545
+ top: 50%;
 
 
 
 
 
 
 
 
 
 
 
1546
  left: 0;
 
 
1547
  right: 0;
1548
+ text-align: center;
1549
+ -webkit-transform: translateY(-50%);
1550
+ -ms-transform: translateY(-50%);
1551
+ transform: translateY(-50%);
1552
  }
1553
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link,
1554
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button,
1555
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart,
1556
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link,
1557
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button,
1558
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart {
1559
+ display: inline-block;
1560
  font-size: 14px;
1561
+ line-height: 38px;
 
 
 
1562
  text-align: center;
1563
+ color: #fff;
1564
+ background-color: #333;
1565
+ width: 38px;
1566
+ height: 38px;
1567
+ border-style: none;
1568
+ -webkit-border-radius: 50%;
1569
+ border-radius: 50%;
1570
+ vertical-align: middle;
1571
+ padding: 0;
1572
+ margin: 0 5px;
1573
+ -webkit-transform: translateY(20px);
1574
+ -ms-transform: translateY(20px);
1575
+ transform: translateY(20px);
1576
+ opacity: 0;
1577
+ -webkit-transition: opacity 300ms, -webkit-transform 200ms;
1578
+ transition: opacity 300ms, -webkit-transform 200ms;
1579
+ -o-transition: transform 200ms, opacity 300ms;
1580
+ transition: transform 200ms, opacity 300ms;
1581
+ transition: transform 200ms, opacity 300ms, -webkit-transform 200ms;
1582
+ }
1583
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link:focus,
1584
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:focus,
1585
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:focus,
1586
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link:focus,
1587
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:focus,
1588
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:focus {
1589
+ outline: none;
1590
  }
1591
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button,
1592
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button {
1593
+ font-size: 0;
 
 
 
 
 
 
 
 
 
 
 
1594
  }
1595
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:before,
1596
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:before {
1597
+ display: none;
1598
  }
1599
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after,
1600
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after {
1601
+ content: '\f217';
1602
+ font: normal normal normal 14px/1 FontAwesome;
1603
+ font-size: 14px;
1604
+ line-height: 38px;
1605
+ text-rendering: auto;
1606
+ -webkit-font-smoothing: antialiased;
1607
+ vertical-align: middle;
1608
+ margin: 0;
1609
+ padding: 0;
1610
  }
1611
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:before,
1612
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:before {
1613
+ display: none;
1614
+ }
1615
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after,
1616
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after {
1617
+ content: '\f110';
1618
+ display: inline-block;
1619
+ font: normal normal normal 14px/1 FontAwesome;
1620
  font-size: 14px;
1621
+ line-height: 38px;
1622
+ color: #fff;
1623
+ height: auto;
1624
+ width: auto;
1625
+ position: relative;
1626
+ top: 0;
1627
+ left: 0;
1628
  margin: 0;
1629
+ padding: 0;
 
 
 
 
 
1630
  }
1631
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart,
1632
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart {
1633
+ font-size: 0;
1634
+ }
1635
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after,
1636
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after {
1637
+ content: '\f06e';
1638
+ font: normal normal normal 14px/1 FontAwesome;
1639
+ font-size: 14px;
1640
+ line-height: 38px;
1641
  color: #fff;
1642
+ text-rendering: auto;
1643
+ -webkit-font-smoothing: antialiased;
1644
+ vertical-align: middle;
1645
+ margin: 0;
1646
+ padding: 0;
1647
  }
1648
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .woocommerce-loop-product__title,
1649
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .woocommerce-loop-product__title {
1650
+ font-size: 16px;
1651
+ font-weight: 700;
1652
+ line-height: 1;
1653
+ color: #333;
1654
+ margin: 25px 0 12px;
1655
+ padding: 0;
1656
  }
1657
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .onsale,
1658
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .onsale {
1659
+ display: block;
1660
+ line-height: 170px;
1661
+ font-size: 13px;
1662
+ text-align: center;
1663
+ letter-spacing: 0;
1664
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
1665
+ text-transform: uppercase;
1666
  color: #fff;
1667
+ background-color: #ff2a13;
1668
+ -webkit-border-radius: 0;
1669
+ border-radius: 0;
1670
+ border: none;
1671
+ -webkit-box-shadow: none;
1672
+ box-shadow: none;
1673
+ position: absolute;
1674
+ height: 100px;
1675
+ width: 200px;
1676
+ z-index: 1;
1677
+ left: -100px;
1678
+ top: -50px;
1679
+ right: auto;
1680
+ margin: 0;
1681
+ padding: 0;
1682
+ -webkit-transform: rotate(-45deg);
1683
+ -ms-transform: rotate(-45deg);
1684
+ transform: rotate(-45deg);
1685
  }
1686
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .price,
1687
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .price {
1688
+ font-size: 14px;
1689
+ margin-bottom: 0;
1690
  }
1691
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .price del,
1692
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .price del {
1693
+ opacity: 0.5;
1694
+ display: inline-block;
1695
  }
1696
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .price ins,
1697
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .price ins {
1698
+ font-weight: 400;
1699
+ background-color: transparent;
1700
+ color: #ff2a13;
1701
  }
1702
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .star-rating,
1703
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .star-rating {
1704
+ display: block;
1705
+ float: none;
1706
+ font-size: 14px;
1707
+ margin: 10px auto;
1708
+ }
1709
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product:hover .overlay a,
1710
+ .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product:hover .overlay .add_to_cart_button,
1711
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product:hover .overlay a,
1712
+ .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product:hover .overlay .add_to_cart_button {
1713
  opacity: 1;
1714
+ -webkit-transform: translateY(0);
1715
+ -ms-transform: translateY(0);
1716
+ transform: translateY(0);
1717
  }
1718
 
1719
  /*--------------------------------*/
7124
  .eael-progressbar-line .eael-progressbar-count-wrap {
7125
  position: absolute;
7126
  right: 0;
7127
+ bottom: calc(100% + 5px);
7128
  font-size: 16px;
7129
  font-weight: 400;
7130
  line-height: 1;
7281
  position: absolute;
7282
  top: 0;
7283
  left: -35px;
7284
+ width: calc(100% + 70px);
7285
  height: 100%;
7286
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
7287
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
7444
  transform: none;
7445
  }
7446
  }
7447
+ .elementor-section .elementor-container {
7448
+ z-index: 99;
7449
+ }
assets/css/tooltipster.bundle.min.css CHANGED
File without changes
assets/img/accordion.png CHANGED
File without changes
assets/img/bg.jpg CHANGED
File without changes
assets/img/flexia-preview.jpg CHANGED
File without changes
assets/img/play-icon.png CHANGED
File without changes
assets/js/eael-scripts.js CHANGED
@@ -25,6 +25,7 @@
25
  percentPosition: true,
26
  stagger: 30,
27
  transitionDuration: $settings.duration + 'ms',
 
28
  });
29
 
30
  // layout gal - not necessary, just in case
@@ -643,8 +644,205 @@
643
  }
644
 
645
  var ProgressBar = function ($scope, $) {
646
- jQuery('.eael-progressbar', $scope).eaelProgressBar()
647
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
648
 
649
  $(window).on('elementor/frontend/init', function () {
650
  if(elementorFrontend.isEditMode()) {
@@ -664,6 +862,7 @@
664
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-image-accordion.default', ImageAccordion);
665
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-countdown.default', CountDown);
666
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-progress-bar.default', ProgressBar);
 
667
  });
668
 
669
  }(jQuery));
25
  percentPosition: true,
26
  stagger: 30,
27
  transitionDuration: $settings.duration + 'ms',
28
+ filter: $('.eael-filter-gallery-control .control.active', $scope).data('filter')
29
  });
30
 
31
  // layout gal - not necessary, just in case
644
  }
645
 
646
  var ProgressBar = function ($scope, $) {
647
+
648
+ var $progressBar = $scope.find('.eael-progress-bar-container').eq(0),
649
+ $layout = mybe_note_undefined($progressBar, "layout"),
650
+ $id = mybe_note_undefined($progressBar, "id"),
651
+ $number = mybe_note_undefined($progressBar, "number"),
652
+ $class = '.elementor-element-' + $scope.data('id'),
653
+ $line_stroke_color = mybe_note_undefined($progressBar, "line-stroke-color"),
654
+ $line_stroke_width = mybe_note_undefined($progressBar, "line-stroke-width"),
655
+ $line_stroke_trail_color = mybe_note_undefined($progressBar, "line-stroke-trail-color"),
656
+ $line_stroke_trail_width = mybe_note_undefined($progressBar, "line-stroke-trail-width"),
657
+ $line_direction = mybe_note_undefined($progressBar, "line-direction"),
658
+
659
+ $fan_stroke_color = mybe_note_undefined($progressBar, "fan-stroke-color"),
660
+ $fan_stroke_width = mybe_note_undefined($progressBar, "fan-stroke-width"),
661
+ $fan_stroke_trail_color = mybe_note_undefined($progressBar, "fan-stroke-trail-color"),
662
+ $fan_stroke_trail_width = mybe_note_undefined($progressBar, "fan-stroke-trail-width"),
663
+ $fan_direction = mybe_note_undefined($progressBar, "fan-direction"),
664
+
665
+ $circle_stroke_color = mybe_note_undefined($progressBar, "circle-stroke-color"),
666
+ $circle_stroke_width = mybe_note_undefined($progressBar, "circle-stroke-width"),
667
+ $circle_stroke_trail_color = mybe_note_undefined($progressBar, "circle-stroke-trail-color"),
668
+ $circle_stroke_trail_width = mybe_note_undefined($progressBar, "circle-stroke-trail-width"),
669
+ $circle_direction = mybe_note_undefined($progressBar, "circle-direction"),
670
+
671
+ $bubble_circle_color = mybe_note_undefined($progressBar, "bubble-circle-color"),
672
+ $bubble_bg_color = mybe_note_undefined($progressBar, "bubble-bg-color"),
673
+ $bubble_circle_width = mybe_note_undefined($progressBar, "bubble-circle-width"),
674
+ $bubble_direction = mybe_note_undefined($progressBar, "bubble-direction"),
675
+
676
+ $rainbow_stroke_width = mybe_note_undefined($progressBar, "rainbow-stroke-width"),
677
+ $rainbow_stroke_trail_width = mybe_note_undefined($progressBar, "rainbow-stroke-trail-width"),
678
+ $rainbow_color_one = mybe_note_undefined($progressBar, "rainbow-color-one"),
679
+ $rainbow_color_two = mybe_note_undefined($progressBar, "rainbow-color-two"),
680
+ $rainbow_color_three = mybe_note_undefined($progressBar, "rainbow-color-three"),
681
+ $rainbow_color_four = mybe_note_undefined($progressBar, "rainbow-color-four"),
682
+ $rainbow_color_five = mybe_note_undefined($progressBar, "rainbow-color-five"),
683
+ $rainbow_direction = mybe_note_undefined($progressBar, "rainbow-direction");
684
+
685
+
686
+ if('rainbow' == $layout){
687
+ var bar = new ldBar($class + ' .inside-progressbar', {
688
+ "type": 'stroke',
689
+ "path": 'M0 10L100 10',
690
+ "stroke": 'data:ldbar/res,gradient(0,1,'+ $rainbow_color_one +','+ $rainbow_color_two +','+ $rainbow_color_three +','+ $rainbow_color_four +','+ $rainbow_color_five +')',
691
+ "aspect-ratio": 'none',
692
+ "stroke-width": $rainbow_stroke_width,
693
+ "stroke-trail-width": $rainbow_stroke_trail_width,
694
+ "stroke-dir": $rainbow_direction
695
+ }).set($number);
696
+ }
697
+ else if('line' == $layout){
698
+ var bar = new ldBar($class + ' .inside-progressbar', {
699
+ "type": 'stroke',
700
+ "path": 'M0 10L100 10',
701
+ "stroke": $line_stroke_color,
702
+ "stroke-width": $line_stroke_width,
703
+ "stroke-trail": $line_stroke_trail_color,
704
+ "stroke-trail-width": $line_stroke_trail_width,
705
+ "aspect-ratio": 'none',
706
+ "stroke-dir": $line_direction
707
+ }).set($number);
708
+ }
709
+ else if('fan' == $layout){
710
+ var bar = new ldBar($class + ' .inside-progressbar', {
711
+ "type": 'stroke',
712
+ "path": 'M10 90A40 40 0 0 1 90 90',
713
+ "fill-dir": $fan_direction,
714
+ "fill": $fan_stroke_color,
715
+ "fill-background": $fan_stroke_trail_color,
716
+ "fill-background-extrude": $fan_stroke_width,
717
+ "stroke-dir": 'normal',
718
+ "stroke": $fan_stroke_color,
719
+ "stroke-width": $fan_stroke_width,
720
+ "stroke-trail": $fan_stroke_trail_color,
721
+ "stroke-trail-width": $fan_stroke_trail_width
722
+ }).set($number);
723
+ }
724
+ else if('circle' == $layout){
725
+ var bar = new ldBar($class + ' .inside-progressbar', {
726
+ "type": 'stroke',
727
+ "path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
728
+ "fill-dir": $circle_direction,
729
+ "fill": $circle_stroke_color,
730
+ "fill-background": $circle_stroke_trail_color,
731
+ "fill-background-extrude": $circle_stroke_width,
732
+ "stroke-dir": 'normal',
733
+ "stroke": $circle_stroke_color,
734
+ "stroke-width": $circle_stroke_width,
735
+ "stroke-trail": $circle_stroke_trail_color,
736
+ "stroke-trail-width": $circle_stroke_trail_width
737
+ }).set($number);
738
+ }
739
+ else if('bubble' == $layout){
740
+ var bar = new ldBar($class + ' .inside-progressbar', {
741
+ "type": 'fill',
742
+ "path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
743
+ "fill-dir": $bubble_direction,
744
+ "fill": 'data:ldbar/res,bubble('+ $bubble_bg_color +','+ $bubble_circle_color +')',
745
+ "pattern-size": $bubble_circle_width,
746
+ "fill-background": '#ddd',
747
+ "fill-background-extrude": 2,
748
+ "stroke-dir": 'normal',
749
+ "stroke": '#25b',
750
+ "stroke-width": '3',
751
+ "stroke-trail": '#ddd',
752
+ "stroke-trail-width": 0.5
753
+ }).set($number);
754
+ }
755
+ };
756
+
757
+ /*=================================*/
758
+ /* 36. Section Particles
759
+ /*=================================*/
760
+ var EaelParticlesHandler = function($scope,$){
761
+ var target = $scope,
762
+ sectionId = target.data('id'),
763
+ editMode = elementorFrontend.isEditMode(),
764
+ settings;
765
+
766
+
767
+ if ( editMode ) {
768
+ settings = generateEditorSettings( sectionId );
769
+ }
770
+
771
+ if (!editMode || ! settings ) {
772
+ return false;
773
+ }
774
+
775
+ if(settings.switch == 'yes') {
776
+ target.addClass('eael-particles-section');
777
+ if(settings.themeSource === 'presets' || settings.themeSource === 'custom' && '' !== settings.selected_theme) {
778
+ generateParticles();
779
+ }
780
+ } else {
781
+ target.removeClass('eael-particles-section');
782
+ }
783
+
784
+
785
+ function generateEditorSettings(targetId){
786
+ var editorElements = null,
787
+ sectionData = {},
788
+ settings = {};
789
+
790
+ if ( ! window.elementor.hasOwnProperty( 'elements' ) ) {
791
+ return false;
792
+ }
793
+
794
+ editorElements = window.elementor.elements;
795
+
796
+ if ( ! editorElements.models ) {
797
+ return false;
798
+ }
799
+
800
+ $.each(editorElements.models,function(index,elem){
801
+ if( targetId == elem.id){
802
+ sectionData = elem.attributes.settings.attributes;
803
+
804
+ } else if( elem.id == target.closest( '.elementor-top-section' ).data( 'id' ) ) {
805
+ $.each(elem.attributes.elements.models,function(index,col){
806
+ $.each(col.attributes.elements.models,function(index,subSec){
807
+ sectionData = subSec.attributes.settings.attributes;
808
+ });
809
+ });
810
+ }
811
+ });
812
+
813
+ settings.switch = sectionData[ 'eael_particle_switch' ];
814
+ settings.zIndex = sectionData[ 'eael_particles_zindex' ];
815
+ settings.themeSource = sectionData['eael_particle_theme_from'];
816
+
817
+
818
+ if(settings.themeSource == 'presets') {
819
+ settings.selected_theme = (ParticleThemesData[sectionData[ 'eael_particle_preset_themes' ]]);
820
+ }
821
+
822
+ if( (settings.themeSource == 'custom') && ('' !== sectionData[ 'eael_particles_custom_style' ]) ){
823
+ settings.selected_theme = sectionData[ 'eael_particles_custom_style' ];
824
+ }
825
+
826
+ if ( 0 !== settings.length ) {
827
+ return settings;
828
+ }
829
+
830
+ return false;
831
+ }
832
+
833
+ function generateParticles(){
834
+ target.attr('id','eael-section-particles-'+ sectionId);
835
+ if(typeof particlesJS !== 'undefined' && $.isFunction(particlesJS)) {
836
+ particlesJS("eael-section-particles-" + sectionId, JSON.parse(settings.selected_theme));
837
+ target.children('canvas.particles-js-canvas-el').css({
838
+ zIndex: settings.zIndex,
839
+ position: 'absolute',
840
+ top:0
841
+ });
842
+ }
843
+ }
844
+
845
+ };
846
 
847
  $(window).on('elementor/frontend/init', function () {
848
  if(elementorFrontend.isEditMode()) {
862
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-image-accordion.default', ImageAccordion);
863
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-countdown.default', CountDown);
864
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-progress-bar.default', ProgressBar);
865
+ elementorFrontend.hooks.addAction( 'frontend/element_ready/section', EaelParticlesHandler );
866
  });
867
 
868
  }(jQuery));
assets/js/fancy-text.js CHANGED
File without changes
assets/js/isotope.pkgd.min.js CHANGED
File without changes
assets/js/jquery.magnific-popup.min.js CHANGED
File without changes
assets/js/jquery.resize.min.js CHANGED
File without changes
assets/js/load-more.js CHANGED
File without changes
assets/js/loading-bar.min.js CHANGED
File without changes
assets/js/masonry.min.js CHANGED
File without changes
assets/js/mixitup.min.js CHANGED
File without changes
assets/js/particles.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /*
2
+ /* Author : Vincent Garreau - vincentgarreau.com
3
+ /* MIT license: http://opensource.org/licenses/MIT
4
+ */
5
+ function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e<i.particles.number.value;e++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value))},i.fn.particlesUpdate=function(){for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];if(i.particles.move.enable){var t=i.particles.move.speed/2;a.x+=a.vx*t,a.y+=a.vy*t}if(i.particles.opacity.anim.enable&&(1==a.opacity_status?(a.opacity>=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n<i.particles.array.length;n++){var r=i.particles.array[n];i.particles.line_linked.enable&&i.fn.interact.linkParticles(a,r),i.particles.move.attract.enable&&i.fn.interact.attractParticles(a,r),i.particles.move.bounce&&i.fn.interact.bounceParticles(a,r)}}},i.fn.particlesDraw=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h),i.fn.particlesUpdate();for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];a.draw()}},i.fn.particlesEmpty=function(){i.particles.array=[]},i.fn.particlesRefresh=function(){cancelRequestAnimFrame(i.fn.checkAnimFrame),cancelRequestAnimFrame(i.fn.drawAnimFrame),i.tmp.source_svg=void 0,i.tmp.img_obj=void 0,i.tmp.count_svg=0,i.fn.particlesEmpty(),i.fn.canvasClear(),i.fn.vendors.start()},i.fn.interact.linkParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=i.particles.line_linked.opacity-n/(1/i.particles.line_linked.opacity)/i.particles.line_linked.distance;if(r>0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v<e.opacity&&v>=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius<i.canvas.w&&(e.x=v.x),v.y-e.radius>0&&v.y+e.radius<i.canvas.h&&(e.y=v.y)):(e.x=v.x,e.y=v.y)}else if(i.interactivity.events.onclick.enable&&isInArray("repulse",i.interactivity.events.onclick.mode))if(i.tmp.repulse_finish||(i.tmp.repulse_count++,i.tmp.repulse_count==i.particles.array.length&&(i.tmp.repulse_finish=!0)),i.tmp.repulse_clicking){var c=Math.pow(i.interactivity.modes.repulse.distance/6,3),p=i.interactivity.mouse.click_pos_x-e.x,d=i.interactivity.mouse.click_pos_y-e.y,m=p*p+d*d,u=-c/m*1;c>=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;t<i.particles.array.length;t++){var s=i.particles.array[t],n=e.x-s.x,r=e.y-s.y,c=Math.sqrt(n*n+r*r);c<=e.radius+s.radius&&(e.x=a?a.x:Math.random()*i.canvas.w,e.y=a?a.y:Math.random()*i.canvas.h,i.fn.vendors.checkOverlap(e))}},i.fn.vendors.createSvgImg=function(e){var a=i.tmp.source_svg,t=/#([0-9A-F]{3,6})/gi,s=a.replace(t,function(a,t,i,s){if(e.color.rgb)var n="rgba("+e.color.rgb.r+","+e.color.rgb.g+","+e.color.rgb.b+","+e.opacity+")";else var n="hsla("+e.color.hsl.h+","+e.color.hsl.s+"%,"+e.color.hsl.l+"%,"+e.opacity+")";return n}),n=new Blob([s],{type:"image/svg+xml;charset=utf-8"}),r=window.URL||window.webkitURL||window,c=r.createObjectURL(n),o=new Image;o.addEventListener("load",function(){e.img.obj=o,e.img.loaded=!0,r.revokeObjectURL(c),i.tmp.count_svg++}),o.src=c},i.fn.vendors.destroypJS=function(){cancelAnimationFrame(i.fn.drawAnimFrame),t.remove(),pJSDom=null},i.fn.vendors.drawShape=function(e,a,t,i,s,n){var r=s*n,c=s/n,o=180*(c-2)/c,l=Math.PI-Math.PI*o/180;e.save(),e.beginPath(),e.translate(a,t),e.moveTo(0,0);for(var v=0;r>v;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()};
assets/js/tooltipster.bundle.min.js CHANGED
File without changes
assets/sass/_particles.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ .elementor-section .elementor-container {
2
+ z-index: 99;
3
+ }
assets/sass/_progress-bar.scss CHANGED
@@ -2,7 +2,6 @@
2
  $color_0: #eeeeee;
3
  $color_1: #000000;
4
  $color_2: rgba(255, 255, 255, .15);
5
-
6
  @-webkit-keyframes animateStripe {
7
  0% {
8
  transform: translate(0, 0);
@@ -11,6 +10,7 @@ $color_2: rgba(255, 255, 255, .15);
11
  transform: translate(35px, 0);
12
  }
13
  }
 
14
  @keyframes animateStripe {
15
  0% {
16
  transform: translate(0, 0);
@@ -19,6 +19,7 @@ $color_2: rgba(255, 255, 255, .15);
19
  transform: translate(35px, 0);
20
  }
21
  }
 
22
  @-webkit-keyframes animateStripeRTL {
23
  0% {
24
  transform: translate(0, 0);
@@ -27,6 +28,7 @@ $color_2: rgba(255, 255, 255, .15);
27
  transform: translate(-35px, 0);
28
  }
29
  }
 
30
  @keyframes animateStripeRTL {
31
  0% {
32
  transform: translate(0, 0);
@@ -35,13 +37,16 @@ $color_2: rgba(255, 255, 255, .15);
35
  transform: translate(-35px, 0);
36
  }
37
  }
 
38
  .eael-progressbar {
39
  position: relative;
40
  }
 
41
  .eael-progressbar-title {
42
  font-size: 20px;
43
  font-weight: 400;
44
  }
 
45
  .eael-progressbar-line {
46
  position: relative;
47
  display: block;
@@ -51,12 +56,13 @@ $color_2: rgba(255, 255, 255, .15);
51
  .eael-progressbar-count-wrap {
52
  position: absolute;
53
  right: 0;
54
- bottom: calc(100% +5px);
55
  font-size: 16px;
56
  font-weight: 400;
57
  line-height: 1;
58
  }
59
  }
 
60
  .eael-progressbar-line-fill {
61
  display: inline-block;
62
  position: absolute;
@@ -69,6 +75,7 @@ $color_2: rgba(255, 255, 255, .15);
69
  transition: width 1500ms linear;
70
  overflow: hidden;
71
  }
 
72
  .eael-progressbar-circle {
73
  position: relative;
74
  width: 200px;
@@ -82,12 +89,14 @@ $color_2: rgba(255, 255, 255, .15);
82
  font-weight: 700;
83
  }
84
  }
 
85
  .eael-progressbar-circle-shadow {
86
  width: 220px;
87
  height: 220px;
88
  padding: 10px;
89
  border-radius: 50%;
90
  }
 
91
  .eael-progressbar-circle-pie {
92
  position: absolute;
93
  top: 0;
@@ -96,6 +105,7 @@ $color_2: rgba(255, 255, 255, .15);
96
  height: 100%;
97
  clip-path: inset(0 0 0 50%);
98
  }
 
99
  .eael-progressbar-circle-inner {
100
  height: 100%;
101
  width: 100%;
@@ -104,6 +114,7 @@ $color_2: rgba(255, 255, 255, .15);
104
  border-color: $color_0;
105
  border-radius: 50%;
106
  }
 
107
  .eael-progressbar-circle-half {
108
  position: absolute;
109
  left: 0;
@@ -116,13 +127,16 @@ $color_2: rgba(255, 255, 255, .15);
116
  border-radius: 50%;
117
  clip-path: inset(0 50% 0 0);
118
  }
 
119
  .eael-progressbar-circle-half-left {
120
  transform: rotate(0deg);
121
  }
 
122
  .eael-progressbar-circle-half-right {
123
  transform: rotate(180deg);
124
  visibility: hidden;
125
  }
 
126
  .eael-progressbar-circle-inner-content {
127
  position: absolute;
128
  top: 50%;
@@ -130,6 +144,7 @@ $color_2: rgba(255, 255, 255, .15);
130
  transform: translateY(-50%);
131
  text-align: center;
132
  }
 
133
  .eael-progressbar-half-circle {
134
  position: relative;
135
  width: 200px;
@@ -157,31 +172,37 @@ $color_2: rgba(255, 255, 255, .15);
157
  font-weight: 700;
158
  }
159
  }
 
160
  .eael-progressbar-half-circle-after {
161
  position: relative;
162
  font-size: 12px;
163
  font-weight: 400;
164
  clear: both;
165
  }
 
166
  .eael-progressbar-postfix-label {
167
  float: right;
168
  }
 
169
  .eael-progressbar-line-stripe .eael-progressbar-line-fill:after {
170
  content: '';
171
  position: absolute;
172
  top: 0;
173
  left: -35px;
174
- width: calc(100% +70px);
175
  height: 100%;
176
  background-image: linear-gradient(45deg, $color_2 25%, transparent 25%, transparent 50%, $color_2 50%, $color_2 75%, transparent 75%, transparent);
177
  background-size: 35px 35px;
178
  }
 
179
  .eael-progressbar-line-animate .eael-progressbar-line-fill:after {
180
  animation: animateStripe 2s linear infinite;
181
  }
 
182
  .eael-progressbar-line-animate-rtl .eael-progressbar-line-fill:after {
183
  animation: animateStripeRTL 2s linear infinite;
184
  }
185
- .eael-progressbar-circle-wrap > div {
 
186
  margin: 0 auto;
187
  }
2
  $color_0: #eeeeee;
3
  $color_1: #000000;
4
  $color_2: rgba(255, 255, 255, .15);
 
5
  @-webkit-keyframes animateStripe {
6
  0% {
7
  transform: translate(0, 0);
10
  transform: translate(35px, 0);
11
  }
12
  }
13
+
14
  @keyframes animateStripe {
15
  0% {
16
  transform: translate(0, 0);
19
  transform: translate(35px, 0);
20
  }
21
  }
22
+
23
  @-webkit-keyframes animateStripeRTL {
24
  0% {
25
  transform: translate(0, 0);
28
  transform: translate(-35px, 0);
29
  }
30
  }
31
+
32
  @keyframes animateStripeRTL {
33
  0% {
34
  transform: translate(0, 0);
37
  transform: translate(-35px, 0);
38
  }
39
  }
40
+
41
  .eael-progressbar {
42
  position: relative;
43
  }
44
+
45
  .eael-progressbar-title {
46
  font-size: 20px;
47
  font-weight: 400;
48
  }
49
+
50
  .eael-progressbar-line {
51
  position: relative;
52
  display: block;
56
  .eael-progressbar-count-wrap {
57
  position: absolute;
58
  right: 0;
59
+ bottom: calc(100% + 5px);
60
  font-size: 16px;
61
  font-weight: 400;
62
  line-height: 1;
63
  }
64
  }
65
+
66
  .eael-progressbar-line-fill {
67
  display: inline-block;
68
  position: absolute;
75
  transition: width 1500ms linear;
76
  overflow: hidden;
77
  }
78
+
79
  .eael-progressbar-circle {
80
  position: relative;
81
  width: 200px;
89
  font-weight: 700;
90
  }
91
  }
92
+
93
  .eael-progressbar-circle-shadow {
94
  width: 220px;
95
  height: 220px;
96
  padding: 10px;
97
  border-radius: 50%;
98
  }
99
+
100
  .eael-progressbar-circle-pie {
101
  position: absolute;
102
  top: 0;
105
  height: 100%;
106
  clip-path: inset(0 0 0 50%);
107
  }
108
+
109
  .eael-progressbar-circle-inner {
110
  height: 100%;
111
  width: 100%;
114
  border-color: $color_0;
115
  border-radius: 50%;
116
  }
117
+
118
  .eael-progressbar-circle-half {
119
  position: absolute;
120
  left: 0;
127
  border-radius: 50%;
128
  clip-path: inset(0 50% 0 0);
129
  }
130
+
131
  .eael-progressbar-circle-half-left {
132
  transform: rotate(0deg);
133
  }
134
+
135
  .eael-progressbar-circle-half-right {
136
  transform: rotate(180deg);
137
  visibility: hidden;
138
  }
139
+
140
  .eael-progressbar-circle-inner-content {
141
  position: absolute;
142
  top: 50%;
144
  transform: translateY(-50%);
145
  text-align: center;
146
  }
147
+
148
  .eael-progressbar-half-circle {
149
  position: relative;
150
  width: 200px;
172
  font-weight: 700;
173
  }
174
  }
175
+
176
  .eael-progressbar-half-circle-after {
177
  position: relative;
178
  font-size: 12px;
179
  font-weight: 400;
180
  clear: both;
181
  }
182
+
183
  .eael-progressbar-postfix-label {
184
  float: right;
185
  }
186
+
187
  .eael-progressbar-line-stripe .eael-progressbar-line-fill:after {
188
  content: '';
189
  position: absolute;
190
  top: 0;
191
  left: -35px;
192
+ width: calc(100% + 70px);
193
  height: 100%;
194
  background-image: linear-gradient(45deg, $color_2 25%, transparent 25%, transparent 50%, $color_2 50%, $color_2 75%, transparent 75%, transparent);
195
  background-size: 35px 35px;
196
  }
197
+
198
  .eael-progressbar-line-animate .eael-progressbar-line-fill:after {
199
  animation: animateStripe 2s linear infinite;
200
  }
201
+
202
  .eael-progressbar-line-animate-rtl .eael-progressbar-line-fill:after {
203
  animation: animateStripeRTL 2s linear infinite;
204
  }
205
+
206
+ .eael-progressbar-circle-wrap>div {
207
  margin: 0 auto;
208
  }
assets/sass/_woo-products.scss CHANGED
@@ -1,289 +1,370 @@
1
- /*-------------------------*/
2
  /* 09. Product Styles
3
- /* ------------------------*/
4
- .eael-product-carousel .woocommerce li.product {
5
- background-color: #fff;
6
- border-radius: 0;
7
- box-shadow: none;
8
- }
9
-
10
- .hide_rating .woocommerce .star-rating-container,
11
- .hide_rating .woocommerce .star-rating {
12
- display: none !important;
13
- }
14
-
15
- .eael-product-carousel .woocommerce ul.products li.product h3 {
16
- padding: 0.5em;
17
- }
18
-
19
- .eael-product-carousel .woocommerce .products .star-rating {
20
- display: block;
21
- float: none;
22
- margin: 10px auto;
23
- }
24
-
25
- body:not(.x-ethos):not(.x-integrity):not(.x-renew):not(.x-icon) .eael-product-carousel .woocommerce li.product .button {
26
- box-shadow: none;
27
- display: block;
28
- left: auto;
29
- margin: 15px;
30
- padding: 0.45em 0.5em 0.575em;
31
- position: relative;
32
- right: auto;
33
- text-shadow: none;
34
- top: auto;
35
- }
36
-
37
-
38
- /*--- Product Simple and Reveal Style ---*/
39
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-featured {
40
- background-color: transparent;
41
- border: medium none;
42
- box-shadow: none;
43
- padding: 0;
44
- }
45
-
46
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-wrap,
47
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap {
48
- background-color: transparent;
49
- bottom: auto;
50
- box-shadow: none;
51
- padding: 15px 0 0;
52
- position: relative;
53
- text-align: center;
54
- top: auto;
55
- }
56
-
57
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header h3,
58
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header h3 {
59
- font-size: 14px;
60
- line-height: 1.2;
61
- margin: 0 0 5px;
62
- padding-bottom: 0.5em;
63
- }
64
-
65
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header h3 a,
66
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header h3 a {
67
- color: #272727;
68
- font-weight: normal;
69
- letter-spacing: 0.01rem;
70
- text-transform: uppercase;
71
- }
72
-
73
- .eael-product-carousel.eael-product-simple .woocommerce li.product .price>.amount,
74
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header .price>.amount,
75
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-header .price>ins>.amount,
76
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header .price>.amount,
77
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-header .price>ins>.amount {
78
- color: #272727;
79
- font-size: 18px;
80
- font-weight: normal;
81
- }
82
-
83
- .eael-product-carousel.eael-product-simple .woocommerce li.product .entry-wrap::before,
84
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap::before {
85
- display: none;
86
- }
87
-
88
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-header .button {
89
- background-color: transparent;
90
- border: 1px solid rgba(0, 0, 0, 0.5);
91
- border-radius: 0;
92
- box-shadow: none;
93
- color: #272727;
94
- display: block;
95
- font-size: 14px;
96
- left: auto;
97
- margin: 20px auto;
98
- opacity: 1;
99
- position: relative;
100
- right: auto;
101
- text-shadow: none;
102
- top: auto;
103
- width: 80%;
104
- }
105
-
106
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .entry-header .button:hover {
107
- background-color: #e74c3c;
108
- border: 1px solid #e74c3c;
109
- color: #fff;
110
- }
111
-
112
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container {
113
- background-color: transparent;
114
- left: auto;
115
- opacity: 1;
116
- position: relative;
117
- right: auto;
118
- top: 5px;
119
- display: block;
120
- margin: 0 auto;
121
- width: 110px;
122
- }
123
-
124
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container .star-rating::before,
125
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container .star-rating::before {
126
- color: #f2b01e;
127
- }
128
-
129
- .eael-product-carousel.eael-product-simple .woocommerce li.product .star-rating-container .star-rating span::before,
130
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container .star-rating span::before {
131
- color: #f2b01e;
132
- }
133
-
134
- .eael-product-carousel:not(.eael-product-no-style) .onsale {
135
- border-radius: 0;
136
- box-shadow: none;
137
- display: block;
138
- font-size: 14px;
139
- height: 100px;
140
- letter-spacing: 0;
141
- line-height: 160px;
142
- position: absolute;
143
- text-align: center;
144
- text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
145
- text-transform: uppercase;
146
- transform: rotate(-45deg);
147
- width: 200px;
148
- z-index: 1;
149
- }
150
-
151
- .eael-product-carousel:not(.eael-product-no-style) .woocommerce li.product .onsale {
152
- left: -95px;
153
- top: -45px;
154
- }
155
-
156
- .eael-product-carousel .woocommerce ul.products {
157
- margin: 0 0 30px;
158
- }
159
-
160
-
161
- /*--- Product Simple and Reveal Style ---*/
162
- .eael-product-carousel .woocommerce li.product {
163
- background-color: #fff;
164
- float: left;
165
- overflow: hidden;
166
- padding: 0;
167
- position: relative;
168
- text-align: center;
169
- }
170
-
171
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .entry-wrap {
172
- bottom: -63px;
173
- margin-top: -63px;
174
- position: relative;
175
- top: auto;
176
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
177
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s
178
- }
179
-
180
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .entry-wrap {
181
- bottom: 0;
182
- }
183
-
184
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .entry-wrap::before {
185
- background-color: #fff;
186
- display: block;
187
- }
188
-
189
- .eael-product-carousel.eael-product-reveal .woocommerce li.product .star-rating-container {
190
- background-color: rgba(255, 255, 255, 0.9);
191
- left: auto;
192
- opacity: 0;
193
- position: absolute;
194
- right: 10px;
195
- top: 10px;
196
- }
197
-
198
- .eael-product-carousel.eael-product-reveal .woocommerce li.product:hover .star-rating-container {
199
- opacity: 1;
200
- }
201
-
202
- /*--- Product Reveal Styles ---*/
203
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap {
204
- bottom: auto;
205
- font-size: 14px;
206
- left: 0;
207
- padding: 0;
208
- position: absolute;
209
- right: 0;
210
- top: calc(100% - 4em);
211
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
212
- }
213
-
214
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap {
215
- background-color: rgba(0, 0, 0, 0.5);
216
- bottom: auto;
217
- font-size: 14px;
218
- left: 0;
219
- padding: 0;
220
- position: absolute;
221
- right: 0;
222
- text-align: center;
223
- top: calc(100% - 4em);
224
- -webkit-transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
225
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
226
- }
227
-
228
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-wrap::before {
229
- background-color: rgba(0, 0, 0, 0.5);
230
- content: "";
231
- display: block;
232
- height: 50em;
233
- left: 0;
234
- position: absolute;
235
- right: 0;
236
- top: 0;
237
- transition: all 0.615s cubic-bezier(0.19, 1, 0.22, 1) 0s;
238
- z-index: 0;
239
- }
240
-
241
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap::before {
242
- background-color: rgba(0, 0, 0, 0.75);
243
- }
244
-
245
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header {
246
- position: relative;
247
- }
248
-
249
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header h3 {
250
- font-size: 14px;
251
- line-height: 1;
252
- margin: 0;
253
- overflow: hidden;
254
- padding: 1.5em;
255
- text-overflow: ellipsis;
256
- text-transform: uppercase;
257
- white-space: nowrap;
258
- }
259
-
260
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header h3 a {
261
- color: #fff;
262
- }
263
-
264
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .price>del,
265
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header .price>del {
266
- display: none;
267
- }
268
-
269
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .entry-header .price>.amount,
270
- .woocommerce li.product .entry-header .price>ins>.amount {
271
- color: #fff;
272
- font-size: 24px;
273
- }
274
-
275
- .eael-product-carousel.eael-product-overlay .woocommerce li.product .added_to_cart {
276
- display: none;
277
- }
278
-
279
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap {
280
- top: calc(100% - 10.385em);
281
- }
282
-
283
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .entry-wrap::before {
284
- background-color: rgba(0, 0, 0, 0.75);
285
- }
286
-
287
- .eael-product-carousel.eael-product-overlay .woocommerce li.product:hover .star-rating-container {
288
- opacity: 1;
289
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*--------------------------*/
2
  /* 09. Product Styles
3
+ /*--------------------------*/
4
+ .eael-product-grid,
5
+ .eael-post-grid {
6
+ // simple & reveal style
7
+ &.eael-product-simple,
8
+ &.eael-product-reveal {
9
+ .woocommerce {
10
+ ul.products {
11
+ li.product {
12
+ position: relative;
13
+ float: left;
14
+ overflow: hidden;
15
+ text-align: center;
16
+ padding: 0;
17
+ border-radius: 0;
18
+ background-color: #fff;
19
+ box-shadow: none;
20
+
21
+ a {
22
+ text-decoration: none;
23
+
24
+ &:hover {
25
+ outline: none;
26
+ box-shadow: none;
27
+ }
28
+ }
29
+
30
+ img {
31
+ width: 100%;
32
+ height: auto;
33
+ backface-visibility: hidden;
34
+ }
35
+
36
+ // product title
37
+ .woocommerce-loop-product__title {
38
+ font-size: 16px;
39
+ font-weight: 700;
40
+ line-height: 1;
41
+ color: #333;
42
+ margin: 25px 0 12px;
43
+ padding: 0;
44
+ }
45
+
46
+ // onsale
47
+ .onsale {
48
+ display: block;
49
+ line-height: 170px;
50
+ font-size: 13px;
51
+ text-align: center;
52
+ letter-spacing: 0;
53
+ text-shadow: 0 1px 1px rgba(0,0,0,.6);
54
+ text-transform: uppercase;
55
+ color: #fff;
56
+ background-color: #ff2a13;
57
+ border-radius: 0;
58
+ border: none;
59
+ box-shadow: none;
60
+ position: absolute;
61
+ height: 100px;
62
+ width: 200px;
63
+ z-index: 1;
64
+ left: -100px;
65
+ top: -50px;
66
+ right: auto;
67
+ margin: 0;
68
+ padding: 0;
69
+ transform: rotate(-45deg);
70
+ }
71
+
72
+ .price {
73
+ font-size: 14px;
74
+ margin-bottom: 0;
75
+
76
+ del {
77
+ opacity: 0.5;
78
+ display: inline-block;
79
+ }
80
+
81
+ ins {
82
+ font-weight: 400;
83
+ background-color: transparent;
84
+ color: #ff2a13;
85
+ }
86
+ }
87
+
88
+
89
+ // star rating
90
+ .star-rating {
91
+ display: block;
92
+ float: none;
93
+ font-size: 14px;
94
+ margin: 10px auto;
95
+ }
96
+
97
+ // add to cart button
98
+ .button.add_to_cart_button {
99
+ display: inline-block;
100
+ height: 40px;
101
+ font-size: 14px;
102
+ font-weight: 400;
103
+ line-height: 40px;
104
+ text-align: center;
105
+ text-transform: uppercase;
106
+ color: #fff;
107
+ background-color: #333;
108
+ padding: 0 30px;
109
+ margin: 15px 0;
110
+ border-radius: 0;
111
+
112
+ &:focus {
113
+ outline: none;
114
+ }
115
+ }
116
+
117
+ a.added_to_cart {
118
+ display: block;
119
+ margin: 0 0 15px 0;
120
+ padding: 0;
121
+ font-size: 14px;
122
+ line-height: 1;
123
+ text-transform: capitalize;
124
+ color: #333;
125
+ background-color: transparent;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ // simple style
133
+ &.eael-product-simple {
134
+ .woocommerce {
135
+ ul.products {
136
+ li.product {
137
+ border: 1px solid #eee;
138
+ }
139
+ }
140
+ }
141
+ }
142
+
143
+ // reveal style
144
+ &.eael-product-reveal {
145
+ .woocommerce {
146
+ ul.products {
147
+ li.product {
148
+ border: 1px solid transparent;
149
+
150
+ .button.add_to_cart_button,
151
+ a.added_to_cart {
152
+ visibility: hidden;
153
+ transition: none;
154
+ }
155
+
156
+ &:hover {
157
+ border: 1px solid #eee;
158
+
159
+ .button.add_to_cart_button,
160
+ a.added_to_cart {
161
+ visibility: visible;
162
+ }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
168
+
169
+ // overlay style
170
+ &.eael-product-overlay {
171
+ .woocommerce {
172
+ ul.products {
173
+ li.product {
174
+ position: relative;
175
+ float: left;
176
+ overflow: hidden;
177
+ text-align: center;
178
+ padding: 0 0 15px 0;
179
+ border-radius: 0;
180
+ background-color: #fff;
181
+ box-shadow: none;
182
+
183
+ a {
184
+ text-decoration: none;
185
+
186
+ &:hover {
187
+ outline: none;
188
+ box-shadow: none;
189
+ }
190
+ }
191
+
192
+ img {
193
+ width: 100%;
194
+ height: auto;
195
+ margin: 0;
196
+ backface-visibility: hidden;
197
+ }
198
+
199
+ .overlay {
200
+ position: relative;
201
+ overflow: hidden;
202
+ line-height: 0;
203
+
204
+ .button-wrap {
205
+ position: absolute;
206
+ top: 50%;
207
+ left: 0;
208
+ right: 0;
209
+ text-align: center;
210
+ transform: translateY(-50%);
211
+ }
212
+
213
+ .product-link,
214
+ .add_to_cart_button,
215
+ .added_to_cart {
216
+ display: inline-block;
217
+ font-size: 14px;
218
+ line-height: 38px;
219
+ text-align: center;
220
+ color: #fff;
221
+ background-color: #333;
222
+ width: 38px;
223
+ height: 38px;
224
+ border-style: none;
225
+ border-radius: 50%;
226
+ vertical-align: middle;
227
+ padding: 0;
228
+ margin: 0 5px;
229
+ transform: translateY(20px);
230
+ opacity: 0;
231
+ transition: transform 200ms, opacity 300ms;
232
+
233
+ &:focus {
234
+ outline: none;
235
+ }
236
+ }
237
+
238
+ .add_to_cart_button {
239
+ font-size: 0;
240
+ &:before {
241
+ display: none;
242
+ }
243
+
244
+ &:after {
245
+ content: '\f217';
246
+ font: normal normal normal 14px/1 FontAwesome;
247
+ font-size: 14px;
248
+ line-height: 38px;
249
+ text-rendering: auto;
250
+ -webkit-font-smoothing: antialiased;
251
+ vertical-align: middle;
252
+ margin: 0;
253
+ padding: 0;
254
+ }
255
+
256
+ &.loading {
257
+ &:before {
258
+ display: none;
259
+ }
260
+ &:after {
261
+ content: '\f110';
262
+ display: inline-block;
263
+ font: normal normal normal 14px/1 FontAwesome;
264
+ font-size: 14px;
265
+ line-height: 38px;
266
+ color: #fff;
267
+ height: auto;
268
+ width: auto;
269
+ position: relative;
270
+ top: 0;
271
+ left: 0;
272
+ margin: 0;
273
+ padding: 0;
274
+ }
275
+ }
276
+ }
277
+
278
+ .added_to_cart {
279
+ font-size: 0;
280
+
281
+ &:after {
282
+ content: '\f06e';
283
+ font: normal normal normal 14px/1 FontAwesome;
284
+ font-size: 14px;
285
+ line-height: 38px;
286
+ color: #fff;
287
+ text-rendering: auto;
288
+ -webkit-font-smoothing: antialiased;
289
+ vertical-align: middle;
290
+ margin: 0;
291
+ padding: 0;
292
+ }
293
+ }
294
+ }
295
+
296
+ // product title
297
+ .woocommerce-loop-product__title {
298
+ font-size: 16px;
299
+ font-weight: 700;
300
+ line-height: 1;
301
+ color: #333;
302
+ margin: 25px 0 12px;
303
+ padding: 0;
304
+ }
305
+
306
+ // onsale
307
+ .onsale {
308
+ display: block;
309
+ line-height: 170px;
310
+ font-size: 13px;
311
+ text-align: center;
312
+ letter-spacing: 0;
313
+ text-shadow: 0 1px 1px rgba(0,0,0,.6);
314
+ text-transform: uppercase;
315
+ color: #fff;
316
+ background-color: #ff2a13;
317
+ border-radius: 0;
318
+ border: none;
319
+ box-shadow: none;
320
+ position: absolute;
321
+ height: 100px;
322
+ width: 200px;
323
+ z-index: 1;
324
+ left: -100px;
325
+ top: -50px;
326
+ right: auto;
327
+ margin: 0;
328
+ padding: 0;
329
+ transform: rotate(-45deg);
330
+ }
331
+
332
+ .price {
333
+ font-size: 14px;
334
+ margin-bottom: 0;
335
+
336
+ del {
337
+ opacity: 0.5;
338
+ display: inline-block;
339
+ }
340
+
341
+ ins {
342
+ font-weight: 400;
343
+ background-color: transparent;
344
+ color: #ff2a13;
345
+ }
346
+ }
347
+
348
+
349
+ // star rating
350
+ .star-rating {
351
+ display: block;
352
+ float: none;
353
+ font-size: 14px;
354
+ margin: 10px auto;
355
+ }
356
+
357
+ &:hover {
358
+ .overlay {
359
+ a,
360
+ .add_to_cart_button {
361
+ opacity: 1;
362
+ transform: translateY(0);
363
+ }
364
+ }
365
+ }
366
+ }
367
+ }
368
+ }
369
+ }
370
+ }
assets/sass/essential-addons-elementor.scss CHANGED
@@ -76,4 +76,5 @@
76
  @import "advance-accordion";
77
  @import "tooltip";
78
  @import "progress-bar";
79
- @import "img-accordion";
 
76
  @import "advance-accordion";
77
  @import "tooltip";
78
  @import "progress-bar";
79
+ @import "img-accordion";
80
+ @import "particles";
assets/social-feeds/codebird.js CHANGED
File without changes
assets/social-feeds/doT.min.js CHANGED
File without changes
assets/social-feeds/jquery.socialfeed.js CHANGED
File without changes
assets/social-feeds/moment.js CHANGED
File without changes
elements/advance-accordion/advance-accordion.php CHANGED
File without changes
elements/advance-tabs/advance-tabs.php CHANGED
File without changes
elements/caldera-forms/caldera-forms.php CHANGED
File without changes
elements/call-to-action/call-to-action.php CHANGED
File without changes
elements/countdown/countdown.php CHANGED
File without changes
elements/creative-button/creative-button.php CHANGED
File without changes
elements/data-table/data-table.php CHANGED
File without changes
elements/dual-color-header/dual-color-header.php CHANGED
File without changes
elements/facebook-feed/facebook-feed.php CHANGED
File without changes
elements/fancy-text/fancy-text.php CHANGED
File without changes
elements/filterable-gallery/filterable-gallery.php CHANGED
@@ -1770,10 +1770,13 @@ class Widget_Eael_Filterable_Gallery extends Widget_Base {
1770
  ?>
1771
  <div class="eael-filter-gallery-control">
1772
  <ul>
1773
- <li class="control active" data-filter="*"><?php echo $all_text; ?></li>
1774
- <?php foreach( $settings['eael_fg_controls'] as $control ) :
 
 
 
1775
  $sorter_filter = $this->sorter_class( $control['eael_fg_control'] ); ?>
1776
- <li class="control" data-filter=".eael-cf-<?php echo esc_attr( $sorter_filter ); ?>"><?php echo esc_html__($control['eael_fg_control']); ?></li>
1777
  <?php endforeach; ?>
1778
  </ul>
1779
  </div>
@@ -2057,6 +2060,7 @@ class Widget_Eael_Filterable_Gallery extends Widget_Base {
2057
  itemSelector: '.eael-filterable-gallery-item-wrap',
2058
  layoutMode: $layout_mode,
2059
  percentPosition: true,
 
2060
  });
2061
 
2062
  // not necessary, just in case
1770
  ?>
1771
  <div class="eael-filter-gallery-control">
1772
  <ul>
1773
+ <?php if ($settings['eael_fg_all_label_text']) { ?>
1774
+ <li class="control active" data-filter="*"><?php echo $all_text; ?></li>
1775
+ <?php } ?>
1776
+
1777
+ <?php foreach( $settings['eael_fg_controls'] as $key => $control ) :
1778
  $sorter_filter = $this->sorter_class( $control['eael_fg_control'] ); ?>
1779
+ <li class="control <?php if ($key == 0 && empty($settings['eael_fg_all_label_text'])) {echo 'active';} ?>" data-filter=".eael-cf-<?php echo esc_attr( $sorter_filter ); ?>"><?php echo esc_html__($control['eael_fg_control']); ?></li>
1780
  <?php endforeach; ?>
1781
  </ul>
1782
  </div>
2060
  itemSelector: '.eael-filterable-gallery-item-wrap',
2061
  layoutMode: $layout_mode,
2062
  percentPosition: true,
2063
+ filter: $('.eael-filter-gallery-control .control.active', $scope).data('filter')
2064
  });
2065
 
2066
  // not necessary, just in case
elements/gravity-form/gravity-form.php CHANGED
File without changes
elements/image-accordion/image-accordion.php CHANGED
File without changes
elements/infobox/infobox.php CHANGED
File without changes
elements/ninja-form/ninja-form.php CHANGED
File without changes
elements/post-timeline/post-timeline.php CHANGED
File without changes
elements/pricing-table/pricing-table.php CHANGED
File without changes
elements/product-grid/product-grid.php CHANGED
@@ -1,52 +1,51 @@
1
  <?php
2
  namespace Elementor;
3
 
4
-
5
- if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
6
-
 
7
 
8
  class Widget_Eael_Product_Grid extends Widget_Base {
9
-
10
 
11
  public function get_name() {
12
  return 'eicon-woocommerce';
13
  }
14
 
15
  public function get_title() {
16
- return esc_html__( 'EA Product Grid', 'essential-addons-elementor' );
17
  }
18
 
19
  public function get_icon() {
20
  return 'eicon-woocommerce';
21
  }
22
 
23
- public function get_categories() {
24
- return [ 'essential-addons-elementor' ];
25
  }
26
 
27
-
28
  protected function _register_controls() {
29
 
30
  // Content Controls
31
- $this->start_controls_section(
32
- 'eael_section_product_grid_settings',
33
- [
34
- 'label' => esc_html__( 'Product Settings', 'essential-addons-elementor' )
35
- ]
36
- );
37
 
38
  $this->add_control(
39
  'eael_product_grid_product_filter',
40
  [
41
- 'label' => esc_html__( 'Filter By', 'essential-addons-elementor' ),
42
  'type' => Controls_Manager::SELECT,
43
  'default' => 'recent-products',
44
  'options' => [
45
- 'recent-products' => esc_html__( 'Recent Products', 'essential-addons-elementor' ),
46
- 'featured-products' => esc_html__( 'Featured Products', 'essential-addons-elementor' ),
47
- 'best-selling-products' => esc_html__( 'Best Selling Products', 'essential-addons-elementor' ),
48
- 'sale-products' => esc_html__( 'Sale Products', 'essential-addons-elementor' ),
49
- 'top-products' => esc_html__( 'Top Rated Products', 'essential-addons-elementor' ),
50
  ],
51
  ]
52
  );
@@ -54,37 +53,36 @@ class Widget_Eael_Product_Grid extends Widget_Base {
54
  $this->add_control(
55
  'eael_product_grid_column',
56
  [
57
- 'label' => esc_html__( 'Columns', 'essential-addons-elementor' ),
58
  'type' => Controls_Manager::SELECT,
59
  'default' => '4',
60
  'options' => [
61
- '1' => esc_html__( '1', 'essential-addons-elementor' ),
62
- '2' => esc_html__( '2', 'essential-addons-elementor' ),
63
- '3' => esc_html__( '3', 'essential-addons-elementor' ),
64
- '4' => esc_html__( '4', 'essential-addons-elementor' ),
65
- '5' => esc_html__( '5', 'essential-addons-elementor' ),
66
- '6' => esc_html__( '6', 'essential-addons-elementor' ),
67
  ],
68
  ]
69
  );
70
 
71
  $this->add_control(
72
- 'eael_product_grid_products_count',
73
- [
74
- 'label' => __( 'Products Count', 'essential-addons-elementor' ),
75
- 'type' => Controls_Manager::NUMBER,
76
- 'default' => 4,
77
- 'min' => 1,
78
- 'max' => 1000,
79
- 'step' => 1,
80
- ]
81
  );
82
 
83
-
84
  $this->add_control(
85
  'eael_product_grid_categories',
86
  [
87
- 'label' => esc_html__( 'Product Categories', 'essential-addons-elementor' ),
88
  'type' => Controls_Manager::SELECT2,
89
  'label_block' => true,
90
  'multiple' => true,
@@ -92,25 +90,25 @@ class Widget_Eael_Product_Grid extends Widget_Base {
92
  ]
93
  );
94
 
95
- // $this->add_control(
96
- // 'eael_product_grid_style_preset',
97
- // [
98
- // 'label' => esc_html__( 'Style Preset', 'essential-addons-elementor' ),
99
- // 'type' => Controls_Manager::SELECT,
100
- // 'default' => 'eael-product-simple',
101
- // 'options' => [
102
- // 'eael-product-simple' => esc_html__( 'Simple Style', 'essential-addons-elementor' ),
103
- // 'eael-product-reveal' => esc_html__( 'Reveal Style', 'essential-addons-elementor' ),
104
- // 'eael-product-overlay' => esc_html__( 'Overlay Style', 'essential-addons-elementor' ),
105
- // 'eacs-product-default' => esc_html__( 'None (Use Theme Style)', 'essential-addons-elementor' ),
106
- // ],
107
- // ]
108
- // );
109
 
110
  $this->add_control(
111
  'eael_product_grid_rating',
112
  [
113
- 'label' => esc_html__( 'Show Product Rating?', 'essential-addons-elementor' ),
114
  'type' => Controls_Manager::SWITCHER,
115
  'return_value' => 'yes',
116
  'default' => 'yes',
@@ -118,44 +116,19 @@ class Widget_Eael_Product_Grid extends Widget_Base {
118
  );
119
 
120
  $this->end_controls_section();
121
-
122
- $this->start_controls_section(
123
- 'eael_section_pro',
124
- [
125
- 'label' => __( 'Go Premium for More Features', 'essential-addons-elementor' )
126
- ]
127
- );
128
-
129
- $this->add_control(
130
- 'eael_control_get_pro',
131
- [
132
- 'label' => __( 'Unlock more possibilities', 'essential-addons-elementor' ),
133
- 'type' => Controls_Manager::CHOOSE,
134
- 'options' => [
135
- '1' => [
136
- 'title' => __( '', 'essential-addons-elementor' ),
137
- 'icon' => 'fa fa-unlock-alt',
138
- ],
139
- ],
140
- 'default' => '1',
141
- 'description' => '<span class="pro-feature"> Get the <a href="https://essential-addons.com/elementor/buy.php" target="_blank">Pro version</a> for more stunning elements and customization options.</span>'
142
- ]
143
- );
144
 
145
- $this->end_controls_section();
146
-
147
  $this->start_controls_section(
148
  'eael_product_grid_styles',
149
  [
150
- 'label' => esc_html__( 'Products Styles', 'essential-addons-elementor' ),
151
- 'tab' => Controls_Manager::TAB_STYLE
152
  ]
153
  );
154
 
155
  $this->add_control(
156
  'eael_product_grid_background_color',
157
  [
158
- 'label' => esc_html__( 'Content Background Color', 'essential-addons-elementor' ),
159
  'type' => Controls_Manager::COLOR,
160
  'default' => '#fff',
161
  'selectors' => [
@@ -168,37 +141,55 @@ class Widget_Eael_Product_Grid extends Widget_Base {
168
  Group_Control_Border::get_type(),
169
  [
170
  'name' => 'eael_peoduct_grid_border',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product',
 
 
 
172
  ]
173
  );
174
-
175
  $this->add_control(
176
  'eael_peoduct_grid_border_radius',
177
  [
178
- 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
179
  'type' => Controls_Manager::DIMENSIONS,
180
  'selectors' => [
181
  '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product' => 'border-radius: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;',
182
  ],
183
  ]
184
  );
185
-
186
-
187
- $this->end_controls_section();
188
 
 
189
 
190
  $this->start_controls_section(
191
  'eael_section_product_grid_typography',
192
  [
193
- 'label' => esc_html__( 'Color &amp; Typography', 'essential-addons-elementor' ),
194
- 'tab' => Controls_Manager::TAB_STYLE
195
  ]
196
  );
197
 
198
  $this->add_control(
199
  'eael_product_grid_product_title_heading',
200
  [
201
- 'label' => __( 'Product Title', 'essential-addons-elementor' ),
202
  'type' => Controls_Manager::HEADING,
203
  ]
204
  );
@@ -206,7 +197,7 @@ class Widget_Eael_Product_Grid extends Widget_Base {
206
  $this->add_control(
207
  'eael_product_grid_product_title_color',
208
  [
209
- 'label' => esc_html__( 'Product Title Color', 'essential-addons-elementor' ),
210
  'type' => Controls_Manager::COLOR,
211
  'default' => '#272727',
212
  'selectors' => [
@@ -214,11 +205,11 @@ class Widget_Eael_Product_Grid extends Widget_Base {
214
  ],
215
  ]
216
  );
217
-
218
  $this->add_group_control(
219
  Group_Control_Typography::get_type(),
220
  [
221
- 'name' => 'eael_product_grid_product_title_typography',
222
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .woocommerce-loop-product__title',
223
  ]
224
  );
@@ -226,16 +217,15 @@ class Widget_Eael_Product_Grid extends Widget_Base {
226
  $this->add_control(
227
  'eael_product_grid_product_price_heading',
228
  [
229
- 'label' => __( 'Product Price', 'essential-addons-elementor' ),
230
  'type' => Controls_Manager::HEADING,
231
  ]
232
  );
233
 
234
-
235
  $this->add_control(
236
  'eael_product_grid_product_price_color',
237
  [
238
- 'label' => esc_html__( 'Product Price Color', 'essential-addons-elementor' ),
239
  'type' => Controls_Manager::COLOR,
240
  'default' => '#272727',
241
  'selectors' => [
@@ -243,11 +233,11 @@ class Widget_Eael_Product_Grid extends Widget_Base {
243
  ],
244
  ]
245
  );
246
-
247
  $this->add_group_control(
248
  Group_Control_Typography::get_type(),
249
  [
250
- 'name' => 'eael_product_grid_product_price_typography',
251
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .price',
252
  ]
253
  );
@@ -255,7 +245,7 @@ class Widget_Eael_Product_Grid extends Widget_Base {
255
  $this->add_control(
256
  'eael_product_grid_product_rating_heading',
257
  [
258
- 'label' => __( 'Star Rating', 'essential-addons-elementor' ),
259
  'type' => Controls_Manager::HEADING,
260
  ]
261
  );
@@ -263,7 +253,7 @@ class Widget_Eael_Product_Grid extends Widget_Base {
263
  $this->add_control(
264
  'eael_product_grid_product_rating_color',
265
  [
266
- 'label' => esc_html__( 'Rating Color', 'essential-addons-elementor' ),
267
  'type' => Controls_Manager::COLOR,
268
  'default' => '#f2b01e',
269
  'selectors' => [
@@ -272,11 +262,11 @@ class Widget_Eael_Product_Grid extends Widget_Base {
272
  ],
273
  ]
274
  );
275
-
276
  $this->add_group_control(
277
  Group_Control_Typography::get_type(),
278
  [
279
- 'name' => 'eael_product_grid_product_rating_typography',
280
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .star-rating',
281
  ]
282
  );
@@ -284,7 +274,7 @@ class Widget_Eael_Product_Grid extends Widget_Base {
284
  $this->add_control(
285
  'eael_product_grid_sale_badge_heading',
286
  [
287
- 'label' => __( 'Sale Badge', 'essential-addons-elementor' ),
288
  'type' => Controls_Manager::HEADING,
289
  ]
290
  );
@@ -292,11 +282,11 @@ class Widget_Eael_Product_Grid extends Widget_Base {
292
  $this->add_control(
293
  'eael_product_grid_sale_badge_color',
294
  [
295
- 'label' => esc_html__( 'Sale Badge Color', 'essential-addons-elementor' ),
296
  'type' => Controls_Manager::COLOR,
297
  'default' => '#fff',
298
  'selectors' => [
299
- '{{WRAPPER}} .eael-product-grid:not(.eael-product-no-style) .onsale' => 'color: {{VALUE}};',
300
  ],
301
  ]
302
  );
@@ -304,193 +294,225 @@ class Widget_Eael_Product_Grid extends Widget_Base {
304
  $this->add_control(
305
  'eael_product_grid_sale_badge_background',
306
  [
307
- 'label' => esc_html__( 'Sale Badge Background', 'essential-addons-elementor' ),
308
  'type' => Controls_Manager::COLOR,
309
  'default' => '#ff2a13',
310
  'selectors' => [
311
- '{{WRAPPER}} .eael-product-grid:not(.eael-product-no-style) .onsale' => 'background-color: {{VALUE}};',
 
312
  ],
313
  ]
314
  );
315
-
316
  $this->add_group_control(
317
  Group_Control_Typography::get_type(),
318
  [
319
- 'name' => 'eael_product_grid_sale_badge_typography',
320
- 'selector' => '{{WRAPPER}} .eael-product-grid:not(.eael-product-no-style) .onsale',
321
  ]
322
  );
323
 
324
-
325
  $this->end_controls_section();
326
 
327
-
328
  $this->start_controls_section(
329
  'eael_section_product_grid_add_to_cart_styles',
330
  [
331
- 'label' => esc_html__( 'Add to Cart Button Styles', 'essential-addons-elementor' ),
332
- 'tab' => Controls_Manager::TAB_STYLE
333
  ]
334
  );
335
 
 
336
 
337
- $this->start_controls_tabs( 'eael_product_grid_add_to_cart_style_tabs' );
338
-
339
- $this->start_controls_tab( 'normal', [ 'label' => esc_html__( 'Normal', 'essential-addons-elementor' ) ] );
340
 
341
  $this->add_control(
342
  'eael_product_grid_add_to_cart_color',
343
  [
344
- 'label' => esc_html__( 'Button Color', 'essential-addons-elementor' ),
345
  'type' => Controls_Manager::COLOR,
346
- 'default' => '#333',
347
  'selectors' => [
348
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button' => 'color: {{VALUE}};',
 
 
349
  ],
350
  ]
351
  );
352
-
353
  $this->add_control(
354
  'eael_product_grid_add_to_cart_background',
355
  [
356
- 'label' => esc_html__( 'Button Background Color', 'essential-addons-elementor' ),
357
  'type' => Controls_Manager::COLOR,
358
- 'default' => '#fff',
359
  'selectors' => [
360
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button' => 'background-color: {{VALUE}};',
 
 
361
  ],
362
  ]
363
  );
364
-
365
  $this->add_group_control(
366
  Group_Control_Border::get_type(),
367
  [
368
  'name' => 'eael_product_grid_add_to_cart_border',
369
- 'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button',
370
  ]
371
  );
372
 
373
  $this->add_group_control(
374
  Group_Control_Typography::get_type(),
375
  [
376
- 'name' => 'eael_product_grid_add_to_cart_typography',
377
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button',
 
 
 
378
  ]
379
  );
380
 
381
  $this->end_controls_tab();
382
 
383
- $this->start_controls_tab( 'eael_product_grid_add_to_cart_hover_styles', [ 'label' => esc_html__( 'Hover', 'essential-addons-elementor' ) ] );
384
 
385
  $this->add_control(
386
  'eael_product_grid_add_to_cart_hover_color',
387
  [
388
- 'label' => esc_html__( 'Button Color', 'essential-addons-elementor' ),
389
  'type' => Controls_Manager::COLOR,
390
- 'default' => '#333',
391
  'selectors' => [
392
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'color: {{VALUE}};',
 
 
393
  ],
394
  ]
395
  );
396
-
397
  $this->add_control(
398
  'eael_product_grid_add_to_cart_hover_background',
399
  [
400
- 'label' => esc_html__( 'Button Background Color', 'essential-addons-elementor' ),
401
  'type' => Controls_Manager::COLOR,
402
- 'default' => '#f9f9f9',
403
  'selectors' => [
404
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'background-color: {{VALUE}};',
 
 
405
  ],
406
  ]
407
  );
408
-
409
  $this->add_control(
410
  'eael_product_grid_add_to_cart_hover_border_color',
411
  [
412
- 'label' => esc_html__( 'Border Color', 'essential-addons-elementor' ),
413
  'type' => Controls_Manager::COLOR,
414
  'default' => '',
415
  'selectors' => [
416
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'border-color: {{VALUE}};',
 
 
417
  ],
418
  ]
419
  );
420
 
421
-
422
  $this->end_controls_tab();
423
-
424
- $this->end_controls_tabs();
425
 
 
426
 
427
  $this->end_controls_section();
428
-
429
-
430
- }
431
 
 
432
 
433
- protected function render( ) {
434
-
435
-
436
  $settings = $this->get_settings();
437
-
438
- $product_count = $this->get_settings( 'eael_product_grid_products_count' );
439
- $columns = $this->get_settings( 'eael_product_grid_column' );
440
- $show_rating = ( ($settings['eael_product_grid_rating'] == 'yes') ? "show_rating" : "hide_rating" );
441
- $product_grid_classes = $show_rating;
442
-
443
- $get_product_categories = $settings['eael_product_grid_categories']; // get custom field value
444
- if($get_product_categories >= 1 ) {
445
- $category_ids = implode(', ', $get_product_categories);
446
  } else {
447
- $category_ids = '';
448
  }
449
 
450
- ?>
451
-
452
-
453
-
454
- <div id="eael-product-grid-<?php echo esc_attr($this->get_id()); ?>" class="eael-product-carousel eael-product-grid <?php echo $product_grid_classes; ?>">
455
-
456
- <?php if ( ($settings['eael_product_grid_product_filter']) == 'recent-products' ) : ?>
457
-
458
- <?php echo do_shortcode("[recent_products per_page=\"$product_count\" columns=\"$columns\" category=\"$category_ids\"]") ?>
459
-
460
- <?php elseif ( ($settings['eael_product_grid_product_filter']) == 'featured-products' ) : ?>
461
-
462
- <?php echo do_shortcode("[featured_products per_page=\"$product_count\" columns=\"$columns\" category=\"$category\"]") ?>
463
-
464
- <?php elseif ( ($settings['eael_product_grid_product_filter']) == 'best-selling-products' ) : ?>
465
-
466
- <?php echo do_shortcode("[best_selling_products per_page=\"$product_count\" columns=\"$columns\" category=\"$category\"]") ?>
467
-
468
- <?php elseif ( ($settings['eael_product_grid_product_filter']) == 'sale-products' ) : ?>
469
-
470
- <?php echo do_shortcode("[sale_products per_page=\"$product_count\" columns=\"$columns\" category=\"$category\"]") ?>
471
-
472
- <?php else: ?>
473
-
474
- <?php echo do_shortcode("[top_rated_products per_page=\"$product_count\" columns=\"$columns\" category=\"$category\"]") ?>
475
-
476
- <?php endif; ?>
477
 
478
- <div class="clearfix"></div>
479
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
480
 
481
-
482
- <?php
483
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  }
485
 
486
  protected function content_template() {
487
-
488
- ?>
489
-
490
-
491
- <?php
492
  }
493
  }
494
 
495
-
496
- Plugin::instance()->widgets_manager->register_widget_type( new Widget_Eael_Product_Grid() );
1
  <?php
2
  namespace Elementor;
3
 
4
+ if (!defined('ABSPATH')) {
5
+ exit;
6
+ }
7
+ // If this file is called directly, abort.
8
 
9
  class Widget_Eael_Product_Grid extends Widget_Base {
 
10
 
11
  public function get_name() {
12
  return 'eicon-woocommerce';
13
  }
14
 
15
  public function get_title() {
16
+ return esc_html__('EA Product Grid', 'essential-addons-elementor');
17
  }
18
 
19
  public function get_icon() {
20
  return 'eicon-woocommerce';
21
  }
22
 
23
+ public function get_categories() {
24
+ return ['essential-addons-elementor'];
25
  }
26
 
 
27
  protected function _register_controls() {
28
 
29
  // Content Controls
30
+ $this->start_controls_section(
31
+ 'eael_section_product_grid_settings',
32
+ [
33
+ 'label' => esc_html__('Product Settings', 'essential-addons-elementor'),
34
+ ]
35
+ );
36
 
37
  $this->add_control(
38
  'eael_product_grid_product_filter',
39
  [
40
+ 'label' => esc_html__('Filter By', 'essential-addons-elementor'),
41
  'type' => Controls_Manager::SELECT,
42
  'default' => 'recent-products',
43
  'options' => [
44
+ 'recent-products' => esc_html__('Recent Products', 'essential-addons-elementor'),
45
+ 'featured-products' => esc_html__('Featured Products', 'essential-addons-elementor'),
46
+ 'best-selling-products' => esc_html__('Best Selling Products', 'essential-addons-elementor'),
47
+ 'sale-products' => esc_html__('Sale Products', 'essential-addons-elementor'),
48
+ 'top-products' => esc_html__('Top Rated Products', 'essential-addons-elementor'),
49
  ],
50
  ]
51
  );
53
  $this->add_control(
54
  'eael_product_grid_column',
55
  [
56
+ 'label' => esc_html__('Columns', 'essential-addons-elementor'),
57
  'type' => Controls_Manager::SELECT,
58
  'default' => '4',
59
  'options' => [
60
+ '1' => esc_html__('1', 'essential-addons-elementor'),
61
+ '2' => esc_html__('2', 'essential-addons-elementor'),
62
+ '3' => esc_html__('3', 'essential-addons-elementor'),
63
+ '4' => esc_html__('4', 'essential-addons-elementor'),
64
+ '5' => esc_html__('5', 'essential-addons-elementor'),
65
+ '6' => esc_html__('6', 'essential-addons-elementor'),
66
  ],
67
  ]
68
  );
69
 
70
  $this->add_control(
71
+ 'eael_product_grid_products_count',
72
+ [
73
+ 'label' => __('Products Count', 'essential-addons-elementor'),
74
+ 'type' => Controls_Manager::NUMBER,
75
+ 'default' => 4,
76
+ 'min' => 1,
77
+ 'max' => 1000,
78
+ 'step' => 1,
79
+ ]
80
  );
81
 
 
82
  $this->add_control(
83
  'eael_product_grid_categories',
84
  [
85
+ 'label' => esc_html__('Product Categories', 'essential-addons-elementor'),
86
  'type' => Controls_Manager::SELECT2,
87
  'label_block' => true,
88
  'multiple' => true,
90
  ]
91
  );
92
 
93
+ $this->add_control(
94
+ 'eael_product_grid_style_preset',
95
+ [
96
+ 'label' => esc_html__( 'Style Preset', 'essential-addons-elementor' ),
97
+ 'type' => Controls_Manager::SELECT,
98
+ 'default' => 'eael-product-simple',
99
+ 'options' => [
100
+ 'eael-product-default' => esc_html__( 'Default', 'essential-addons-elementor' ),
101
+ 'eael-product-simple' => esc_html__( 'Simple Style', 'essential-addons-elementor' ),
102
+ 'eael-product-reveal' => esc_html__( 'Reveal Style', 'essential-addons-elementor' ),
103
+ 'eael-product-overlay' => esc_html__( 'Overlay Style', 'essential-addons-elementor' ),
104
+ ],
105
+ ]
106
+ );
107
 
108
  $this->add_control(
109
  'eael_product_grid_rating',
110
  [
111
+ 'label' => esc_html__('Show Product Rating?', 'essential-addons-elementor'),
112
  'type' => Controls_Manager::SWITCHER,
113
  'return_value' => 'yes',
114
  'default' => 'yes',
116
  );
117
 
118
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
 
 
 
120
  $this->start_controls_section(
121
  'eael_product_grid_styles',
122
  [
123
+ 'label' => esc_html__('Products Styles', 'essential-addons-elementor'),
124
+ 'tab' => Controls_Manager::TAB_STYLE,
125
  ]
126
  );
127
 
128
  $this->add_control(
129
  'eael_product_grid_background_color',
130
  [
131
+ 'label' => esc_html__('Content Background Color', 'essential-addons-elementor'),
132
  'type' => Controls_Manager::COLOR,
133
  'default' => '#fff',
134
  'selectors' => [
141
  Group_Control_Border::get_type(),
142
  [
143
  'name' => 'eael_peoduct_grid_border',
144
+ 'fields_options' => [
145
+ 'border' => [
146
+ 'default' => 'solid',
147
+ ],
148
+ 'width' => [
149
+ 'default' => [
150
+ 'top' => '1',
151
+ 'right' => '1',
152
+ 'bottom' => '1',
153
+ 'left' => '1',
154
+ 'isLinked' => false,
155
+ ],
156
+ ],
157
+ 'color' => [
158
+ 'default' => '#eee',
159
+ ],
160
+ ],
161
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product',
162
+ 'condition' => [
163
+ 'eael_product_grid_style_preset' => ['eael-product-default', 'eael-product-simple', 'eael-product-overlay']
164
+ ]
165
  ]
166
  );
167
+
168
  $this->add_control(
169
  'eael_peoduct_grid_border_radius',
170
  [
171
+ 'label' => esc_html__('Border Radius', 'essential-addons-elementor'),
172
  'type' => Controls_Manager::DIMENSIONS,
173
  'selectors' => [
174
  '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product' => 'border-radius: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;',
175
  ],
176
  ]
177
  );
 
 
 
178
 
179
+ $this->end_controls_section();
180
 
181
  $this->start_controls_section(
182
  'eael_section_product_grid_typography',
183
  [
184
+ 'label' => esc_html__('Color &amp; Typography', 'essential-addons-elementor'),
185
+ 'tab' => Controls_Manager::TAB_STYLE,
186
  ]
187
  );
188
 
189
  $this->add_control(
190
  'eael_product_grid_product_title_heading',
191
  [
192
+ 'label' => __('Product Title', 'essential-addons-elementor'),
193
  'type' => Controls_Manager::HEADING,
194
  ]
195
  );
197
  $this->add_control(
198
  'eael_product_grid_product_title_color',
199
  [
200
+ 'label' => esc_html__('Product Title Color', 'essential-addons-elementor'),
201
  'type' => Controls_Manager::COLOR,
202
  'default' => '#272727',
203
  'selectors' => [
205
  ],
206
  ]
207
  );
208
+
209
  $this->add_group_control(
210
  Group_Control_Typography::get_type(),
211
  [
212
+ 'name' => 'eael_product_grid_product_title_typography',
213
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .woocommerce-loop-product__title',
214
  ]
215
  );
217
  $this->add_control(
218
  'eael_product_grid_product_price_heading',
219
  [
220
+ 'label' => __('Product Price', 'essential-addons-elementor'),
221
  'type' => Controls_Manager::HEADING,
222
  ]
223
  );
224
 
 
225
  $this->add_control(
226
  'eael_product_grid_product_price_color',
227
  [
228
+ 'label' => esc_html__('Product Price Color', 'essential-addons-elementor'),
229
  'type' => Controls_Manager::COLOR,
230
  'default' => '#272727',
231
  'selectors' => [
233
  ],
234
  ]
235
  );
236
+
237
  $this->add_group_control(
238
  Group_Control_Typography::get_type(),
239
  [
240
+ 'name' => 'eael_product_grid_product_price_typography',
241
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .price',
242
  ]
243
  );
245
  $this->add_control(
246
  'eael_product_grid_product_rating_heading',
247
  [
248
+ 'label' => __('Star Rating', 'essential-addons-elementor'),
249
  'type' => Controls_Manager::HEADING,
250
  ]
251
  );
253
  $this->add_control(
254
  'eael_product_grid_product_rating_color',
255
  [
256
+ 'label' => esc_html__('Rating Color', 'essential-addons-elementor'),
257
  'type' => Controls_Manager::COLOR,
258
  'default' => '#f2b01e',
259
  'selectors' => [
262
  ],
263
  ]
264
  );
265
+
266
  $this->add_group_control(
267
  Group_Control_Typography::get_type(),
268
  [
269
+ 'name' => 'eael_product_grid_product_rating_typography',
270
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .star-rating',
271
  ]
272
  );
274
  $this->add_control(
275
  'eael_product_grid_sale_badge_heading',
276
  [
277
+ 'label' => __('Sale Badge', 'essential-addons-elementor'),
278
  'type' => Controls_Manager::HEADING,
279
  ]
280
  );
282
  $this->add_control(
283
  'eael_product_grid_sale_badge_color',
284
  [
285
+ 'label' => esc_html__('Sale Badge Color', 'essential-addons-elementor'),
286
  'type' => Controls_Manager::COLOR,
287
  'default' => '#fff',
288
  'selectors' => [
289
+ '{{WRAPPER}} .woocommerce ul.products li.product .onsale' => 'color: {{VALUE}};',
290
  ],
291
  ]
292
  );
294
  $this->add_control(
295
  'eael_product_grid_sale_badge_background',
296
  [
297
+ 'label' => esc_html__('Sale Badge Background', 'essential-addons-elementor'),
298
  'type' => Controls_Manager::COLOR,
299
  'default' => '#ff2a13',
300
  'selectors' => [
301
+ '{{WRAPPER}} .woocommerce ul.products li.product .onsale' => 'background-color: {{VALUE}};',
302
+ '{{WRAPPER}} .eael-product-grid .woocommerce ul.products li.product .price ins' => 'color: {{VALUE}};',
303
  ],
304
  ]
305
  );
306
+
307
  $this->add_group_control(
308
  Group_Control_Typography::get_type(),
309
  [
310
+ 'name' => 'eael_product_grid_sale_badge_typography',
311
+ 'selector' => '{{WRAPPER}} .woocommerce ul.products li.product .onsale',
312
  ]
313
  );
314
 
 
315
  $this->end_controls_section();
316
 
 
317
  $this->start_controls_section(
318
  'eael_section_product_grid_add_to_cart_styles',
319
  [
320
+ 'label' => esc_html__('Add to Cart Button Styles', 'essential-addons-elementor'),
321
+ 'tab' => Controls_Manager::TAB_STYLE,
322
  ]
323
  );
324
 
325
+ $this->start_controls_tabs('eael_product_grid_add_to_cart_style_tabs');
326
 
327
+ $this->start_controls_tab('normal', ['label' => esc_html__('Normal', 'essential-addons-elementor')]);
 
 
328
 
329
  $this->add_control(
330
  'eael_product_grid_add_to_cart_color',
331
  [
332
+ 'label' => esc_html__('Button Color', 'essential-addons-elementor'),
333
  'type' => Controls_Manager::COLOR,
334
+ 'default' => '#fff',
335
  'selectors' => [
336
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button' => 'color: {{VALUE}};',
337
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link' => 'color: {{VALUE}};',
338
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart' => 'color: {{VALUE}};',
339
  ],
340
  ]
341
  );
342
+
343
  $this->add_control(
344
  'eael_product_grid_add_to_cart_background',
345
  [
346
+ 'label' => esc_html__('Button Background Color', 'essential-addons-elementor'),
347
  'type' => Controls_Manager::COLOR,
348
+ 'default' => '#333',
349
  'selectors' => [
350
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button' => 'background-color: {{VALUE}};',
351
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link' => 'background-color: {{VALUE}};',
352
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart' => 'background-color: {{VALUE}};',
353
  ],
354
  ]
355
  );
356
+
357
  $this->add_group_control(
358
  Group_Control_Border::get_type(),
359
  [
360
  'name' => 'eael_product_grid_add_to_cart_border',
361
+ 'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button, {{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link, {{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart',
362
  ]
363
  );
364
 
365
  $this->add_group_control(
366
  Group_Control_Typography::get_type(),
367
  [
368
+ 'name' => 'eael_product_grid_add_to_cart_typography',
369
  'selector' => '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button',
370
+ 'condition' => [
371
+ 'eael_product_grid_style_preset' => ['eael-product-default', 'eael-product-simple']
372
+ ],
373
  ]
374
  );
375
 
376
  $this->end_controls_tab();
377
 
378
+ $this->start_controls_tab('eael_product_grid_add_to_cart_hover_styles', ['label' => esc_html__('Hover', 'essential-addons-elementor')]);
379
 
380
  $this->add_control(
381
  'eael_product_grid_add_to_cart_hover_color',
382
  [
383
+ 'label' => esc_html__('Button Color', 'essential-addons-elementor'),
384
  'type' => Controls_Manager::COLOR,
385
+ 'default' => '#fff',
386
  'selectors' => [
387
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'color: {{VALUE}};',
388
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link:hover' => 'color: {{VALUE}};',
389
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:hover' => 'color: {{VALUE}};',
390
  ],
391
  ]
392
  );
393
+
394
  $this->add_control(
395
  'eael_product_grid_add_to_cart_hover_background',
396
  [
397
+ 'label' => esc_html__('Button Background Color', 'essential-addons-elementor'),
398
  'type' => Controls_Manager::COLOR,
399
+ 'default' => '#333',
400
  'selectors' => [
401
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'background-color: {{VALUE}};',
402
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link:hover' => 'background-color: {{VALUE}};',
403
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:hover' => 'background-color: {{VALUE}};',
404
  ],
405
  ]
406
  );
407
+
408
  $this->add_control(
409
  'eael_product_grid_add_to_cart_hover_border_color',
410
  [
411
+ 'label' => esc_html__('Border Color', 'essential-addons-elementor'),
412
  'type' => Controls_Manager::COLOR,
413
  'default' => '',
414
  'selectors' => [
415
  '{{WRAPPER}} .eael-product-grid .woocommerce li.product .button.add_to_cart_button:hover' => 'border-color: {{VALUE}};',
416
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .product-link:hover' => 'border-color: {{VALUE}};',
417
+ '{{WRAPPER}} .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:hover' => 'border-color: {{VALUE}};',
418
  ],
419
  ]
420
  );
421
 
 
422
  $this->end_controls_tab();
 
 
423
 
424
+ $this->end_controls_tabs();
425
 
426
  $this->end_controls_section();
 
 
 
427
 
428
+ }
429
 
430
+ protected function render() {
 
 
431
  $settings = $this->get_settings();
432
+ $show_rating = $settings['eael_product_grid_rating'];
433
+
434
+ if ($settings['eael_product_grid_style_preset'] == 'eael-product-simple') {
435
+ $grid_layout = 'eael-product-simple';
436
+ } else if ($settings['eael_product_grid_style_preset'] == 'eael-product-reveal') {
437
+ $grid_layout = 'eael-product-reveal';
438
+ } else if ($settings['eael_product_grid_style_preset'] == 'eael-product-overlay') {
439
+ $grid_layout = 'eael-product-overlay';
 
440
  } else {
441
+ $grid_layout = 'eael-product-default';
442
  }
443
 
444
+ $args = [
445
+ 'post_type' => 'product',
446
+ 'posts_per_page' => $settings['eael_product_grid_products_count'] ?: 4,
447
+ 'order' => 'DESC',
448
+ ];
449
+
450
+ if (!empty($settings['eael_product_grid_categories'])) {
451
+ $args['tax_query'] = [
452
+ [
453
+ 'taxonomy' => 'product_cat',
454
+ 'field' => 'slug',
455
+ 'terms' => $settings['eael_product_grid_categories'],
456
+ 'operator' => 'IN',
457
+ ],
458
+ ];
459
+ }
 
 
 
 
 
 
 
 
 
 
 
460
 
461
+ if ($settings['eael_product_grid_product_filter'] == 'featured-products') {
462
+ $args['tax_query'] = [
463
+ 'taxonomy' => 'product_visibility',
464
+ 'field' => 'name',
465
+ 'terms' => 'featured',
466
+ ];
467
+ } else if ($settings['eael_product_grid_product_filter'] == 'best-selling-products') {
468
+ $args['meta_key'] = 'total_sales';
469
+ $args['orderby'] = 'meta_value_num';
470
+ $args['order'] = 'DESC';
471
+ } else if ($settings['eael_product_grid_product_filter'] == 'sale-products') {
472
+ $args['meta_query'] = [
473
+ 'relation' => 'OR',
474
+ [
475
+ 'key' => '_sale_price',
476
+ 'value' => 0,
477
+ 'compare' => '>',
478
+ 'type' => 'numeric',
479
+ ], [
480
+ 'key' => '_min_variation_sale_price',
481
+ 'value' => 0,
482
+ 'compare' => '>',
483
+ 'type' => 'numeric',
484
+ ],
485
+ ];
486
+ } else if ($settings['eael_product_grid_product_filter'] == 'top-products') {
487
+ $args['meta_key'] = '_wc_average_rating';
488
+ $args['orderby'] = 'meta_value_num';
489
+ $args['order'] = 'DESC';
490
+ }
491
 
492
+ global $woocommerce_loop;
493
+ $woocommerce_loop['loop'] = $woocommerce_loop['columns'] = $settings['eael_product_grid_column'];
494
+
495
+ echo '<div class="eael-product-grid ' . $grid_layout . '">
496
+ <div class="woocommerce">
497
+ <ul class="products columns-' . $settings['eael_product_grid_column'] . '">';
498
+ $query = new \WP_Query($args);
499
+ if ($query->have_posts()) {
500
+ while ($query->have_posts()): $query->the_post();
501
+ include ESSENTIAL_ADDONS_EL_PATH . 'includes/templates/product-loop.php';
502
+ endwhile;
503
+ } else {
504
+ echo __('No products found');
505
+ }
506
+ wp_reset_postdata();
507
+ unset($woocommerce_loop);
508
+ echo '</ul>
509
+ </div>
510
+ </div>';
511
  }
512
 
513
  protected function content_template() {
514
+
 
 
 
 
515
  }
516
  }
517
 
518
+ Plugin::instance()->widgets_manager->register_widget_type(new Widget_Eael_Product_Grid());
 
elements/team-members/team-members.php CHANGED
File without changes
elements/tooltip/tooltip.php CHANGED
File without changes
elements/twitter-feed/twitter-feed.php CHANGED
File without changes
elements/weforms/weforms.php CHANGED
File without changes
elements/wpforms/wpforms.php CHANGED
File without changes
essential_adons_elementor.php CHANGED
@@ -4,7 +4,7 @@
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
- * Version: 2.8.7
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
@@ -16,8 +16,8 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
16
  define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
17
  define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
18
  define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
19
- define( 'ESSENTIAL_ADDONS_VERSION', '2.8.4' );
20
- define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.8.3' );
21
  define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
22
 
23
 
@@ -28,6 +28,7 @@ require_once ESSENTIAL_ADDONS_EL_PATH.'includes/version-rollback.php';
28
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/maintennance.php';
29
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/eael-rollback.php';
30
  require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
 
31
 
32
  /**
33
  * This function will return true for all activated modules
@@ -36,8 +37,8 @@ require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
36
  */
37
  function eael_activated_modules() {
38
 
39
- $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonials', 'weforms', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'twitter-feed', 'facebook-feed', 'data-table', 'filter-gallery', 'image-accordion', 'content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar' ];
40
-
41
  $eael_default_settings = array_fill_keys( $eael_default_keys, true );
42
  $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
43
  $eael_new_settings = array_diff_key( $eael_default_settings, $eael_get_settings );
@@ -51,6 +52,20 @@ function eael_activated_modules() {
51
 
52
  }
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  /**
55
  * Acivate or Deactivate Modules
56
  *
@@ -227,7 +242,16 @@ function essential_addons_el_enqueue(){
227
  }
228
 
229
  if( $is_component_active['progress-bar'] ) {
230
- wp_enqueue_script('essential_addons_elementor-eael-bar',ESSENTIAL_ADDONS_EL_URL.'assets/js/progress-bar.js', array('jquery'),'1.0', true);
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
  }
@@ -346,175 +370,4 @@ function eael_init() {
346
  }
347
  }
348
  add_action( 'plugins_loaded', 'eael_init' );
349
-
350
- /**
351
- * Admin Notice
352
- *
353
- * @since v1.0.0
354
- */
355
- function eael_admin_notice() {
356
- if ( current_user_can( 'install_plugins' ) ) {
357
- global $current_user ;
358
- $user_id = $current_user->ID;
359
- /* Check that the user hasn't already clicked to ignore the message */
360
- if ( ! get_user_meta($user_id, 'eael_ignore_notice287') ) {
361
- echo '<div class="eael-admin-notice updated" style="display: flex; align-items: center; padding-left: 0; border-left-color: #EF4B53"><p style="width: 32px;">';
362
- echo '<img style="width: 100%; display: block;" src="' . plugins_url( '/', __FILE__ ).'admin/assets/images/icon-christmas-gift.svg'. '" ></p><p> ';
363
- printf(__('<strong>Make XMas Much Merrier.</strong> Use the coupon code <strong>Christmas2018</strong> to redeem a <strong>40&#37; </strong> discount on <strong>Essential Addons for Elementor Unlimited</strong>. <a href="https://wpdeveloper.net/in/ea-christmas-deal" target="_blank" style="text-decoration: none;"><span class="dashicons dashicons-smiley" style="margin-left: 10px;"></span> Apply Coupon</a>
364
- <a href="%1$s" style="text-decoration: none; margin-left: 10px;"><span class="dashicons dashicons-dismiss"></span> I\'m good with free version</a>'), admin_url( 'admin.php?page=eael-settings&eael_nag_ignore=0' ));
365
- echo "</p></div>";
366
- }
367
- }
368
- }
369
- add_action('admin_notices', 'eael_admin_notice');
370
-
371
-
372
- /**
373
- * Nag Ignore
374
- */
375
- function eael_nag_ignore() {
376
- global $current_user;
377
- $user_id = $current_user->ID;
378
- /* If user clicks to ignore the notice, add that to their user meta */
379
- if ( isset($_GET['eael_nag_ignore']) && '0' == $_GET['eael_nag_ignore'] ) {
380
- add_user_meta($user_id, 'eael_ignore_notice287', 'true', true);
381
- }
382
- }
383
- add_action('admin_init', 'eael_nag_ignore');
384
-
385
- /**
386
- * @review_dismiss()
387
- * @review_pending()
388
- * @eael_review_notice_message()
389
- * Make all the above functions working.
390
- */
391
- function eael_review_notice(){
392
-
393
- review_dismiss();
394
- review_pending();
395
-
396
- $activation_time = get_site_option( 'eael_active_time' );
397
- $review_dismissal = get_site_option( 'eael_review_dismiss' );
398
- $maybe_later = get_site_option( 'eael_maybe_later' );
399
-
400
- if ( 'yes' == $review_dismissal ) {
401
- return;
402
- }
403
-
404
- if ( ! $activation_time ) {
405
- add_site_option( 'eael_active_time', time() );
406
- }
407
-
408
- $daysinseconds = 259200; // 3 Days in seconds.
409
- if( 'yes' == $maybe_later ) {
410
- $daysinseconds = 604800 ; // 7 Days in seconds.
411
- }
412
-
413
- if ( time() - $activation_time > $daysinseconds ) {
414
- add_action( 'admin_notices' , 'eael_review_notice_message' );
415
- }
416
-
417
- }
418
- add_action( 'admin_init', 'eael_review_notice' );
419
-
420
- /**
421
- * For the notice preview.
422
- */
423
- function eael_review_notice_message(){
424
- $scheme = (parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY )) ? '&' : '?';
425
- $url = $_SERVER['REQUEST_URI'] . $scheme . 'eael_review_dismiss=yes';
426
- $dismiss_url = wp_nonce_url( $url, 'eael-review-nonce' );
427
-
428
- $_later_link = $_SERVER['REQUEST_URI'] . $scheme . 'eael_review_later=yes';
429
- $later_url = wp_nonce_url( $_later_link, 'eael-review-nonce' );
430
- ?>
431
-
432
- <div class="eael-review-notice">
433
- <div class="eael-review-thumbnail">
434
- <img src="<?php echo plugins_url( 'admin/assets/images/ea-logo.svg', __FILE__ ) ?>" alt="">
435
- </div>
436
- <div class="eael-review-text">
437
- <p><?php _e( 'We hope you\'re enjoying Essential Addons for Elementor! Could you please do us a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'essential-addons-elementor' ) ?></p>
438
- <ul class="eael-review-ul">
439
- <li>
440
- <a href="https://wpdeveloper.net/review-essential-addons-elementor" target="_blank">
441
- <span class="dashicons dashicons-external"></span>
442
- <?php _e( 'Ok, you deserve it!', 'essential-addons-elementor' ) ?>
443
- </a>
444
- </li>
445
- <li>
446
- <a href="<?php echo $dismiss_url ?>">
447
- <span class="dashicons dashicons-smiley"></span>
448
- <?php _e( 'I already did', 'essential-addons-elementor' ) ?>
449
- </a>
450
- </li>
451
- <li>
452
- <a href="<?php echo $later_url ?>">
453
- <span class="dashicons dashicons-calendar-alt"></span>
454
- <?php _e( 'Maybe Later', 'essential-addons-elementor' ) ?>
455
- </a>
456
- </li>
457
- <li>
458
- <a href="https://wpdeveloper.net/support/" target="_blank">
459
- <span class="dashicons dashicons-sos"></span>
460
- <?php _e( 'I need help!', 'essential-addons-elementor' ) ?>
461
- </a>
462
- </li>
463
- <li>
464
- <a href="<?php echo $dismiss_url ?>">
465
- <span class="dashicons dashicons-dismiss"></span>
466
- <?php _e( 'Never show again', 'essential-addons-elementor' ) ?>
467
- </a>
468
- </li>
469
- </ul>
470
- </div>
471
- </div>
472
-
473
- <?php
474
- }
475
-
476
- /**
477
- * For Dismiss!
478
- */
479
- function review_dismiss(){
480
-
481
- if ( ! is_admin() ||
482
- ! current_user_can( 'manage_options' ) ||
483
- ! isset( $_GET['_wpnonce'] ) ||
484
- ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'eael-review-nonce' ) ||
485
- ! isset( $_GET['eael_review_dismiss'] ) ) {
486
-
487
- return;
488
- }
489
-
490
- add_site_option( 'eael_review_dismiss', 'yes' );
491
-
492
- }
493
-
494
- /**
495
- * For Maybe Later Update.
496
- */
497
- function review_pending() {
498
-
499
- if ( ! is_admin() ||
500
- ! current_user_can( 'manage_options' ) ||
501
- ! isset( $_GET['_wpnonce'] ) ||
502
- ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'eael-review-nonce' ) ||
503
- ! isset( $_GET['eael_review_later'] ) ) {
504
-
505
- return;
506
- }
507
- // Reset Time to current time.
508
- update_site_option( 'eael_active_time', time() );
509
- update_site_option( 'eael_maybe_later', 'yes' );
510
-
511
- }
512
-
513
- /**
514
- * Remove Reviews Metadata on plugin Deactivation.
515
- */
516
- function eael_deactivate() {
517
- delete_option('eael_active_time');
518
- delete_option('eael_maybe_later');
519
- }
520
- register_deactivation_hook(__FILE__, 'eael_deactivate');
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
+ * Version: 2.9.0
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
16
  define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
17
  define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
18
  define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
19
+ define( 'ESSENTIAL_ADDONS_VERSION', '2.9.0' );
20
+ define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.9.0' );
21
  define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
22
 
23
 
28
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/maintennance.php';
29
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/eael-rollback.php';
30
  require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
31
+ require_once ESSENTIAL_ADDONS_EL_PATH .'includes/extensions.php';
32
 
33
  /**
34
  * This function will return true for all activated modules
37
  */
38
  function eael_activated_modules() {
39
 
40
+ $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed', 'data-table', 'filter-gallery', 'image-accordion','content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'section-particles' ];
41
+
42
  $eael_default_settings = array_fill_keys( $eael_default_keys, true );
43
  $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
44
  $eael_new_settings = array_diff_key( $eael_default_settings, $eael_get_settings );
52
 
53
  }
54
 
55
+ /**
56
+ * Load acivate or deactivate Modules
57
+ *
58
+ * @since v1.0.0
59
+ */
60
+ function add_eael_extensions() {
61
+ $is_component_active = eael_activated_modules();
62
+
63
+ if( $is_component_active['section-particles'] ) {
64
+ require_once ESSENTIAL_ADDONS_EL_PATH .'extensions/eael-particle-section/eael-particle-section.php';
65
+ }
66
+ }
67
+ add_eael_extensions();
68
+
69
  /**
70
  * Acivate or Deactivate Modules
71
  *
242
  }
243
 
244
  if( $is_component_active['progress-bar'] ) {
245
+ wp_enqueue_script('essential_addons_elementor-progress-bar',ESSENTIAL_ADDONS_EL_URL.'assets/js/loading-bar.min.js', array('jquery'),'1.0', true);
246
+ }
247
+ if( $is_component_active['section-particles'] ) {
248
+ wp_enqueue_script(
249
+ 'particles-js', ESSENTIAL_ADDONS_EL_URL.'assets/js/particles.js',
250
+ ['jquery'], '1.0', true
251
+ );
252
+
253
+ $preset_themes = require ESSENTIAL_ADDONS_EL_PATH.'extensions/eael-particle-section/particle-themes.php';
254
+ wp_localize_script( 'particles-js', 'ParticleThemesData', $preset_themes );
255
  }
256
 
257
  }
370
  }
371
  }
372
  add_action( 'plugins_loaded', 'eael_init' );
373
+ require_once dirname( __FILE__ ) . '/includes/class-wpdev-notices.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
extensions/eael-particle-section/eael-particle-section.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if( !defined( 'ABSPATH' ) ) exit;
4
+
5
+ use Elementor\Elementor_Base;
6
+ use Elementor\Controls_Manager;
7
+ use Elementor\Element_Base;
8
+ use Elementor\Widget_Base;
9
+
10
+ class EAEL_Particle_Section extends Module_Base {
11
+
12
+ public function __construct() {
13
+ parent::__construct();
14
+
15
+ add_action( 'elementor/frontend/section/before_render',array( $this,'before_render') );
16
+
17
+ add_action('elementor/element/section/section_layout/after_section_end',array($this,'register_controls'),10 );
18
+
19
+ add_action( 'elementor/frontend/section/after_render',array( $this,'after_render') );
20
+ }
21
+
22
+ public function get_name() {
23
+ return 'eael-particles';
24
+ }
25
+
26
+ public function register_controls( $element ) {
27
+
28
+ $element->start_controls_section(
29
+ 'eael_particles_section',
30
+ [
31
+ 'label' => 'EA Particles',
32
+ 'tab' => Controls_Manager::TAB_LAYOUT
33
+ ]
34
+ );
35
+
36
+ $element->add_control(
37
+ 'eael_particle_switch',
38
+ [
39
+ 'label' => __( 'Enable Particles', 'essential-addons-elementor' ),
40
+ 'type' => Controls_Manager::SWITCHER,
41
+ ]
42
+ );
43
+
44
+ $element->add_control(
45
+ 'eael_particle_area_zindex',
46
+ [
47
+ 'label' => __( 'Z-index', 'essential-addons-elementor' ),
48
+ 'type' => Controls_Manager::NUMBER,
49
+ 'default' => 0,
50
+ 'condition' => [
51
+ 'eael_particle_switch' => 'yes'
52
+ ]
53
+ ]
54
+ );
55
+
56
+ $element->add_control(
57
+ 'eael_particle_theme_from',
58
+ [
59
+ 'label' => __( 'Theme Source', 'essential-addons-elementor' ),
60
+ 'type' => Controls_Manager::CHOOSE,
61
+ 'options' => [
62
+ 'presets' => [
63
+ 'title' => __( 'Defaults', 'essential-addons-elementor' ),
64
+ 'icon' => 'fa fa-list',
65
+ ],
66
+ 'custom' => [
67
+ 'title' => __( 'Custom', 'essential-addons-elementor' ),
68
+ 'icon' => 'fa fa-edit',
69
+ ],
70
+ ],
71
+ 'condition' => [
72
+ 'eael_particle_switch' => 'yes'
73
+ ],
74
+ 'default' => 'presets'
75
+ ]
76
+ );
77
+
78
+ $element->add_control(
79
+ 'eael_particle_preset_themes',
80
+ [
81
+ 'label' => esc_html__( 'Preset Themes', 'essential-addons-elementor' ),
82
+ 'type' => Controls_Manager::SELECT,
83
+ 'label_block' => true,
84
+ 'options' => [
85
+ 11 => __( 'Default', 'essential-addons-elementor' ),
86
+ 'nasa' => __( 'Nasa', 'essential-addons-elementor' ),
87
+ 'bubble' => __( 'Bubble', 'essential-addons-elementor' ),
88
+ 'snow' => __( 'Snow', 'essential-addons-elementor' ),
89
+ 'nyan_cat' => __( 'Nyan Cat', 'essential-addons-elementor' )
90
+ ],
91
+ 'default' => 11,
92
+ 'condition' => [
93
+ 'eael_particle_theme_from' => 'presets',
94
+ 'eael_particle_switch' => 'yes'
95
+ ]
96
+ ]
97
+ );
98
+
99
+ $element->add_control(
100
+ 'eael_particles_custom_style',
101
+ [
102
+ 'label' => __( 'Custom Style', 'essential-addons-elementor' ),
103
+ 'type' => Controls_Manager::TEXTAREA,
104
+ 'description' => __( 'You can generate custom particles JSON code from <a href="http://vincentgarreau.com/particles.js/#default" target="_blank">Here!</a>. Simply just past the JSON code above. For more queries <a href="https://essential-addons.com/elementor/docs/" target="_blank">Click Here!</a>', 'essential-addons-elementor' ),
105
+ 'condition' => [
106
+ 'eael_particle_theme_from' => 'custom',
107
+ 'eael_particle_switch' => 'yes'
108
+ ]
109
+ ]
110
+ );
111
+
112
+ $element->add_control(
113
+ 'eael_particle_section_notice',
114
+ [
115
+ 'raw' => __( 'You need to configure a <strong style="color:green">Background Type</strong> to see this in full effect. You can do this by switching to the <strong style="color:green">Style</strong> Tab.', 'essential-addons-elementor' ),
116
+ 'type' => Controls_Manager::RAW_HTML,
117
+ 'condition' => [
118
+ 'eael_particle_theme_from' => 'custom',
119
+ 'eael_particle_switch' => 'yes'
120
+ ]
121
+ ]
122
+ );
123
+
124
+ $element->end_controls_section();
125
+
126
+ }
127
+
128
+ public function before_render( $element ) {
129
+
130
+ if( $element->get_settings('eael_particle_switch') == 'yes' ){
131
+
132
+ $element->add_render_attribute(
133
+ '_wrapper','id',
134
+ 'eael-section-particles-' . $element->get_id()
135
+ );
136
+
137
+ }
138
+
139
+ }
140
+
141
+ public function after_render( $element ) {
142
+
143
+ $data = $element->get_data();
144
+ $settings = $element->get_settings_for_display();
145
+ $type = $data['elType'];
146
+ $zindex = ! empty( $settings['eael_particle_area_zindex'] ) ? $settings['eael_particle_area_zindex'] : 0;
147
+
148
+ if( ('section' == $type) && ($element->get_settings('eael_particle_switch') == 'yes') ){
149
+
150
+ $preset_themes = include('particle-themes.php');
151
+ if( isset($settings['eael_particle_theme_from']) && $settings['eael_particle_theme_from'] == 'presets') {
152
+ $theme = $preset_themes[ $settings['eael_particle_preset_themes'] ];
153
+ }
154
+
155
+ if( isset($settings['eael_particle_theme_from']) && $settings['eael_particle_theme_from'] == 'custom') {
156
+ $theme = $settings['eael_particles_custom_style'];
157
+ }
158
+
159
+ ?>
160
+ <style>
161
+ .elementor-element-<?php echo $element->get_id(); ?>.eael-particles-section > canvas{
162
+ z-index: <?php echo $zindex; ?>;
163
+ position: absolute;
164
+ top:0;
165
+ }
166
+ .elementor-section .elementor-container {
167
+ z-index: 99;
168
+ }
169
+ </style>
170
+
171
+ <script>
172
+ (function($) {
173
+ "use strict";
174
+
175
+ $(document).ready(function() {
176
+ $('.elementor-element-<?php echo $element->get_id(); ?>').addClass('eael-particles-section');
177
+ <?php if( $theme !== '' ) : ?>
178
+ particlesJS("eael-section-particles-<?php echo $element->get_id(); ?>", <?php echo $theme; ?> );
179
+ <?php endif; ?>
180
+ });
181
+
182
+ }(jQuery));
183
+ </script>
184
+ <?php
185
+ }
186
+ }
187
+
188
+
189
+
190
+ }
191
+
192
+ EAEL_Particle_Section::instance();
extensions/eael-particle-section/particle-themes.php ADDED
@@ -0,0 +1,554 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+ '11' => '{
5
+ "particles": {
6
+ "number": {
7
+ "value": 160,
8
+ "density": {
9
+ "enable": true,
10
+ "value_area": 800
11
+ }
12
+ },
13
+ "color": {
14
+ "value": "#ffffff"
15
+ },
16
+ "shape": {
17
+ "type": "circle",
18
+ "stroke": {
19
+ "width": 0,
20
+ "color": "#000000"
21
+ },
22
+ "polygon": {
23
+ "nb_sides": 5
24
+ },
25
+ "image": {
26
+ "src": "img/github.svg",
27
+ "width": 100,
28
+ "height": 100
29
+ }
30
+ },
31
+ "opacity": {
32
+ "value": 0.5,
33
+ "random": false,
34
+ "anim": {
35
+ "enable": false,
36
+ "speed": 1,
37
+ "opacity_min": 0.1,
38
+ "sync": false
39
+ }
40
+ },
41
+ "size": {
42
+ "value": 3,
43
+ "random": true,
44
+ "anim": {
45
+ "enable": false,
46
+ "speed": 40,
47
+ "size_min": 0.1,
48
+ "sync": false
49
+ }
50
+ },
51
+ "line_linked": {
52
+ "enable": true,
53
+ "distance": 150,
54
+ "color": "#ffffff",
55
+ "opacity": 0.4,
56
+ "width": 1
57
+ },
58
+ "move": {
59
+ "enable": true,
60
+ "speed": 6,
61
+ "direction": "none",
62
+ "random": false,
63
+ "straight": false,
64
+ "out_mode": "out",
65
+ "bounce": false,
66
+ "attract": {
67
+ "enable": false,
68
+ "rotateX": 600,
69
+ "rotateY": 1200
70
+ }
71
+ }
72
+ },
73
+ "interactivity": {
74
+ "detect_on": "canvas",
75
+ "events": {
76
+ "onhover": {
77
+ "enable": true,
78
+ "mode": "repulse"
79
+ },
80
+ "onclick": {
81
+ "enable": true,
82
+ "mode": "push"
83
+ },
84
+ "resize": true
85
+ },
86
+ "modes": {
87
+ "grab": {
88
+ "distance": 400,
89
+ "line_linked": {
90
+ "opacity": 1
91
+ }
92
+ },
93
+ "bubble": {
94
+ "distance": 400,
95
+ "size": 40,
96
+ "duration": 2,
97
+ "opacity": 8,
98
+ "speed": 3
99
+ },
100
+ "repulse": {
101
+ "distance": 200,
102
+ "duration": 0.4
103
+ },
104
+ "push": {
105
+ "particles_nb": 4
106
+ },
107
+ "remove": {
108
+ "particles_nb": 2
109
+ }
110
+ }
111
+ },
112
+ "retina_detect": true
113
+ }',
114
+ 'nasa' => '{
115
+ "particles": {
116
+ "number": {
117
+ "value": 250,
118
+ "density": {
119
+ "enable": true,
120
+ "value_area": 800
121
+ }
122
+ },
123
+ "color": {
124
+ "value": "#ffffff"
125
+ },
126
+ "shape": {
127
+ "type": "circle",
128
+ "stroke": {
129
+ "width": 0,
130
+ "color": "#000000"
131
+ },
132
+ "polygon": {
133
+ "nb_sides": 5
134
+ },
135
+ "image": {
136
+ "src": "img/github.svg",
137
+ "width": 100,
138
+ "height": 100
139
+ }
140
+ },
141
+ "opacity": {
142
+ "value": 1,
143
+ "random": true,
144
+ "anim": {
145
+ "enable": true,
146
+ "speed": 1,
147
+ "opacity_min": 0,
148
+ "sync": false
149
+ }
150
+ },
151
+ "size": {
152
+ "value": 3,
153
+ "random": true,
154
+ "anim": {
155
+ "enable": false,
156
+ "speed": 4,
157
+ "size_min": 0.3,
158
+ "sync": false
159
+ }
160
+ },
161
+ "line_linked": {
162
+ "enable": false,
163
+ "distance": 150,
164
+ "color": "#ffffff",
165
+ "opacity": 0.4,
166
+ "width": 1
167
+ },
168
+ "move": {
169
+ "enable": true,
170
+ "speed": 1,
171
+ "direction": "none",
172
+ "random": true,
173
+ "straight": false,
174
+ "out_mode": "out",
175
+ "bounce": false,
176
+ "attract": {
177
+ "enable": false,
178
+ "rotateX": 600,
179
+ "rotateY": 600
180
+ }
181
+ }
182
+ },
183
+ "interactivity": {
184
+ "detect_on": "canvas",
185
+ "events": {
186
+ "onhover": {
187
+ "enable": true,
188
+ "mode": "bubble"
189
+ },
190
+ "onclick": {
191
+ "enable": true,
192
+ "mode": "repulse"
193
+ },
194
+ "resize": true
195
+ },
196
+ "modes": {
197
+ "grab": {
198
+ "distance": 400,
199
+ "line_linked": {
200
+ "opacity": 1
201
+ }
202
+ },
203
+ "bubble": {
204
+ "distance": 250,
205
+ "size": 0,
206
+ "duration": 2,
207
+ "opacity": 0,
208
+ "speed": 3
209
+ },
210
+ "repulse": {
211
+ "distance": 400,
212
+ "duration": 0.4
213
+ },
214
+ "push": {
215
+ "particles_nb": 4
216
+ },
217
+ "remove": {
218
+ "particles_nb": 2
219
+ }
220
+ }
221
+ },
222
+ "retina_detect": true
223
+ }',
224
+ 'bubble' => '{
225
+ "particles": {
226
+ "number": {
227
+ "value": 15,
228
+ "density": {
229
+ "enable": true,
230
+ "value_area": 800
231
+ }
232
+ },
233
+ "color": {
234
+ "value": "#1b1e34"
235
+ },
236
+ "shape": {
237
+ "type": "polygon",
238
+ "stroke": {
239
+ "width": 0,
240
+ "color": "#000"
241
+ },
242
+ "polygon": {
243
+ "nb_sides": 6
244
+ },
245
+ "image": {
246
+ "src": "img/github.svg",
247
+ "width": 100,
248
+ "height": 100
249
+ }
250
+ },
251
+ "opacity": {
252
+ "value": 0.3,
253
+ "random": true,
254
+ "anim": {
255
+ "enable": false,
256
+ "speed": 1,
257
+ "opacity_min": 0.1,
258
+ "sync": false
259
+ }
260
+ },
261
+ "size": {
262
+ "value": 50,
263
+ "random": false,
264
+ "anim": {
265
+ "enable": true,
266
+ "speed": 10,
267
+ "size_min": 40,
268
+ "sync": false
269
+ }
270
+ },
271
+ "line_linked": {
272
+ "enable": false,
273
+ "distance": 200,
274
+ "color": "#ffffff",
275
+ "opacity": 1,
276
+ "width": 2
277
+ },
278
+ "move": {
279
+ "enable": true,
280
+ "speed": 8,
281
+ "direction": "none",
282
+ "random": false,
283
+ "straight": false,
284
+ "out_mode": "out",
285
+ "bounce": false,
286
+ "attract": {
287
+ "enable": false,
288
+ "rotateX": 600,
289
+ "rotateY": 1200
290
+ }
291
+ }
292
+ },
293
+ "interactivity": {
294
+ "detect_on": "canvas",
295
+ "events": {
296
+ "onhover": {
297
+ "enable": false,
298
+ "mode": "grab"
299
+ },
300
+ "onclick": {
301
+ "enable": false,
302
+ "mode": "push"
303
+ },
304
+ "resize": true
305
+ },
306
+ "modes": {
307
+ "grab": {
308
+ "distance": 400,
309
+ "line_linked": {
310
+ "opacity": 1
311
+ }
312
+ },
313
+ "bubble": {
314
+ "distance": 400,
315
+ "size": 40,
316
+ "duration": 2,
317
+ "opacity": 8,
318
+ "speed": 3
319
+ },
320
+ "repulse": {
321
+ "distance": 200,
322
+ "duration": 0.4
323
+ },
324
+ "push": {
325
+ "particles_nb": 4
326
+ },
327
+ "remove": {
328
+ "particles_nb": 2
329
+ }
330
+ }
331
+ },
332
+ "retina_detect": true
333
+ }',
334
+ 'snow' => '{
335
+ "particles": {
336
+ "number": {
337
+ "value": 450,
338
+ "density": {
339
+ "enable": true,
340
+ "value_area": 800
341
+ }
342
+ },
343
+ "color": {
344
+ "value": "#fff"
345
+ },
346
+ "shape": {
347
+ "type": "circle",
348
+ "stroke": {
349
+ "width": 0,
350
+ "color": "#000000"
351
+ },
352
+ "polygon": {
353
+ "nb_sides": 5
354
+ },
355
+ "image": {
356
+ "src": "img/github.svg",
357
+ "width": 100,
358
+ "height": 100
359
+ }
360
+ },
361
+ "opacity": {
362
+ "value": 0.5,
363
+ "random": true,
364
+ "anim": {
365
+ "enable": false,
366
+ "speed": 1,
367
+ "opacity_min": 0.1,
368
+ "sync": false
369
+ }
370
+ },
371
+ "size": {
372
+ "value": 5,
373
+ "random": true,
374
+ "anim": {
375
+ "enable": false,
376
+ "speed": 40,
377
+ "size_min": 0.1,
378
+ "sync": false
379
+ }
380
+ },
381
+ "line_linked": {
382
+ "enable": false,
383
+ "distance": 500,
384
+ "color": "#ffffff",
385
+ "opacity": 0.4,
386
+ "width": 2
387
+ },
388
+ "move": {
389
+ "enable": true,
390
+ "speed": 6,
391
+ "direction": "bottom",
392
+ "random": false,
393
+ "straight": false,
394
+ "out_mode": "out",
395
+ "bounce": false,
396
+ "attract": {
397
+ "enable": false,
398
+ "rotateX": 600,
399
+ "rotateY": 1200
400
+ }
401
+ }
402
+ },
403
+ "interactivity": {
404
+ "detect_on": "canvas",
405
+ "events": {
406
+ "onhover": {
407
+ "enable": true,
408
+ "mode": "bubble"
409
+ },
410
+ "onclick": {
411
+ "enable": true,
412
+ "mode": "repulse"
413
+ },
414
+ "resize": true
415
+ },
416
+ "modes": {
417
+ "grab": {
418
+ "distance": 400,
419
+ "line_linked": {
420
+ "opacity": 0.5
421
+ }
422
+ },
423
+ "bubble": {
424
+ "distance": 400,
425
+ "size": 4,
426
+ "duration": 0.3,
427
+ "opacity": 1,
428
+ "speed": 3
429
+ },
430
+ "repulse": {
431
+ "distance": 200,
432
+ "duration": 0.4
433
+ },
434
+ "push": {
435
+ "particles_nb": 4
436
+ },
437
+ "remove": {
438
+ "particles_nb": 2
439
+ }
440
+ }
441
+ },
442
+ "retina_detect": true
443
+ }',
444
+ 'nyan_cat' => '{
445
+ "particles": {
446
+ "number": {
447
+ "value": 150,
448
+ "density": {
449
+ "enable": false,
450
+ "value_area": 800
451
+ }
452
+ },
453
+ "color": {
454
+ "value": "#ffffff"
455
+ },
456
+ "shape": {
457
+ "type": "star",
458
+ "stroke": {
459
+ "width": 0,
460
+ "color": "#000000"
461
+ },
462
+ "polygon": {
463
+ "nb_sides": 5
464
+ },
465
+ "image": {
466
+ "src": "http://wiki.lexisnexis.com/academic/images/f/fb/Itunes_podcast_icon_300.jpg",
467
+ "width": 100,
468
+ "height": 100
469
+ }
470
+ },
471
+ "opacity": {
472
+ "value": 0.5,
473
+ "random": false,
474
+ "anim": {
475
+ "enable": false,
476
+ "speed": 1,
477
+ "opacity_min": 0.1,
478
+ "sync": false
479
+ }
480
+ },
481
+ "size": {
482
+ "value": 4,
483
+ "random": true,
484
+ "anim": {
485
+ "enable": false,
486
+ "speed": 40,
487
+ "size_min": 0.1,
488
+ "sync": false
489
+ }
490
+ },
491
+ "line_linked": {
492
+ "enable": false,
493
+ "distance": 150,
494
+ "color": "#ffffff",
495
+ "opacity": 0.4,
496
+ "width": 1
497
+ },
498
+ "move": {
499
+ "enable": true,
500
+ "speed": 14,
501
+ "direction": "left",
502
+ "random": false,
503
+ "straight": true,
504
+ "out_mode": "out",
505
+ "bounce": false,
506
+ "attract": {
507
+ "enable": false,
508
+ "rotateX": 600,
509
+ "rotateY": 1200
510
+ }
511
+ }
512
+ },
513
+ "interactivity": {
514
+ "detect_on": "canvas",
515
+ "events": {
516
+ "onhover": {
517
+ "enable": false,
518
+ "mode": "grab"
519
+ },
520
+ "onclick": {
521
+ "enable": true,
522
+ "mode": "repulse"
523
+ },
524
+ "resize": true
525
+ },
526
+ "modes": {
527
+ "grab": {
528
+ "distance": 200,
529
+ "line_linked": {
530
+ "opacity": 1
531
+ }
532
+ },
533
+ "bubble": {
534
+ "distance": 400,
535
+ "size": 40,
536
+ "duration": 2,
537
+ "opacity": 8,
538
+ "speed": 3
539
+ },
540
+ "repulse": {
541
+ "distance": 200,
542
+ "duration": 0.4
543
+ },
544
+ "push": {
545
+ "particles_nb": 4
546
+ },
547
+ "remove": {
548
+ "particles_nb": 2
549
+ }
550
+ }
551
+ },
552
+ "retina_detect": true
553
+ }'
554
+ ];
includes/class-plugin-usage-tracker.php CHANGED
@@ -85,7 +85,7 @@ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
85
  // add_action( 'admin_init', array( $this, 'do_tracking' ) );
86
 
87
  // Display the admin notice on activation
88
- add_action( 'admin_notices', array( $this, 'optin_notice' ) );
89
  add_action( 'admin_notices', array( $this, 'marketing_notice' ) );
90
 
91
  // Deactivation
@@ -622,9 +622,10 @@ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
622
  $notice_text = __( 'Want to help make <strong>Essential Addons for Elementor</strong> even more awesome? You can get a <strong>25% discount coupon</strong> for Pro upgrade if you allow. <a class="insights-data-we-collect" href="#">What we collect.</a>', 'plugin-usage-tracker' );
623
  }
624
  // And we allow you to filter the text anyway
 
625
  $notice_text = apply_filters( 'wisdom_notice_text_' . esc_attr( $this->plugin_name ), $notice_text ); ?>
626
-
627
- <div class="notice notice-info updated put-dismiss-notice">
628
  <p><?php echo __( $notice_text ); ?></p>
629
  <div class="eael-insights-data" style="display: none;">
630
  <p><?php echo __( 'We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins & themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise.' ); ?></p>
@@ -638,8 +639,9 @@ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
638
  jQuery('.eael-insights-data').slideToggle('fast');
639
  });
640
  </script>";?>
641
- </div>
642
  <?php
 
643
  }
644
 
645
  }
85
  // add_action( 'admin_init', array( $this, 'do_tracking' ) );
86
 
87
  // Display the admin notice on activation
88
+ // add_action( 'wpdeveloper_optin_notice', array( $this, 'optin_notice' ) );
89
  add_action( 'admin_notices', array( $this, 'marketing_notice' ) );
90
 
91
  // Deactivation
622
  $notice_text = __( 'Want to help make <strong>Essential Addons for Elementor</strong> even more awesome? You can get a <strong>25% discount coupon</strong> for Pro upgrade if you allow. <a class="insights-data-we-collect" href="#">What we collect.</a>', 'plugin-usage-tracker' );
623
  }
624
  // And we allow you to filter the text anyway
625
+ // ob_start();
626
  $notice_text = apply_filters( 'wisdom_notice_text_' . esc_attr( $this->plugin_name ), $notice_text ); ?>
627
+
628
+ <!-- <div class="notice notice-info updated put-dismiss-notice"> -->
629
  <p><?php echo __( $notice_text ); ?></p>
630
  <div class="eael-insights-data" style="display: none;">
631
  <p><?php echo __( 'We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins & themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise.' ); ?></p>
639
  jQuery('.eael-insights-data').slideToggle('fast');
640
  });
641
  </script>";?>
642
+ <!-- </div> -->
643
  <?php
644
+ // echo ob_get_clean();
645
  }
646
 
647
  }
includes/class-wpdev-core-install.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! class_exists( 'WPDeveloper_Core_Installer' ) ) :
3
+ /**
4
+ * WPDeveloper Core Install
5
+ */
6
+ class WPDeveloper_Core_Installer {
7
+ /**
8
+ * Instantiate the class
9
+ *
10
+ * @param string $affiliate
11
+ */
12
+ function __construct() {
13
+ add_action( 'init', array( $this, 'init_hooks' ) );
14
+ }
15
+ /**
16
+ * Initialize the hooks
17
+ *
18
+ * @return void
19
+ */
20
+ public function init_hooks() {
21
+ if ( ! current_user_can( 'manage_options' ) ) {
22
+ return;
23
+ }
24
+ add_action( 'wp_ajax_wpdeveloper_upsale_core_install', array( $this, 'core_install' ) );
25
+ }
26
+ /**
27
+ * Show the plugin installation notice
28
+ *
29
+ * @return void
30
+ */
31
+
32
+
33
+
34
+ /**
35
+ * Fail if plugin installtion/activation fails
36
+ *
37
+ * @param Object $thing
38
+ *
39
+ * @return void
40
+ */
41
+ public function fail_on_error( $thing ) {
42
+ if ( is_wp_error( $thing ) ) {
43
+ wp_send_json_error( $thing->get_error_message() );
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Install WPSP
49
+ *
50
+ * @return void
51
+ */
52
+ public function core_install() {
53
+ check_ajax_referer( 'wpdeveloper_upsale_core_install' );
54
+
55
+ if ( ! current_user_can( 'manage_options' ) ) {
56
+ wp_send_json_error( __( 'You don\'t have permission to install the plugins' ) );
57
+ }
58
+
59
+ $plugin_slug = ( isset( $_POST['slug'] ) ) ? $_POST['slug'] : '';
60
+ $plugin_file = ( isset( $_POST['file'] ) ) ? $_POST['file'] : '';
61
+
62
+ if( empty( $plugin_file ) || empty( $plugin_slug ) ) {
63
+ wp_send_json_error( __( 'You don\'t have set any slug and file name to install the plugins' ) );
64
+ }
65
+
66
+ $plugin_status = $this->install_plugin( $plugin_slug, $plugin_file );
67
+ $this->fail_on_error( $plugin_status );
68
+
69
+ wp_send_json_success();
70
+ }
71
+
72
+ /**
73
+ * Install and activate a plugin
74
+ *
75
+ * @param string $slug
76
+ * @param string $file
77
+ *
78
+ * @return WP_Error|null
79
+ */
80
+ public function install_plugin( $slug, $file ) {
81
+ include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
82
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
83
+
84
+ $plugin_basename = $slug . '/' . $file;
85
+
86
+ // if exists and not activated
87
+ if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_basename ) ) {
88
+ return activate_plugin( $plugin_basename );
89
+ }
90
+
91
+ // seems like the plugin doesn't exists. Download and activate it
92
+ $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() );
93
+
94
+ $api = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false ) ) );
95
+ $result = $upgrader->install( $api->download_link );
96
+
97
+ if ( is_wp_error( $result ) ) {
98
+ return $result;
99
+ }
100
+
101
+ return activate_plugin( $plugin_basename );
102
+ }
103
+ }
104
+ /**
105
+ * Initiate The Core Installer
106
+ */
107
+ new WPDeveloper_Core_Installer();
108
+ endif;
109
+
includes/class-wpdev-notices.php ADDED
@@ -0,0 +1,782 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class WPDeveloper_Notice {
3
+ /**
4
+ * Admin Notice Key
5
+ *
6
+ * @var array
7
+ */
8
+ const ADMIN_UPDATE_NOTICE_KEY = 'wpdeveloper_notices_seen';
9
+ public $redirect_url = '/wp-admin';
10
+ /**
11
+ * All Data
12
+ *
13
+ * @var array
14
+ */
15
+ private $data = array();
16
+ private $properties = array(
17
+ 'links', 'message', 'thumbnail',
18
+ );
19
+ private $methods = array(
20
+ 'message', 'thumbnail', 'classes'
21
+ );
22
+ /**
23
+ * cne_day == current_notice_end_day
24
+ *
25
+ * @var integer
26
+ */
27
+ public $cne_time = '2 day';
28
+ public $maybe_later_time = '7 day';
29
+ /**
30
+ * Is the notice is dismissible?
31
+ *
32
+ * @var boolean
33
+ */
34
+ private $is_dismissible = true;
35
+ /**
36
+ * Plugin Name
37
+ *
38
+ * @var string
39
+ */
40
+ private $plugin_name;
41
+ /**
42
+ * First Install Version Of The Plugin
43
+ *
44
+ * @var string
45
+ */
46
+ private $version;
47
+ /**
48
+ * URL Data Args
49
+ * @var array
50
+ */
51
+ private $data_args;
52
+ /**
53
+ * Saved Data in DB
54
+ * @var array
55
+ */
56
+ private $options_data;
57
+ /**
58
+ * Current Timestamp
59
+ * @var integer
60
+ */
61
+ public $timestamp;
62
+ /**
63
+ * Default Options Set
64
+ *
65
+ * @var array
66
+ */
67
+ public $options_args = array(
68
+ // 'first_install' => true,
69
+ // 'next_notice_time' => '',
70
+ // 'notice_seen' => [
71
+ // 'opt_in' => false,
72
+ // 'first_install' => false,
73
+ // 'update' => false,
74
+ // 'review' => false,
75
+ // 'upsale' => false
76
+ // ],
77
+ // 'notice_will_show' => [
78
+ // 'opt_in' => true,
79
+ // 'first_install' => false,
80
+ // 'update' => true,
81
+ // 'review' => true,
82
+ // 'upsale' => true,
83
+ // ]
84
+ );
85
+ /**
86
+ * Notice ID for users.
87
+ * @var string
88
+ */
89
+ private $notice_id;
90
+ /**
91
+ * Upsale Notice Arguments
92
+ * @var array
93
+ */
94
+ public $upsale_args;
95
+ /**
96
+ * Revoke this function when the object is created.
97
+ *
98
+ * @param string $plugin_name
99
+ * @param string $version
100
+ */
101
+ public function __construct( $plugin_name = '', $version = '' ) {
102
+ $this->plugin_name = $plugin_name;
103
+ $this->version = $version;
104
+ $this->timestamp = current_time( 'timestamp' );
105
+ $this->notice_id = 'wpdeveloper_notice_' . str_replace( '.', '_', $this->version );
106
+
107
+ require dirname( __FILE__ ) . '/class-wpdev-core-install.php';
108
+
109
+ if ( ! function_exists( 'get_plugins' ) ) {
110
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
111
+ }
112
+ if( ! function_exists( 'wp_get_current_user' ) ) {
113
+ require_once ABSPATH . 'wp-includes/pluggable.php';
114
+ }
115
+ }
116
+
117
+ public function init(){
118
+ add_action( 'activate_' . $this->plugin_name, array( $this, 'first_install_track' ) );
119
+ add_action( 'upgrader_process_complete', array( $this, 'upgrade_completed' ), 10, 2);
120
+ add_action( 'deactivate_' . $this->plugin_name, array( $this, 'first_install_end' ) );
121
+ add_action( 'wp_ajax_wpdeveloper_upsale_notice_dissmiss', array( $this, 'upsale_notice_dissmiss' ) );
122
+ add_action( 'wpdeveloper_before_notice', array( $this, 'before' ) );
123
+ add_action( 'wpdeveloper_after_notice', array( $this, 'after' ) );
124
+ add_action( 'wpdeveloper_before_upsale_notice', array( $this, 'before_upsale' ) );
125
+ add_action( 'wpdeveloper_after_upsale_notice', array( $this, 'after' ) );
126
+ add_action( 'wpdeveloper_notices', array( $this, 'content' ) );
127
+ if( current_user_can( 'install_plugins' ) ) {
128
+ $this->clicked();
129
+ $current_notice = $this->next_notice();
130
+ $deserve_notice = $this->deserve_notice( $current_notice );
131
+ $options_data = $this->get_options_data();
132
+
133
+ $notice_time = isset( $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] )
134
+ ? $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] : $this->timestamp;
135
+ $current_notice_end = $this->makeTime( $notice_time, $this->cne_time );
136
+
137
+ if( $deserve_notice ) {
138
+ /**
139
+ * TODO: automatic maybe later setup with time.
140
+ */
141
+
142
+ if( $this->timestamp >= $current_notice_end ) {
143
+ $this->maybe_later( $current_notice );
144
+ $notice_time = false;
145
+ }
146
+
147
+ if( isset( $options_data[ $this->plugin_name ]['current_notice_start'] ) ) {
148
+ $current_notice_start = $options_data[ $this->plugin_name ]['current_notice_start'];
149
+ } else {
150
+ $current_notice_start = $this->timestamp;
151
+ }
152
+
153
+ if( $notice_time != false ) {
154
+ if( $notice_time <= $this->timestamp ) {
155
+ if( $current_notice === 'upsale' ) {
156
+ $upsale_args = $this->get_upsale_args();
157
+ $plugins = get_plugins();
158
+ $pkey = $upsale_args['slug'] . '/' . $upsale_args['file'];
159
+
160
+ if( isset( $plugins[ $pkey ] ) ) {
161
+ return;
162
+ }
163
+ add_action( 'admin_notices', array( $this, 'upsale_notice' ) );
164
+ } else {
165
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+ }
172
+
173
+ }
174
+
175
+ public function makeTime( $current, $time ) {
176
+ return strtotime( date('Y-m-d H:i:s', $current) . " +$time" );
177
+ }
178
+
179
+ private function maybe_later( $notice ){
180
+ $options_data = $this->get_options_data();
181
+ $options_data[ $this->plugin_name ]['notice_will_show'][ $notice ] = $this->makeTime( $this->timestamp, $this->maybe_later_time );
182
+ $this->update_options_data( $options_data[ $this->plugin_name ] );
183
+ }
184
+ /**
185
+ * When links are clicked, this function will invoked.
186
+ * @return void
187
+ */
188
+ public function clicked(){
189
+ if( ! isset( $_GET['notice_action'] ) || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'wpdeveloper-nonce' ) ) {
190
+ return;
191
+ }
192
+ if( isset( $_GET['notice_action'] ) && $_GET['notice_action'] === $this->plugin_name ) {
193
+ $options_data = $this->get_options_data();
194
+ $clicked_from = $this->next_notice();
195
+ extract($_GET);
196
+
197
+ $later_time = '';
198
+
199
+ switch( $clicked_from ) {
200
+
201
+ case 'opt_in' :
202
+ $later_time = $this->makeTime( $this->timestamp, $this->maybe_later_time );
203
+ break;
204
+
205
+ case 'first_install' :
206
+ $later_time = $this->makeTime( $this->timestamp, $this->maybe_later_time );
207
+ break;
208
+
209
+ case 'update' :
210
+ $later_time = $this->makeTime( $this->timestamp, $this->maybe_later_time );
211
+ break;
212
+
213
+ case 'review' :
214
+ $later_time = $this->makeTime( $this->timestamp, $this->maybe_later_time );
215
+ break;
216
+
217
+ case 'upsale' :
218
+ $later_time = $this->makeTime( $this->timestamp, $this->maybe_later_time );
219
+ break;
220
+
221
+ }
222
+
223
+ if( isset( $later ) && $later == true ) {
224
+ $options_data[ $this->plugin_name ]['notice_will_show'][ $clicked_from ] = $later_time;
225
+ }
226
+ if( isset( $dismiss ) && $dismiss == true ) {
227
+ $user_notices = $this->get_user_notices();
228
+ if( ! $user_notices ) {
229
+ $user_notices = [];
230
+ }
231
+ $user_notices[ $this->notice_id ][ $this->plugin_name ][] = $clicked_from;
232
+
233
+ update_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, $user_notices);
234
+ }
235
+ $this->update_options_data( $options_data[ $this->plugin_name ] );
236
+ wp_safe_redirect( $this->redirect_url );
237
+ }
238
+ }
239
+ /**
240
+ * Before Notice
241
+ * @return void
242
+ */
243
+ public function before(){
244
+ $current_notice = $this->next_notice();
245
+ $classes = 'notice notice-info put-dismiss-notice';
246
+ if( isset( $this->data['classes'] ) ) {
247
+ if( isset( $this->data['classes'][ $current_notice ] ) ) {
248
+ $classes = $this->data['classes'][ $current_notice ];
249
+ }
250
+ }
251
+
252
+ if( $this->has_thumbnail( $current_notice ) ) {
253
+ $classes .= 'notice-has-thumbnail';
254
+ }
255
+
256
+ echo '<div class="'. $classes .' wpdeveloper-'. $current_notice .'-notice">';
257
+ }
258
+ /**
259
+ * After Notice
260
+ * @return void
261
+ */
262
+ public function after(){
263
+ echo '</div>';
264
+ }
265
+ /**
266
+ * Content generation & Hooks Funciton.
267
+ * @return void
268
+ */
269
+ public function content(){
270
+ $options_data = $this->get_options_data();
271
+ $notice = $this->next_notice();
272
+
273
+ switch( $notice ) {
274
+ case 'opt_in' :
275
+ do_action('wpdeveloper_optin_notice');
276
+ $this->get_thumbnail( 'opt_in' );
277
+ $this->get_message( 'opt_in' );
278
+ break;
279
+ case 'first_install' :
280
+ if( $options_data[ $this->plugin_name ]['first_install'] !== 'deactivated' ) {
281
+ do_action('wpdeveloper_first_install_notice');
282
+ $this->get_thumbnail( 'first_install' );
283
+ $this->get_message( 'first_install' );
284
+ }
285
+ break;
286
+ case 'update' :
287
+ do_action('wpdeveloper_update_notice');
288
+ $this->get_thumbnail( 'update' );
289
+ $this->get_message( 'update' );
290
+ break;
291
+ case 'review' :
292
+ do_action('wpdeveloper_review_notice');
293
+ $this->get_thumbnail( 'review' );
294
+ $this->get_message( 'review' );
295
+ break;
296
+ }
297
+ }
298
+ /**
299
+ * Before Upsale Notice
300
+ * @return void
301
+ */
302
+ public function before_upsale(){
303
+ $classes = '';
304
+ if( $this->has_thumbnail('upsale') ) {
305
+ $classes = 'notice-has-thumbnail';
306
+ }
307
+ echo '<div class="error notice is-dismissible wpdeveloper-upsale-notice '. $classes .'">';
308
+ }
309
+ public function upsale_notice(){
310
+ do_action( 'wpdeveloper_before_upsale_notice' );
311
+ do_action('wpdeveloper_upsale_notice');
312
+ $this->get_thumbnail( 'upsale' );
313
+ $this->get_message( 'upsale' );
314
+ do_action( 'wpdeveloper_after_upsale_notice' );
315
+ $this->upsale_button_script();
316
+ }
317
+
318
+ private function get_upsale_args(){
319
+ return $this->upsale_args;
320
+ }
321
+
322
+ private function upsale_button(){
323
+ $upsale_args = $this->get_upsale_args();
324
+ $plugin_slug = ( isset( $upsale_args['slug'] )) ? $upsale_args['slug'] : '' ;
325
+ if( empty( $plugin_slug ) ) {
326
+ return;
327
+ }
328
+
329
+ echo '<button data-slug="'. $plugin_slug .'" id="plugin-install-core" class="button button-primary">'. __( 'Install Now!' ) .'</button>';
330
+ }
331
+ /**
332
+ * This methods is responsible for get notice image.
333
+ *
334
+ * @param string $msg_for
335
+ * @return void
336
+ */
337
+ protected function get_thumbnail( $msg_for ){
338
+ $output = '';
339
+ if( isset( $this->data['thumbnail'] ) && isset( $this->data['thumbnail'][ $msg_for ] ) ) {
340
+ $output = '<div class="wpdeveloper-notice-thumbnail">';
341
+ $output .= '<img src="'. $this->data['thumbnail'][ $msg_for ] .'" alt="">';
342
+ $output .= '</div>';
343
+ }
344
+ echo $output;
345
+ }
346
+ /**
347
+ * Has Thumbnail Check
348
+ *
349
+ * @param string $msg_for
350
+ * @return boolean
351
+ */
352
+ protected function has_thumbnail( $msg_for = '' ){
353
+ if( empty( $msg_for ) ) {
354
+ return false;
355
+ }
356
+ if( isset( $this->data['thumbnail'] ) && isset( $this->data['thumbnail'][ $msg_for ] ) ) {
357
+ return true;
358
+ }
359
+ return false;
360
+ }
361
+
362
+ /**
363
+ * This method is responsible for get messages.
364
+ *
365
+ * @param string $msg_for
366
+ * @return void
367
+ */
368
+ protected function get_message( $msg_for ){
369
+ if( isset( $this->data['message'] ) && isset( $this->data['message'][ $msg_for ] ) ) {
370
+ echo '<div class="wpdeveloper-notice-message">';
371
+ echo $this->data['message'][ $msg_for ];
372
+ if( $msg_for === 'upsale' ) {
373
+ $this->upsale_button();
374
+ }
375
+ $this->dismissible_notice( $msg_for );
376
+ echo '</div>';
377
+ }
378
+ }
379
+ /**
380
+ * Detect which notice will show @ next.
381
+ * @return void
382
+ */
383
+ protected function next_notice(){
384
+ $options_data = $this->get_options_data();
385
+ if( ! $options_data ) {
386
+ $args = $this->get_args();
387
+ $return_notice = $args['notice_will_show'];
388
+ } else {
389
+ $return_notice = $options_data[ $this->plugin_name ]['notice_will_show'];
390
+ }
391
+
392
+ $deserve_notice_timestamp = INF;
393
+ $deserve_notice = '';
394
+ foreach( $return_notice as $notice => $timestamp ) {
395
+ if( $timestamp <= $deserve_notice_timestamp ) {
396
+ $deserve_notice_timestamp = $timestamp;
397
+ $deserve_notice = $notice;
398
+ }
399
+ }
400
+ return $deserve_notice;
401
+ }
402
+
403
+ private function deserve_notice( $notice ) {
404
+ $notices = $this->get_user_notices();
405
+ if( empty( $notices ) ) {
406
+ return true;
407
+ } else {
408
+ if( isset( $notices[ $this->notice_id ] ) && isset( $notices[ $this->notice_id ][ $this->plugin_name ] ) ) {
409
+ if( in_array( $notice, $notices[ $this->notice_id ][ $this->plugin_name ] ) ) {
410
+ return false;
411
+ }
412
+ } else {
413
+ return true;
414
+ }
415
+ }
416
+ }
417
+
418
+ /**
419
+ * This is the main methods for generate the notice.
420
+ * @return void
421
+ */
422
+ public function admin_notices(){
423
+ do_action( 'wpdeveloper_before_notice' );
424
+ do_action( 'wpdeveloper_notices' );
425
+ do_action( 'wpdeveloper_after_notice' );
426
+ }
427
+ /**
428
+ * This method is responsible for all dismissible links generation.
429
+ * @param string $links_for
430
+ * @return void
431
+ */
432
+ public function dismissible_notice( $links_for = '' ){
433
+ if( empty( $links_for ) ) {
434
+ return;
435
+ }
436
+ $links = isset( $this->data['links'][ $links_for ] ) ? $this->data['links'][ $links_for ] : false;
437
+ if( $links ) :
438
+ $output = '<ul class="wpdeveloper-notice-link">';
439
+ foreach( $links as $key => $link_value ) {
440
+ if( ! empty( $link_value['label'] ) ) {
441
+ $output .= '<li>';
442
+ if( isset( $link_value['link'] ) ) {
443
+ $link = $link_value['link'];
444
+ $target = isset( $link_value['target'] ) ? 'target="'. $link_value['target'] .'"' : '';
445
+ if( isset( $link_value['data_args'] ) && is_array( $link_value['data_args'] ) ) {
446
+ $data_args = [];
447
+ foreach( $link_value['data_args'] as $key => $args_value ) {
448
+ $data_args[ $key ] = $args_value;
449
+ }
450
+ $data_args[ 'notice_action' ] = $this->plugin_name;
451
+ $normal_link = add_query_arg( $data_args, $link );
452
+ $link = wp_nonce_url( $normal_link, 'wpdeveloper-nonce' );
453
+ }
454
+ $class = '';
455
+ if( isset( $link_value['link_class'] ) ) {
456
+ $class = 'class="' . implode( ' ', $link_value['link_class'] ) . '"';
457
+ }
458
+ $output .= '<a '. $class .' href="'. esc_url( $link ) .'" '. $target .'>';
459
+ }
460
+ if( isset( $link_value['icon_class'] ) ) {
461
+ $output .= '<span class="'. $link_value['icon_class'] .'"></span>';
462
+ }
463
+ if( isset( $link_value['icon_img'] ) ) {
464
+ $output .= '<img src="'. $link_value['icon_img'] .'" />';
465
+ }
466
+ $output .= $link_value['label'];
467
+ if( isset( $link_value['link'] ) ) {
468
+ $output .= '</a>';
469
+ }
470
+ $output .= '</li>';
471
+ }
472
+ }
473
+ $output .= '</ul>';
474
+ echo $output;
475
+ endif;
476
+ }
477
+ /**
478
+ * First Installation Track
479
+ *
480
+ * @return void
481
+ */
482
+ public function first_install_track( $args = array() ){
483
+ if( empty( $args ) ) {
484
+ $args = array(
485
+ 'time' => $this->timestamp,
486
+ );
487
+ }
488
+ $options_data = $this->get_options_data();
489
+ $args = wp_parse_args( $args, $this->get_args() );
490
+
491
+ if( ! isset( $options_data[ $this->plugin_name ] ) ) {
492
+ $this->update_options_data( $args );
493
+ }
494
+ }
495
+ /**
496
+ * First Installation Deactive Track
497
+ *
498
+ * @return void
499
+ */
500
+ public function first_install_end(){
501
+ // $args = array(
502
+ // 'first_install' => 'deactivated'
503
+ // );
504
+ // $options_data = $this->get_options_data();
505
+ // if( isset( $options_data[ $this->plugin_name ] ) ) {
506
+ // $args = wp_parse_args( $args, $options_data[ $this->plugin_name ] );
507
+ // $this->update_options_data( $args );
508
+ // }
509
+ delete_option( 'wpdeveloper_plugins_data' );
510
+ }
511
+ /**
512
+ * Get all options from database!
513
+ * @return void
514
+ */
515
+ protected function get_options_data( $key = ''){
516
+ $options_data = get_option( 'wpdeveloper_plugins_data' );
517
+ if( empty( $key ) ) {
518
+ return $options_data;
519
+ }
520
+
521
+ if( isset( $options_data[ $this->plugin_name ][ $key ] ) ) {
522
+ return $options_data[ $this->plugin_name ][ $key ];
523
+ }
524
+ return false;
525
+ }
526
+ /**
527
+ * This will update the options table for plugins.
528
+ *
529
+ * @param mixed $new_data
530
+ * @param array $args
531
+ * @return void
532
+ */
533
+ protected function update_options_data( $args = array() ){
534
+ $options_data = $this->get_options_data();
535
+ $options_data[ $this->plugin_name ] = $args;
536
+ update_option( 'wpdeveloper_plugins_data', $options_data );
537
+ }
538
+ /**
539
+ * Set properties data, for some selected properties.
540
+ *
541
+ * @param string $name
542
+ * @param mixed $value
543
+ */
544
+ public function __set( $name, $value ){
545
+ if( in_array( $name, $this->properties ) ) {
546
+ $this->data[ $name ] = $value;
547
+ }
548
+ }
549
+ /**
550
+ * Invoked when some selected methods are called
551
+ *
552
+ * @param string $name
553
+ * @param array $values
554
+ * @return void
555
+ */
556
+ public function __call( $name, $values ){
557
+ if( in_array( $name, $this->methods ) ) {
558
+ $this->data[ $name ][ $values[0] ] = $values[1];
559
+ }
560
+ }
561
+
562
+ private function get_args( $key = '' ){
563
+ if( empty( $key ) ) {
564
+ return $this->options_args;
565
+ }
566
+
567
+ if( isset( $this->options_args[ $key ] ) ) {
568
+ return $this->options_args[ $key ];
569
+ }
570
+
571
+ return false;
572
+ }
573
+
574
+ public function upgrade_completed( $upgrader_object, $options ) {
575
+ // If an update has taken place and the updated type is plugins and the plugins element exists
576
+ if( $options['action'] == 'update' && $options['type'] == 'plugin' && isset( $options['plugins'] ) ) {
577
+ // Iterate through the plugins being updated and check if ours is there
578
+ foreach( $options['plugins'] as $plugin ) {
579
+ if( $plugin == $this->plugin_name ) {
580
+ $this->first_install_track( array(
581
+ 'update_time' => $this->timestamp
582
+ ) );
583
+ }
584
+ }
585
+ }
586
+ }
587
+ /**
588
+ * This function is responsible for get_user_notices
589
+ * @return void
590
+ */
591
+ private function get_user_notices() {
592
+ return get_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, true );
593
+ }
594
+
595
+ public function upsale_notice_dissmiss(){
596
+ $dismiss = isset( $_POST['dismiss'] ) ? $_POST['dismiss'] : false;
597
+
598
+ if( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( wp_unslash( $_POST['_wpnonce'] ) ), 'wpdeveloper_upsale_notice_dissmiss' ) ) {
599
+ return;
600
+ }
601
+
602
+ if( ! isset( $_POST['action'] ) || ( $_POST['action'] !== 'wpdeveloper_upsale_notice_dissmiss' ) ) {
603
+ return;
604
+ }
605
+
606
+ if( $dismiss ) {
607
+ $user_notices = $this->get_user_notices();
608
+ if( ! $user_notices ) {
609
+ $user_notices = [];
610
+ }
611
+ $user_notices[ $this->notice_id ][ $this->plugin_name ][] = 'upsale';
612
+
613
+ update_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, $user_notices);
614
+ echo 'success';
615
+ } else {
616
+ echo 'failed';
617
+ }
618
+ die();
619
+ }
620
+
621
+ public function upsale_button_script(){
622
+ $upsale_args = $this->get_upsale_args();
623
+
624
+ $plugin_slug = ( isset( $upsale_args['slug'] ) ) ? $upsale_args['slug'] : '';
625
+ $plugin_file = ( isset( $upsale_args['file'] ) ) ? $upsale_args['file'] : '';
626
+ $page_slug = ( isset( $upsale_args['page_slug'] ) ) ? $upsale_args['page_slug'] : '';
627
+
628
+ ?>
629
+ <script type="text/javascript">
630
+ jQuery(document).ready( function($) {
631
+ <?php if( ! empty( $plugin_slug ) && ! empty( $plugin_file ) ) : ?>
632
+ $('#plugin-install-core').on('click', function (e) {
633
+ var self = $(this);
634
+ e.preventDefault();
635
+ self.addClass('install-now updating-message');
636
+ self.text('<?php echo esc_js( 'Installing...' ); ?>');
637
+
638
+ $.ajax({
639
+ url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
640
+ type: 'POST',
641
+ data: {
642
+ action: 'wpdeveloper_upsale_core_install',
643
+ _wpnonce: '<?php echo wp_create_nonce('wpdeveloper_upsale_core_install'); ?>',
644
+ slug : '<?php echo $plugin_slug; ?>',
645
+ file : '<?php echo $plugin_file; ?>'
646
+ },
647
+ success: function(response) {
648
+ self.text('<?php echo esc_js( 'Installed' ); ?>');
649
+ <?php if( ! empty( $page_slug ) ) : ?>
650
+ window.location.href = '<?php echo admin_url( "admin.php?page={$page_slug}" ); ?>';
651
+ <?php endif; ?>
652
+ },
653
+ error: function(error) {
654
+ self.removeClass('install-now updating-message');
655
+ alert( error );
656
+ },
657
+ complete: function() {
658
+ self.attr('disabled', 'disabled');
659
+ self.removeClass('install-now updating-message');
660
+ }
661
+ });
662
+ });
663
+
664
+ <?php endif; ?>
665
+
666
+ $('.wpdeveloper-upsale-notice').on('click', 'button.notice-dismiss', function (e) {
667
+ e.preventDefault();
668
+ $.ajax({
669
+ url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
670
+ type: 'post',
671
+ data: {
672
+ action: 'wpdeveloper_upsale_notice_dissmiss',
673
+ _wpnonce: '<?php echo wp_create_nonce('wpdeveloper_upsale_notice_dissmiss'); ?>',
674
+ dismiss: true
675
+ },
676
+ success: function(response) {
677
+ console.log('Success fully saved!');
678
+ },
679
+ error: function(error) {
680
+ console.log('Something went wrong!');
681
+ },
682
+ complete: function() {
683
+ console.log('Its Complete.');
684
+ }
685
+ });
686
+ });
687
+ } );
688
+ </script>
689
+
690
+ <?php
691
+ }
692
+ }
693
+
694
+ // Initialization.
695
+ $notice = new WPDeveloper_Notice(ESSENTIAL_ADDONS_BASENAME, ESSENTIAL_ADDONS_VERSION);
696
+ $scheme = (parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY )) ? '&' : '?';
697
+ $url = $_SERVER['REQUEST_URI'] . $scheme;
698
+ $notice->links = [
699
+ 'review' => array(
700
+ 'later' => array(
701
+ 'link' => 'https://wpdeveloper.net/review-essential-addons-elementor',
702
+ 'target' => '_blank',
703
+ 'label' => __( 'Ok, you deserve it!', 'essential-addons-elementor' ),
704
+ 'icon_class' => 'dashicons dashicons-external',
705
+ ),
706
+ 'allready' => array(
707
+ 'link' => $url,
708
+ 'label' => __( 'I already did', 'essential-addons-elementor' ),
709
+ 'icon_class' => 'dashicons dashicons-smiley',
710
+ 'data_args' => [
711
+ 'dismiss' => true,
712
+ ]
713
+ ),
714
+ 'maybe_later' => array(
715
+ 'link' => $url,
716
+ 'label' => __( 'Maybe Later', 'essential-addons-elementor' ),
717
+ 'icon_class' => 'dashicons dashicons-calendar-alt',
718
+ 'data_args' => [
719
+ 'later' => true,
720
+ ]
721
+ ),
722
+ 'support' => array(
723
+ 'link' => 'https://wpdeveloper.net/support',
724
+ 'label' => __( 'I need help', 'essential-addons-elementor' ),
725
+ 'icon_class' => 'dashicons dashicons-sos',
726
+ ),
727
+ 'never_show_again' => array(
728
+ 'link' => $url,
729
+ 'label' => __( 'Never show again', 'essential-addons-elementor' ),
730
+ 'icon_class' => 'dashicons dashicons-dismiss',
731
+ 'data_args' => [
732
+ 'dismiss' => true,
733
+ ]
734
+ ),
735
+ )
736
+ ];
737
+
738
+ /**
739
+ * This is upsale notice settings
740
+ * classes for wrapper,
741
+ * Message message for showing.
742
+ */
743
+ $notice->classes( 'upsale', 'notice is-dismissible' );
744
+ $notice->message( 'upsale', '<p>'. __( 'Get the missing Drag & Drop Post Calendar feature for WordPress for Free!', 'essential-addons-elementor' ) .'</p>' );
745
+ $notice->thumbnail( 'upsale', plugins_url( 'admin/assets/images/wpsp-logo.svg', ESSENTIAL_ADDONS_BASENAME ) );
746
+
747
+ /**
748
+ * This is review message and thumbnail.
749
+ */
750
+ $notice->message( 'review', '<p>'. __( 'We hope you\'re enjoying Essential Addons for Elementor! Could you please do us a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'essential-addons-elementor' ) .'</p>' );
751
+ $notice->thumbnail( 'review', plugins_url( 'admin/assets/images/ea-logo.svg', ESSENTIAL_ADDONS_BASENAME ) );
752
+
753
+ /**
754
+ * Current Notice End Time.
755
+ * Notice will dismiss in 1 days if user does nothing.
756
+ */
757
+ $notice->cne_time = '3 Day';
758
+ $notice->redirect_url = admin_url( 'admin.php?page=eael-settings' );
759
+ /**
760
+ * Current Notice Maybe Later Time.
761
+ * Notice will show again in 7 days
762
+ */
763
+ $notice->maybe_later_time = '7 Day';
764
+
765
+ $notice->upsale_args = array(
766
+ 'slug' => 'wp-scheduled-posts',
767
+ 'page_slug' => 'wpsp-schedule-calendar',
768
+ 'file' => 'wp-scheduled-posts.php'
769
+ );
770
+
771
+ $notice->options_args = array(
772
+ 'notice_seen' => [
773
+ 'review' => false,
774
+ 'upsale' => false,
775
+ ],
776
+ 'notice_will_show' => [
777
+ 'review' => $notice->makeTime( $notice->timestamp, '4 Day' ), // after 4 days
778
+ 'upsale' => $notice->makeTime( $notice->timestamp, '2 Hour' ), // will be after 2 hours
779
+ ]
780
+ );
781
+
782
+ $notice->init();
includes/eae-posts-group-control.php CHANGED
File without changes
includes/eael-rollback.php CHANGED
@@ -20,13 +20,6 @@ if( ! class_exists('EAEL_Rollback') ) {
20
  */
21
  private static $instance;
22
 
23
- /**
24
- * Plugin repo url.
25
- *
26
- * @var string
27
- */
28
- public $plugins_repo = 'http://plugins.svn.wordpress.org';
29
-
30
  /**
31
  * Plugin file.
32
  *
@@ -46,7 +39,46 @@ if( ! class_exists('EAEL_Rollback') ) {
46
  *
47
  * @var array
48
  */
49
- public $versions;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
  /**
52
  * Current version.
@@ -73,13 +105,14 @@ if( ! class_exists('EAEL_Rollback') ) {
73
 
74
  // Only setup plugin rollback on specific page.
75
  self::$instance->setup_plugin_vars();
76
- self::$instance->get_plugin_data();
77
  }
78
  return self::$instance;
79
  }
80
 
81
  public function __construct() {
82
  add_filter( 'insert_eael_versions_html', [$this, 'versions_select'] );
 
83
  }
84
 
85
  /**
@@ -88,8 +121,6 @@ if( ! class_exists('EAEL_Rollback') ) {
88
  * @access private
89
  */
90
  private function setup_plugin_vars() {
91
- $svn_tags = $this->get_svn_tags();
92
- $this->set_svn_versions_data($svn_tags);
93
  $this->versions_select('plugin');
94
  }
95
 
@@ -111,55 +142,6 @@ if( ! class_exists('EAEL_Rollback') ) {
111
  }
112
  }
113
 
114
- /**
115
- * Get Subversion Tags
116
- *
117
- * cURL wp.org repo to get the proper tags
118
- *
119
- * @param $type
120
- * @param $slug
121
- * @return null|string
122
- */
123
- public function get_svn_tags() {
124
- $url = $this->plugins_repo . '/' . $this->plugin_slug . '/tags/';
125
-
126
- $response = wp_remote_get($url);
127
-
128
- // If we have an error
129
- if( wp_remote_retrieve_response_code( $response ) !== 200) return null;
130
-
131
- // Return response body
132
- return wp_remote_retrieve_body( $response );
133
- }
134
-
135
- /**
136
- * Set SVN Version Data
137
- *
138
- * @param $html
139
- *
140
- * @return array|bool
141
- */
142
- public function set_svn_versions_data( $html ) {
143
- if( ! $html ) return false;
144
-
145
- $DOM = new DOMDocument;
146
- $DOM->loadHTML( $html );
147
-
148
- $versions = [];
149
- $items = $DOM->getElementsByTagName('a');
150
-
151
- foreach( $items as $item ) {
152
- $href = str_replace( '/', '', $item->getAttribute('href') ); // Remove trailing slash
153
-
154
- if( strpos( $href, 'http' ) === false && '..' !== $href ) {
155
- $versions[] = $href;
156
- }
157
- }
158
-
159
- $this->versions = array_reverse( $versions );
160
- return $versions;
161
- }
162
-
163
  /**
164
  * Versions Select
165
  *
@@ -178,7 +160,7 @@ if( ! class_exists('EAEL_Rollback') ) {
178
 
179
  // Loop through versions and output in a radio list
180
  foreach( $this->versions as $v ) {
181
-
182
  // Is this the current version?
183
  if( $v == $this->current_version ) {
184
  $vh .= '<option value"'. esc_attr($v).'" disabled>'.$v;
@@ -195,16 +177,6 @@ if( ! class_exists('EAEL_Rollback') ) {
195
  }
196
 
197
 
198
- /**
199
- * Plugin Action Link
200
- *
201
- * Adds a rollback button into the eael version control tab with appropriate query strings.
202
- */
203
- public function eael_plugin_upgrade_confirmation() {
204
-
205
- }
206
-
207
-
208
 
209
  }
210
 
20
  */
21
  private static $instance;
22
 
 
 
 
 
 
 
 
23
  /**
24
  * Plugin file.
25
  *
39
  *
40
  * @var array
41
  */
42
+ public $versions = [
43
+ '2.8.6',
44
+ '2.8.5',
45
+ '2.8.4',
46
+ '2.8.3',
47
+ '2.8.2',
48
+ '2.8.1',
49
+ '2.8.0',
50
+ '2.7.1',
51
+ '2.7.1',
52
+ '2.7.9',
53
+ '2.7.8',
54
+ '2.7.7',
55
+ '2.7.6',
56
+ '2.7.5',
57
+ '2.7.4',
58
+ '2.7.3',
59
+ '2.7.2',
60
+ '2.7.1',
61
+ '2.7.0',
62
+ '2.6.0',
63
+ '2.5.0',
64
+ '2.4.3',
65
+ '2.4.2',
66
+ '2.4.1',
67
+ '2.4.0',
68
+ '2.3.1',
69
+ '2.3.0',
70
+ '2.2.5',
71
+ '2.2.4',
72
+ '2.2.3',
73
+ '2.2.2',
74
+ '2.2.1',
75
+ '2.2.0',
76
+ '2.1',
77
+ '2.0',
78
+ '1.1.0',
79
+ '1.0.1',
80
+ '1.0.0'
81
+ ];
82
 
83
  /**
84
  * Current version.
105
 
106
  // Only setup plugin rollback on specific page.
107
  self::$instance->setup_plugin_vars();
108
+ // self::$instance->get_plugin_data();
109
  }
110
  return self::$instance;
111
  }
112
 
113
  public function __construct() {
114
  add_filter( 'insert_eael_versions_html', [$this, 'versions_select'] );
115
+ $this->get_plugin_data();
116
  }
117
 
118
  /**
121
  * @access private
122
  */
123
  private function setup_plugin_vars() {
 
 
124
  $this->versions_select('plugin');
125
  }
126
 
142
  }
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  /**
146
  * Versions Select
147
  *
160
 
161
  // Loop through versions and output in a radio list
162
  foreach( $this->versions as $v ) {
163
+
164
  // Is this the current version?
165
  if( $v == $this->current_version ) {
166
  $vh .= '<option value"'. esc_attr($v).'" disabled>'.$v;
177
  }
178
 
179
 
 
 
 
 
 
 
 
 
 
 
180
 
181
  }
182
 
includes/elementor-helper.php CHANGED
File without changes
includes/extensions.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ abstract class Module_Base {
6
+
7
+ /**
8
+ * @var \RefelectionClass
9
+ */
10
+ private $reflection;
11
+
12
+ /**
13
+ * @var Module_Base
14
+ */
15
+ protected static $_instance = [];
16
+
17
+ /**
18
+ * Class active status
19
+ */
20
+ public static function is_active() {
21
+ return true;
22
+ }
23
+
24
+ /**
25
+ * Retrive class name
26
+ */
27
+ public static function class_name() {
28
+ return get_called_class();
29
+ }
30
+
31
+ /**
32
+ * @return static
33
+ */
34
+ public static function instance() {
35
+ if( empty(static::$_instance[ static::class_name() ]) ) {
36
+ static::$_instance[ static::class_name() ] = new static();
37
+ }
38
+
39
+ return static::$_instance[ static::class_name() ];
40
+ }
41
+
42
+ public function __construct() {
43
+ $this->reflection = new \ReflectionClass( $this );
44
+ }
45
+
46
+ }
includes/queries.php CHANGED
File without changes
includes/templates/content.php CHANGED
File without changes
includes/templates/product-loop.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('ABSPATH') || exit;
4
+
5
+ global $product;
6
+
7
+ // Ensure visibility.
8
+ if (empty($product) || !$product->is_visible()) {
9
+ return;
10
+ }
11
+
12
+ ?>
13
+ <li <?php wc_product_class('product');?>>
14
+ <?php if ($grid_layout == 'eael-product-simple' || $grid_layout == 'eael-product-default' || $grid_layout == 'eael-product-reveal') {
15
+ echo '<a href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">
16
+ ' . $product->get_image('woocommerce_thumbnail') . '
17
+ <h2 class="woocommerce-loop-product__title">' . $product->get_title() . '</h2>
18
+ ' . ($show_rating != 'yes' ? '' : wc_get_rating_html($product->get_average_rating(), $product->get_rating_count())) . '
19
+ ' . ($product->is_on_sale() ? '<span class="onsale">' . __('Sale!', 'essential-addons-elementor') . '</span>' : '') . '
20
+ <span class="price">' . $product->get_price_html() . '</span>
21
+ </a>';
22
+
23
+ woocommerce_template_loop_add_to_cart();
24
+ } else if ($grid_layout == 'eael-product-overlay') {
25
+ echo '<div class="overlay">
26
+ ' . $product->get_image('woocommerce_thumbnail') . '
27
+ <div class="button-wrap clearfix">
28
+ <a href="' . get_the_permalink() . '" class="product-link"><span class="fa fa-link"></span></a>';
29
+ woocommerce_template_loop_add_to_cart();
30
+ echo '</div>
31
+ </div>
32
+ <h2 class="woocommerce-loop-product__title">' . $product->get_title() . '</h2>
33
+ ' . ($show_rating != 'yes' ? '' : wc_get_rating_html($product->get_average_rating(), $product->get_rating_count())) . '
34
+ ' . ($product->is_on_sale() ? '<span class="onsale">' . __('Sale!', 'essential-addons-elementor') . '</span>' : '') . '
35
+ <span class="price">' . $product->get_price_html() . '</span>';
36
+ }?>
37
+ </li>
includes/version-rollback.php CHANGED
@@ -5,6 +5,7 @@ if( !defined( 'ABSPATH' ) ) exit; //Exit if accessed directly
5
  /**
6
  * EAEL version rollback class
7
  *
 
8
  * @since 2.8.5
9
  */
10
  class EAEL_Version_Rollback {
5
  /**
6
  * EAEL version rollback class
7
  *
8
+ *
9
  * @since 2.8.5
10
  */
11
  class EAEL_Version_Rollback {
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: wpdevteam, Codetic, re_enter_rupok, Asif2BD, robicse11128, priyomukul, mahfuz01, mdsabuz, manik08cse
3
  Tags: elementor, elements, addons, elementor addon, elementor widget, page builder, builder, visual editor, wordpress page builder, elementor form
4
  Requires at least: 4.0
5
- Tested up to: 5.0.2
6
  Requires PHP: 5.4
7
- Stable tag: 2.8.7
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
@@ -70,8 +70,12 @@ We have designed 29 of the most useful widgets to enhance your Elementor Page Bu
70
  28. [Advanced Accordion](https://essential-addons.com/elementor/advanced-accordion/) - Add beautiful accordions in your pages, posts, and anywhere. Supports nested accordions.
71
  29. [Progress Bar](https://essential-addons.com/elementor/progress-bar/) - Display progress bars with 4+ different styles
72
 
 
73
 
74
- ### More elements (28+) on [Premium Version](https://essential-addons.com/elementor/buy.php)
 
 
 
75
 
76
  1. [Post Block (Flex)](https://essential-addons.com/elementor/post-block/) - Display your blog posts with variety of styles with the power of modern CSS Flexbox
77
  2. [Lightbox & Modal](https://essential-addons.com/elementor/lightbox-modal/) - Create Modal Popup which opens after certain actions.
@@ -101,6 +105,13 @@ We have designed 29 of the most useful widgets to enhance your Elementor Page Bu
101
  26. [Logo Carousel](https://essential-addons.com/elementor/logo-carousel/) - Highlight brands/product logos in carousel
102
  27. [Protected Content](https://essential-addons.com/elementor/protected-content/) - Lock your content with password and allow only selected people to see it
103
  28. [Offcanvas Content](https://essential-addons.com/elementor/offcanvas-content/) - Display content in off canvas and show them with button/element click
 
 
 
 
 
 
 
104
 
105
  More coming soon (weekly update) ...
106
 
@@ -158,6 +169,14 @@ Your existing elements/content will work with premium version. So you won't lose
158
 
159
  == Changelog ==
160
 
 
 
 
 
 
 
 
 
161
  = 2.8.7 =
162
 
163
  - Added : Version rollback option
2
  Contributors: wpdevteam, Codetic, re_enter_rupok, Asif2BD, robicse11128, priyomukul, mahfuz01, mdsabuz, manik08cse
3
  Tags: elementor, elements, addons, elementor addon, elementor widget, page builder, builder, visual editor, wordpress page builder, elementor form
4
  Requires at least: 4.0
5
+ Tested up to: 5.0.3
6
  Requires PHP: 5.4
7
+ Stable tag: 2.9.0
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
70
  28. [Advanced Accordion](https://essential-addons.com/elementor/advanced-accordion/) - Add beautiful accordions in your pages, posts, and anywhere. Supports nested accordions.
71
  29. [Progress Bar](https://essential-addons.com/elementor/progress-bar/) - Display progress bars with 4+ different styles
72
 
73
+ Extensions:
74
 
75
+ 1. [Particle Effect](https://essential-addons.com/elementor/particle-effect/) - Add creative particle effects to your section, your visitors will love it.
76
+
77
+
78
+ ### More elements (30+) on [Premium Version](https://essential-addons.com/elementor/buy.php)
79
 
80
  1. [Post Block (Flex)](https://essential-addons.com/elementor/post-block/) - Display your blog posts with variety of styles with the power of modern CSS Flexbox
81
  2. [Lightbox & Modal](https://essential-addons.com/elementor/lightbox-modal/) - Create Modal Popup which opens after certain actions.
105
  26. [Logo Carousel](https://essential-addons.com/elementor/logo-carousel/) - Highlight brands/product logos in carousel
106
  27. [Protected Content](https://essential-addons.com/elementor/protected-content/) - Lock your content with password and allow only selected people to see it
107
  28. [Offcanvas Content](https://essential-addons.com/elementor/offcanvas-content/) - Display content in off canvas and show them with button/element click
108
+ 29. [Advanced Menu](https://essential-addons.com/elementor/advanced-menu/) - Use advanced navigation menu anywhere. Choose design from different skins and customize.
109
+ 30. [Image Scroller](https://essential-addons.com/elementor/image-scroller/) - Show your panaromic or long height images within image scroller widget.
110
+
111
+ Extensions:
112
+
113
+ 1. [Parallax Scrolling](https://essential-addons.com/elementor/parallax-scrolling/) - Add creative parallax scrolling effects to your section, your visitors will love it.
114
+
115
 
116
  More coming soon (weekly update) ...
117
 
169
 
170
  == Changelog ==
171
 
172
+ = 2.9.0 =
173
+
174
+ - Added : Section Particles effect
175
+ - Added: Filterable gallery capability to remove All label
176
+ - Enhancement : Product Grid element with more features
177
+ - Fixed: invalid calc funciton in progressbar
178
+ - Few minor bugfix and improvements
179
+
180
  = 2.8.7 =
181
 
182
  - Added : Version rollback option