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 | Elementor Essential Addons |
Version | 2.9.0 |
Comparing to | |
See all releases |
Code changes from version 2.8.7 to 2.9.0
- admin/assets/css/admin.css +0 -1
- admin/assets/css/eael-notice.css +95 -62
- admin/assets/images/ea-icon-color.png +0 -0
- admin/assets/images/ea-icon.png +0 -0
- admin/assets/images/eael-featured.png +0 -0
- admin/assets/images/gift-icon.png +0 -0
- admin/assets/images/icon-extensions.svg +4 -0
- admin/assets/images/icon-heart.svg +0 -0
- admin/assets/images/icon-modules.svg +0 -0
- admin/assets/images/icon-settings.svg +0 -0
- admin/assets/images/icon-upgrade.svg +0 -0
- admin/assets/images/lock-icon.png +0 -0
- admin/assets/images/wpsp-logo.svg +54 -0
- admin/assets/js/admin.js +0 -0
- admin/assets/vendor/sweetalert2/css/sweetalert2.min.css +0 -0
- admin/assets/vendor/sweetalert2/js/core.js +0 -0
- admin/assets/vendor/sweetalert2/js/sweetalert2.min.js +0 -0
- admin/partials/elements.php +21 -0
- admin/partials/extensions.php +32 -0
- admin/settings.php +3 -1
- assets/css/essential-addons-editor.css +0 -0
- assets/css/essential-addons-elementor.css +321 -245
- assets/css/tooltipster.bundle.min.css +0 -0
- assets/img/accordion.png +0 -0
- assets/img/bg.jpg +0 -0
- assets/img/flexia-preview.jpg +0 -0
- assets/img/play-icon.png +0 -0
- assets/js/eael-scripts.js +201 -2
- assets/js/fancy-text.js +0 -0
- assets/js/isotope.pkgd.min.js +0 -0
- assets/js/jquery.magnific-popup.min.js +0 -0
- assets/js/jquery.resize.min.js +0 -0
- assets/js/load-more.js +0 -0
- assets/js/loading-bar.min.js +0 -0
- assets/js/masonry.min.js +0 -0
- assets/js/mixitup.min.js +0 -0
- assets/js/particles.js +5 -0
- assets/js/tooltipster.bundle.min.js +0 -0
- assets/sass/_particles.scss +3 -0
- assets/sass/_progress-bar.scss +25 -4
- assets/sass/_woo-products.scss +369 -288
- assets/sass/essential-addons-elementor.scss +2 -1
- assets/social-feeds/codebird.js +0 -0
- assets/social-feeds/doT.min.js +0 -0
- assets/social-feeds/jquery.socialfeed.js +0 -0
- assets/social-feeds/moment.js +0 -0
- elements/advance-accordion/advance-accordion.php +0 -0
- elements/advance-tabs/advance-tabs.php +0 -0
- elements/caldera-forms/caldera-forms.php +0 -0
- elements/call-to-action/call-to-action.php +0 -0
- elements/countdown/countdown.php +0 -0
- elements/creative-button/creative-button.php +0 -0
- elements/data-table/data-table.php +0 -0
- elements/dual-color-header/dual-color-header.php +0 -0
- elements/facebook-feed/facebook-feed.php +0 -0
- elements/fancy-text/fancy-text.php +0 -0
- elements/filterable-gallery/filterable-gallery.php +7 -3
- elements/gravity-form/gravity-form.php +0 -0
- elements/image-accordion/image-accordion.php +0 -0
- elements/infobox/infobox.php +0 -0
- elements/ninja-form/ninja-form.php +0 -0
- elements/post-timeline/post-timeline.php +0 -0
- elements/pricing-table/pricing-table.php +0 -0
- elements/product-grid/product-grid.php +212 -190
- elements/team-members/team-members.php +0 -0
- elements/tooltip/tooltip.php +0 -0
- elements/twitter-feed/twitter-feed.php +0 -0
- elements/weforms/weforms.php +0 -0
- elements/wpforms/wpforms.php +0 -0
- essential_adons_elementor.php +31 -178
- extensions/eael-particle-section/eael-particle-section.php +192 -0
- extensions/eael-particle-section/particle-themes.php +554 -0
- includes/class-plugin-usage-tracker.php +6 -4
- includes/class-wpdev-core-install.php +109 -0
- includes/class-wpdev-notices.php +782 -0
- includes/eae-posts-group-control.php +0 -0
- includes/eael-rollback.php +43 -71
- includes/elementor-helper.php +0 -0
- includes/extensions.php +46 -0
- includes/queries.php +0 -0
- includes/templates/content.php +0 -0
- includes/templates/product-loop.php +37 -0
- includes/version-rollback.php +1 -0
- 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 |
-
.
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
}
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
.eael-review-text
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
.
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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', '
|
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-
|
1344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1345 |
-webkit-border-radius: 0;
|
1346 |
border-radius: 0;
|
|
|
1347 |
-webkit-box-shadow: none;
|
1348 |
box-shadow: none;
|
1349 |
}
|
1350 |
-
|
1351 |
-
.
|
1352 |
-
.
|
1353 |
-
|
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 |
-
|
|
|
|
|
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 |
-
|
1380 |
-
.eael-
|
1381 |
-
|
1382 |
-
|
1383 |
-
-webkit-
|
1384 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1385 |
padding: 0;
|
1386 |
}
|
1387 |
-
|
1388 |
-
.eael-
|
1389 |
-
.eael-
|
1390 |
-
|
1391 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1392 |
-webkit-box-shadow: none;
|
1393 |
box-shadow: none;
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1398 |
}
|
1399 |
-
|
1400 |
-
.eael-
|
1401 |
-
.eael-
|
1402 |
font-size: 14px;
|
1403 |
-
|
1404 |
-
margin: 0 0 5px;
|
1405 |
-
padding-bottom: 0.5em;
|
1406 |
}
|
1407 |
-
|
1408 |
-
.eael-
|
1409 |
-
.eael-
|
1410 |
-
|
1411 |
-
|
1412 |
-
letter-spacing: 0.01rem;
|
1413 |
-
text-transform: uppercase;
|
1414 |
}
|
1415 |
-
|
1416 |
-
.eael-
|
1417 |
-
.eael-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
color: #272727;
|
1422 |
-
font-size: 18px;
|
1423 |
-
font-weight: normal;
|
1424 |
}
|
1425 |
-
|
1426 |
-
.eael-
|
1427 |
-
.eael-
|
1428 |
-
display:
|
|
|
|
|
|
|
1429 |
}
|
1430 |
-
|
1431 |
-
.eael-
|
1432 |
-
|
1433 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1434 |
-webkit-border-radius: 0;
|
1435 |
border-radius: 0;
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1439 |
display: block;
|
|
|
|
|
1440 |
font-size: 14px;
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
right: auto;
|
1446 |
-
text-shadow: none;
|
1447 |
-
top: auto;
|
1448 |
-
width: 80%;
|
1449 |
}
|
1450 |
-
|
1451 |
-
.eael-
|
1452 |
-
|
1453 |
-
border: 1px solid #e74c3c;
|
1454 |
-
color: #fff;
|
1455 |
}
|
1456 |
-
|
1457 |
-
.eael-
|
1458 |
-
|
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-
|
1470 |
-
.eael-
|
1471 |
-
|
|
|
|
|
|
|
|
|
1472 |
}
|
1473 |
-
|
1474 |
-
.eael-
|
1475 |
-
|
1476 |
-
color: #f2b01e;
|
1477 |
}
|
1478 |
-
|
1479 |
-
.eael-product-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-
|
1501 |
-
|
1502 |
-
top: -45px;
|
1503 |
}
|
1504 |
-
|
1505 |
-
.eael-product-
|
1506 |
-
|
|
|
|
|
1507 |
}
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
position: relative;
|
1516 |
-
text-align: center;
|
1517 |
}
|
1518 |
-
|
1519 |
-
.eael-
|
1520 |
-
bottom: -63px;
|
1521 |
-
margin-top: -63px;
|
1522 |
position: relative;
|
1523 |
-
|
1524 |
-
-
|
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-
|
1539 |
-
background-color: rgba(255, 255, 255, 0.9);
|
1540 |
-
left: auto;
|
1541 |
-
opacity: 0;
|
1542 |
position: absolute;
|
1543 |
-
|
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 |
-
|
1560 |
-
-webkit-
|
1561 |
-
|
1562 |
-
|
1563 |
}
|
1564 |
-
|
1565 |
-
.eael-product-
|
1566 |
-
|
1567 |
-
|
|
|
|
|
|
|
1568 |
font-size: 14px;
|
1569 |
-
|
1570 |
-
padding: 0;
|
1571 |
-
position: absolute;
|
1572 |
-
right: 0;
|
1573 |
text-align: center;
|
1574 |
-
|
1575 |
-
-
|
1576 |
-
|
1577 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1578 |
}
|
1579 |
-
|
1580 |
-
.eael-
|
1581 |
-
|
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-
|
1596 |
-
|
1597 |
}
|
1598 |
-
|
1599 |
-
.eael-
|
1600 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1601 |
}
|
1602 |
-
|
1603 |
-
.eael-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1604 |
font-size: 14px;
|
1605 |
-
line-height:
|
|
|
|
|
|
|
|
|
|
|
|
|
1606 |
margin: 0;
|
1607 |
-
|
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-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1616 |
color: #fff;
|
|
|
|
|
|
|
|
|
|
|
1617 |
}
|
1618 |
-
|
1619 |
-
.eael-
|
1620 |
-
|
1621 |
-
|
|
|
|
|
|
|
|
|
1622 |
}
|
1623 |
-
|
1624 |
-
.eael-
|
1625 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1626 |
color: #fff;
|
1627 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1628 |
}
|
1629 |
-
|
1630 |
-
.eael-
|
1631 |
-
|
|
|
1632 |
}
|
1633 |
-
|
1634 |
-
.eael-
|
1635 |
-
|
|
|
1636 |
}
|
1637 |
-
|
1638 |
-
.eael-
|
1639 |
-
|
|
|
|
|
1640 |
}
|
1641 |
-
|
1642 |
-
.eael-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
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 |
-
|
|
|
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-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
.
|
11 |
-
.
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
}
|
45 |
-
|
46 |
-
|
47 |
-
.
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
}
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
}
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
.
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
.
|
152 |
-
|
153 |
-
|
154 |
-
}
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
.
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
.
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
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 |
-
|
1774 |
-
|
|
|
|
|
|
|
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 |
-
|
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__(
|
17 |
}
|
18 |
|
19 |
public function get_icon() {
|
20 |
return 'eicon-woocommerce';
|
21 |
}
|
22 |
|
23 |
-
|
24 |
-
return [
|
25 |
}
|
26 |
|
27 |
-
|
28 |
protected function _register_controls() {
|
29 |
|
30 |
// Content Controls
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
|
38 |
$this->add_control(
|
39 |
'eael_product_grid_product_filter',
|
40 |
[
|
41 |
-
'label' => esc_html__(
|
42 |
'type' => Controls_Manager::SELECT,
|
43 |
'default' => 'recent-products',
|
44 |
'options' => [
|
45 |
-
'recent-products' => esc_html__(
|
46 |
-
'featured-products' => esc_html__(
|
47 |
-
'best-selling-products' => esc_html__(
|
48 |
-
'sale-products' => esc_html__(
|
49 |
-
'top-products' => esc_html__(
|
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__(
|
58 |
'type' => Controls_Manager::SELECT,
|
59 |
'default' => '4',
|
60 |
'options' => [
|
61 |
-
'1' => esc_html__(
|
62 |
-
'2' => esc_html__(
|
63 |
-
'3' => esc_html__(
|
64 |
-
'4' => esc_html__(
|
65 |
-
'5' => esc_html__(
|
66 |
-
'6' => esc_html__(
|
67 |
],
|
68 |
]
|
69 |
);
|
70 |
|
71 |
$this->add_control(
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
);
|
82 |
|
83 |
-
|
84 |
$this->add_control(
|
85 |
'eael_product_grid_categories',
|
86 |
[
|
87 |
-
'label' => esc_html__(
|
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 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
|
110 |
$this->add_control(
|
111 |
'eael_product_grid_rating',
|
112 |
[
|
113 |
-
'label' => esc_html__(
|
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__(
|
151 |
-
'tab' => Controls_Manager::TAB_STYLE
|
152 |
]
|
153 |
);
|
154 |
|
155 |
$this->add_control(
|
156 |
'eael_product_grid_background_color',
|
157 |
[
|
158 |
-
'label' => esc_html__(
|
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__(
|
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__(
|
194 |
-
'tab' => Controls_Manager::TAB_STYLE
|
195 |
]
|
196 |
);
|
197 |
|
198 |
$this->add_control(
|
199 |
'eael_product_grid_product_title_heading',
|
200 |
[
|
201 |
-
'label' => __(
|
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__(
|
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 |
-
|
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' => __(
|
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__(
|
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 |
-
|
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' => __(
|
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__(
|
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 |
-
|
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' => __(
|
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__(
|
296 |
'type' => Controls_Manager::COLOR,
|
297 |
'default' => '#fff',
|
298 |
'selectors' => [
|
299 |
-
'{{WRAPPER}} .
|
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__(
|
308 |
'type' => Controls_Manager::COLOR,
|
309 |
'default' => '#ff2a13',
|
310 |
'selectors' => [
|
311 |
-
'{{WRAPPER}} .
|
|
|
312 |
],
|
313 |
]
|
314 |
);
|
315 |
-
|
316 |
$this->add_group_control(
|
317 |
Group_Control_Typography::get_type(),
|
318 |
[
|
319 |
-
|
320 |
-
'selector' => '{{WRAPPER}} .
|
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__(
|
332 |
-
'tab' => Controls_Manager::TAB_STYLE
|
333 |
]
|
334 |
);
|
335 |
|
|
|
336 |
|
337 |
-
$this->
|
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__(
|
345 |
'type' => Controls_Manager::COLOR,
|
346 |
-
'default' => '#
|
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__(
|
357 |
'type' => Controls_Manager::COLOR,
|
358 |
-
'default' => '#
|
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 |
-
|
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(
|
384 |
|
385 |
$this->add_control(
|
386 |
'eael_product_grid_add_to_cart_hover_color',
|
387 |
[
|
388 |
-
'label' => esc_html__(
|
389 |
'type' => Controls_Manager::COLOR,
|
390 |
-
'default' => '#
|
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__(
|
401 |
'type' => Controls_Manager::COLOR,
|
402 |
-
'default' => '#
|
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__(
|
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 |
-
|
439 |
-
$
|
440 |
-
|
441 |
-
$
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
$category_ids = implode(', ', $get_product_categories);
|
446 |
} else {
|
447 |
-
$
|
448 |
}
|
449 |
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
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 |
-
|
479 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
480 |
|
481 |
-
|
482 |
-
|
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 & 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 |
* 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.
|
20 |
-
define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.
|
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', '
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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% </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( '
|
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.
|
6 |
Requires PHP: 5.4
|
7 |
-
Stable tag: 2.
|
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 |
-
|
|
|
|
|
|
|
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
|