Version Description
Release Date - 9 April 2019
- Added Force permalinks rewrite feature
- Added numeric pagination on a Wishlist page
- Added analytic tracking feature for compatibility with the premium version of plugin
- Improved compatibility with TM Extra Product Options plugin
- Fixed pagination issue on a Wishlist page for all actions
- Fixed minor PHP issues
- Fixed minor CSS issues
Download this release
Release Info
Developer | templateinvaders |
Plugin | WooCommerce Wishlist Plugin |
Version | 1.10.0 |
Comparing to | |
See all releases |
Code changes from version 1.9.18 to 1.10.0
- admin/settings/general.class.php +14 -0
- assets/css/admin.min.css +1 -1
- assets/css/public.css +46 -10
- assets/css/public.css.map +1 -1
- assets/css/public.min.css +11 -7
- assets/css/theme.min.css +1 -1
- assets/js/admin.min.js +1 -1
- assets/js/public.min.js +1 -1
- includes/activator.class.php +987 -924
- includes/analytics.class.php +497 -0
- languages/ti-woocommerce-wishlist.pot +122 -110
- public/cart.class.php +46 -0
- public/tinvwl.class.php +61 -1
- public/wishlist/view.class.php +28 -4
- readme.txt +12 -1
- templates/ti-wishlist-user.php +6 -2
- templates/ti-wishlist.php +6 -2
- ti-woocommerce-wishlist.php +2 -2
- tinv-wishlists-function-integration.php +10 -4
admin/settings/general.class.php
CHANGED
@@ -197,6 +197,20 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
|
|
197 |
),
|
198 |
),
|
199 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
array(
|
201 |
'id' => 'page',
|
202 |
'title' => __( 'Wishlist Page Options', 'ti-woocommerce-wishlist' ),
|
197 |
),
|
198 |
),
|
199 |
),
|
200 |
+
array(
|
201 |
+
'id' => 'permalinks',
|
202 |
+
'title' => __( 'Permalinks Settings', 'ti-woocommerce-wishlist' ),
|
203 |
+
'show_names' => false,
|
204 |
+
'fields' => array(
|
205 |
+
array(
|
206 |
+
'type' => 'checkboxonoff',
|
207 |
+
'name' => 'force',
|
208 |
+
'text' => __( 'Force permalinks rewrite', 'ti-woocommerce-wishlist' ),
|
209 |
+
'desc' => __( 'This option should be enabled to avoid any issues with URL rewrites between other plugins and Wishlist', 'ti-woocommerce-wishlist' ),
|
210 |
+
'std' => false,
|
211 |
+
),
|
212 |
+
),
|
213 |
+
),
|
214 |
array(
|
215 |
'id' => 'page',
|
216 |
'title' => __( 'Wishlist Page Options', 'ti-woocommerce-wishlist' ),
|
assets/css/admin.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.10.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
assets/css/public.css
CHANGED
@@ -498,7 +498,7 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
498 |
margin-right: 0; }
|
499 |
|
500 |
.tinv-wishlist .social-buttons {
|
501 |
-
|
502 |
.tinv-wishlist .social-buttons > span, .tinv-wishlist .social-buttons > ul {
|
503 |
display: inline-block;
|
504 |
vertical-align: middle; }
|
@@ -510,7 +510,7 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
510 |
list-style: none; }
|
511 |
.tinv-wishlist .social-buttons li:last-child {
|
512 |
margin-right: 0; }
|
513 |
-
.tinv-wishlist .social-buttons li a {
|
514 |
display: -webkit-box;
|
515 |
display: -ms-flexbox;
|
516 |
display: flex;
|
@@ -526,19 +526,50 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
526 |
-webkit-box-shadow: none;
|
527 |
box-shadow: none;
|
528 |
border: 0;
|
529 |
-
font-size: 20px;
|
530 |
-
|
|
|
531 |
color: #ffffff; }
|
532 |
-
.tinv-wishlist .social-buttons li a.dark {
|
533 |
color: #000000; }
|
534 |
-
.tinv-wishlist .social-buttons li a i {
|
535 |
line-height: 2em; }
|
536 |
|
537 |
.tinv-wishlist .navigation-button .tinv-create-list > a.tinvwl-no-icon > i, .tinv-wishlist .navigation-button li > a.tinvwl-no-icon > i {
|
538 |
display: none; }
|
539 |
|
540 |
.tinv-wishlist .tinv-lists-nav {
|
541 |
-
margin-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
|
543 |
.tinv-wishlist .tinv-next {
|
544 |
display: inline-block;
|
@@ -587,6 +618,12 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
587 |
.tinv-wishlist .product-action .button .tinvwl-txt {
|
588 |
display: none; } }
|
589 |
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
@media only screen and (max-width: 640px) {
|
591 |
.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove, .tinv-wishlist table.tinvwl-table-manage-list thead th:not(.product-name) {
|
592 |
display: none; }
|
@@ -1260,8 +1297,7 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
1260 |
.tooltipped-multiline.tooltipped-w::after, .tooltipped-multiline.tooltipped-e::after {
|
1261 |
right: 100%; }
|
1262 |
|
1263 |
-
@media screen and (min-width: 0 \0
|
1264 |
-
) {
|
1265 |
.tooltipped-multiline::after {
|
1266 |
width: 250px; } }
|
1267 |
|
@@ -1271,6 +1307,6 @@ ul.products li.product .tinvwl_add_to_wishlist_button {
|
|
1271 |
.tooltipped-sticky.tooltipped-multiline::after {
|
1272 |
display: table-cell; }
|
1273 |
|
1274 |
-
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmNzcyIsInNvdXJjZXMiOlsicHVibGljLnNjc3MiLCJ3ZWJmb250LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3VDQUV1QztBQ0Z2Qzs7cUVBRXFFO0FBQ3JFLFVBQVU7RUFDVCxXQUFXLEVBQUUsZ0JBQWdCO0VBQzdCLEdBQUcsRUFBRSx5Q0FBeUM7RUFDOUMsR0FBRyxFQUFFLCtDQUErQyxDQUFDLDJCQUEyQixFQUNoRix5Q0FBeUMsQ0FBQyxrQkFBa0IsRUFDNUQsMENBQTBDLENBQUMsY0FBYyxFQUN6RCx3REFBd0QsQ0FBQyxhQUFhO0VBQ3RFLFdBQVcsRUFBRSxNQUFNO0VBQ25CLFVBQVUsRUFBRSxNQUFNOztBQUduQixBQUFBLFFBQVEsQ0FBQztFQUNSLGdGQUFnRjtFQUNoRixXQUFXLEVBQUUsMkJBQTJCO0VBQ3hDLEtBQUssRUFBRSxJQUFJO0VBQ1gsVUFBVSxFQUFFLE1BQU07RUFDbEIsV0FBVyxFQUFFLE1BQU07RUFDbkIsWUFBWSxFQUFFLE1BQU07RUFDcEIsY0FBYyxFQUFFLElBQUk7RUFDcEIsV0FBVyxFQUFFLENBQUM7RUFFZCx1Q0FBdUM7RUFDdkMsc0JBQXNCLEVBQUUsV0FBVztFQUNuQyx1QkFBdUIsRUFBRSxTQUFTLEdBQ2xDOztBQUVELEFBQUEsZ0JBQWdCLEFBQUEsT0FBTyxDQUFDO0VBQ3ZCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsaUJBQWlCLEFBQUEsT0FBTyxDQUFDO0VBQ3hCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsbUJBQW1CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsZUFBZSxBQUFBLE9BQU8sQ0FBQztFQUN0QixPQUFPLEVBQUUsT0FBTyxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxPQUFPLENBQUM7RUFDckIsT0FBTyxFQUFFLE9BQU8sR0FDaEI7O0FBRUQsQUFBQSxrQkFBa0IsQUFBQSxPQUFPLENB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 */
|
1275 |
|
1276 |
/*# sourceMappingURL=public.css.map */
|
498 |
margin-right: 0; }
|
499 |
|
500 |
.tinv-wishlist .social-buttons {
|
501 |
+
text-align: right; }
|
502 |
.tinv-wishlist .social-buttons > span, .tinv-wishlist .social-buttons > ul {
|
503 |
display: inline-block;
|
504 |
vertical-align: middle; }
|
510 |
list-style: none; }
|
511 |
.tinv-wishlist .social-buttons li:last-child {
|
512 |
margin-right: 0; }
|
513 |
+
.tinv-wishlist .social-buttons li a.social {
|
514 |
display: -webkit-box;
|
515 |
display: -ms-flexbox;
|
516 |
display: flex;
|
526 |
-webkit-box-shadow: none;
|
527 |
box-shadow: none;
|
528 |
border: 0;
|
529 |
+
font-size: 20px;
|
530 |
+
text-decoration: none; }
|
531 |
+
.tinv-wishlist .social-buttons li a.social.white {
|
532 |
color: #ffffff; }
|
533 |
+
.tinv-wishlist .social-buttons li a.social.dark {
|
534 |
color: #000000; }
|
535 |
+
.tinv-wishlist .social-buttons li a.social i {
|
536 |
line-height: 2em; }
|
537 |
|
538 |
.tinv-wishlist .navigation-button .tinv-create-list > a.tinvwl-no-icon > i, .tinv-wishlist .navigation-button li > a.tinvwl-no-icon > i {
|
539 |
display: none; }
|
540 |
|
541 |
.tinv-wishlist .tinv-lists-nav {
|
542 |
+
margin-top: 35px;
|
543 |
+
margin-bottom: 35px;
|
544 |
+
display: -webkit-box;
|
545 |
+
display: -ms-flexbox;
|
546 |
+
display: flex;
|
547 |
+
-webkit-box-orient: horizontal;
|
548 |
+
-webkit-box-direction: normal;
|
549 |
+
-ms-flex-direction: row;
|
550 |
+
flex-direction: row;
|
551 |
+
-ms-flex-wrap: wrap;
|
552 |
+
flex-wrap: wrap;
|
553 |
+
width: 100%; }
|
554 |
+
.tinv-wishlist .tinv-lists-nav > * {
|
555 |
+
display: -webkit-box;
|
556 |
+
display: -ms-flexbox;
|
557 |
+
display: flex;
|
558 |
+
-webkit-box-orient: vertical;
|
559 |
+
-webkit-box-direction: normal;
|
560 |
+
-ms-flex-direction: column;
|
561 |
+
flex-direction: column;
|
562 |
+
-ms-flex-preferred-size: 100%;
|
563 |
+
flex-basis: 100%;
|
564 |
+
-webkit-box-flex: 1;
|
565 |
+
-ms-flex: 1;
|
566 |
+
flex: 1;
|
567 |
+
text-align: center;
|
568 |
+
-webkit-box-pack: center;
|
569 |
+
-ms-flex-pack: center;
|
570 |
+
justify-content: center; }
|
571 |
+
.tinv-wishlist .tinv-lists-nav > span {
|
572 |
+
font-weight: 700; }
|
573 |
|
574 |
.tinv-wishlist .tinv-next {
|
575 |
display: inline-block;
|
618 |
.tinv-wishlist .product-action .button .tinvwl-txt {
|
619 |
display: none; } }
|
620 |
|
621 |
+
@media only screen and (max-width: 1023px) {
|
622 |
+
.tinv-wishlist .tinv-lists-nav a.tinv-prev > i, .tinv-wishlist .tinv-lists-nav a.tinv-next > i {
|
623 |
+
margin: 0; }
|
624 |
+
.tinv-wishlist .tinv-lists-nav a.tinv-prev > span, .tinv-wishlist .tinv-lists-nav a.tinv-next > span {
|
625 |
+
display: none; } }
|
626 |
+
|
627 |
@media only screen and (max-width: 640px) {
|
628 |
.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove, .tinv-wishlist table.tinvwl-table-manage-list thead th:not(.product-name) {
|
629 |
display: none; }
|
1297 |
.tooltipped-multiline.tooltipped-w::after, .tooltipped-multiline.tooltipped-e::after {
|
1298 |
right: 100%; }
|
1299 |
|
1300 |
+
@media screen and (min-width: 0 \0 ) {
|
|
|
1301 |
.tooltipped-multiline::after {
|
1302 |
width: 250px; } }
|
1303 |
|
1307 |
.tooltipped-sticky.tooltipped-multiline::after {
|
1308 |
display: table-cell; }
|
1309 |
|
1310 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLmNzcyIsInNvdXJjZXMiOlsicHVibGljLnNjc3MiLCJ3ZWJmb250LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3VDQUV1QztBQ0Z2Qzs7cUVBRXFFO0FBQ3JFLFVBQVU7RUFDVCxXQUFXLEVBQUUsZ0JBQWdCO0VBQzdCLEdBQUcsRUFBRSx5Q0FBeUM7RUFDOUMsR0FBRyxFQUFFLCtDQUErQyxDQUFDLDJCQUEyQixFQUNoRix5Q0FBeUMsQ0FBQyxrQkFBa0IsRUFDNUQsMENBQTBDLENBQUMsY0FBYyxFQUN6RCx3REFBd0QsQ0FBQyxhQUFhO0VBQ3RFLFdBQVcsRUFBRSxNQUFNO0VBQ25CLFVBQVUsRUFBRSxNQUFNOztBQUduQixBQUFBLFFBQVEsQ0FBQztFQUNSLGdGQUFnRjtFQUNoRixXQUFXLEVBQUUsMkJBQTJCO0VBQ3hDLEtBQUssRUFBRSxJQUFJO0VBQ1gsVUFBVSxFQUFFLE1BQU07RUFDbEIsV0FBVyxFQUFFLE1BQU07RUFDbkIsWUFBWSxFQUFFLE1BQU07RUFDcEIsY0FBYyxFQUFFLElBQUk7RUFDcEIsV0FBVyxFQUFFLENBQUM7RUFFZCx1Q0FBdUM7RUFDdkMsc0JBQXNCLEVBQUUsV0FBVztFQUNuQyx1QkFBdUIsRUFBRSxTQUFTLEdBQ2xDOztBQUVELEFBQUEsZ0JBQWdCLEFBQUEsT0FBTyxDQUFDO0VBQ3ZCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsaUJBQWlCLEFBQUEsT0FBTyxDQUFDO0VBQ3hCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsbUJBQW1CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsZUFBZSxBQUFBLE9BQU8sQ0FBQztFQUN0QixPQUFPLEVBQUUsT0FBTyxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxPQUFPLENBQUM7RUFDckIsT0FBTyxFQUFFLE9BQU8sR0FDaEI7O0FBRUQsQUFBQSxrQkFBa0IsQUFBQSxPQUFPLENB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 */
|
1311 |
|
1312 |
/*# sourceMappingURL=public.css.map */
|
assets/css/public.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["public.scss","public.css","webfont.scss"],"names":[],"mappings":"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","file":"public.css","sourcesContent":["/*------------------------------------*\r\n\t$WEBFONT\r\n*------------------------------------*/\r\n@import \"webfont\";\r\n\r\n.tinv-wishlist {\r\n\tform, p:last-child, table {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n}\r\n\r\n.tinv-wishlist * {\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.tinvwl-wishlist {\r\n\t:after, :before {\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n}\r\n\r\n.tinv-wishlist {\r\n\tselect {\r\n\t\twidth: 140px;\r\n\t}\r\n\r\n\tul {\r\n\t\tlist-style: none;\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t}\r\n\r\n\t.tinvwl_add_to_wishlist_button {\r\n\t\t&.tinvwl-icon-heart-plus.no-txt:before, &.tinvwl-icon-heart.no-txt:before {\r\n\t\t\tmargin-top: -10px;\r\n\t\t\tmargin-left: -10px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.woocommerce.tinv-wishlist {\r\n\t#respond input#submit.alt, a.button.alt, button.button.alt, input.button.alt {\r\n\t\ttext-align: center;\r\n\t}\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.button i, .navigation-button a i {\r\n\t\tmargin-right: 6px;\r\n\t}\r\n\r\n\tinput {\r\n\t\t&[type=\"button\"] i, &[type=\"reset\"] i, &[type=\"submit\"] i {\r\n\t\t\tmargin-right: 6px;\r\n\t\t}\r\n\t}\r\n\r\n\ta.tinv-close-modal i {\r\n\t\tmargin-right: 0;\r\n\t}\r\n}\r\n\r\na.wishlist_products_counter {\r\n\ttext-decoration: none;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart.tinvwl_add_to_wishlist_button:before, a.wishlist_products_counter.top_wishlist-heart:before, span.wishlist_products_counter.top_wishlist-heart:before, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart:before {\r\n\tcontent: '\\e909';\r\n\tdisplay: inline-block;\r\n\tfont-family: tinvwl-webfont !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tfont-size: 20px;\r\n\tvertical-align: sub;\r\n\tmargin-right: 5px;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, a.wishlist_products_counter.top_wishlist-heart-plus:before, span.wishlist_products_counter.top_wishlist-heart-plus:before, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart-plus:before {\r\n\tcontent: '\\e906';\r\n\tdisplay: inline-block;\r\n\tfont-family: tinvwl-webfont !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tfont-size: 20px;\r\n\tvertical-align: sub;\r\n\tmargin-right: 5px;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button {\r\n\t&.tinvwl-icon-heart-plus.no-txt, &.tinvwl-icon-heart.no-txt {\r\n\t\tposition: relative;\r\n\t\twidth: 36px;\r\n\t\theight: 36px;\r\n\t\tvertical-align: sub;\r\n\t}\r\n}\r\n\r\na.wishlist_products_counter.top_wishlist-heart-plus.no-txt, span.wishlist_products_counter.top_wishlist-heart-plus.no-txt {\r\n\tposition: relative;\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\tvertical-align: sub;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinvwl_add_to_wishlist_button {\r\n\t\t&.tinvwl-icon-heart-plus.no-txt:before, &.tinvwl-icon-heart.no-txt:before {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 50%;\r\n\t\t\tleft: 50%;\r\n\t\t\tmargin-right: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl-button.tinvwl_add_to_wishlist_button {\r\n\t\t&.tinvwl-icon-heart-plus.no-txt, &.tinvwl-icon-heart.no-txt {\r\n\t\t\tpadding-left: 1em;\r\n\t\t\tvertical-align: bottom;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before {\r\n\t\tcontent: '\\e908';\r\n\t}\r\n}\r\n\r\n.woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart.tinvwl_add_to_wishlist_button.tinvwl-product-in-list:before, a.wishlist_products_counter.top_wishlist-heart.wishlist-counter-with-products:before, span.wishlist_products_counter.top_wishlist-heart.wishlist-counter-with-products:before {\r\n\tcontent: '\\e908';\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.tinvwl-product-in-list:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.tinvwl-product-in-list:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart-plus.tinvwl_add_to_wishlist_button.tinvwl-product-in-list:before, a.wishlist_products_counter.top_wishlist-heart-plus.wishlist-counter-with-products:before, span.wishlist_products_counter.top_wishlist-heart-plus.wishlist-counter-with-products:before {\r\n\tcontent: '\\e907';\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-white:before, a.wishlist_products_counter.top_wishlist-white:before, span.wishlist_products_counter.top_wishlist-white:before {\r\n\tcolor: #FFF;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-black:before, a.wishlist_products_counter.top_wishlist-black:before, span.wishlist_products_counter.top_wishlist-black:before {\r\n\tcolor: #000;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t&.tinvwl-before-add-to-cart .tinvwl_add_to_wishlist_button {\r\n\t\tmargin-bottom: 15px;\r\n\t}\r\n\r\n\t&.tinvwl-after-add-to-cart .tinvwl_add_to_wishlist_button {\r\n\t\tmargin-top: 15px;\r\n\t}\r\n\r\n\t.tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt {\r\n\t\tpadding: 10px 11px;\r\n\t\tline-height: 1;\r\n\t}\r\n}\r\n\r\na.wishlist_products_counter.top_wishlist-custom.no-txt, span.wishlist_products_counter.top_wishlist-custom.no-txt {\r\n\tpadding: 10px 11px;\r\n\tline-height: 1;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom img, a.wishlist_products_counter.top_wishlist-custom img, span.wishlist_products_counter.top_wishlist-custom img {\r\n\tdisplay: inline-block !important;\r\n\tvertical-align: baseline;\r\n\twidth: auto !important;\r\n\tmax-width: 16px;\r\n\tmax-height: 16px;\r\n\tmargin-bottom: 0;\r\n\tmargin: 0 6px 0 0 !important;\r\n}\r\n\r\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt img, a.wishlist_products_counter.top_wishlist-custom.no-txt img, span.wishlist_products_counter.top_wishlist-custom.no-txt img {\r\n\tmargin-right: 0 !important;\r\n}\r\n\r\n.single-product div.product form.cart .tinvwl-button.tinvwl_add_to_wishlist_button, div.product form.cart .tinvwl_add_to_wishlist_button {\r\n\tfloat: none;\r\n}\r\n\r\nul.products li.product .tinvwl_add_to_wishlist_button {\r\n\tmargin-top: 1em;\r\n}\r\n\r\n.tinvwl_add_to_wishlist_button {\r\n\tdisplay: inline-block;\r\n\tcursor: pointer;\r\n}\r\n\r\n.tinv-wishlist.woocommerce .stock.in-stock:before {\r\n\tcontent: none;\r\n}\r\n\r\n.tinv-wraper.tinv-wishlist {\r\n\tfont-size: 100%;\r\n}\r\n\r\n.tinv-create-list {\r\n\tli {\r\n\t\tinput[type=radio] {\r\n\t\t\tmargin-right: 10px;\r\n\t\t}\r\n\r\n\t\t+ li {\r\n\t\t\tmargin-top: 15px;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl-input-group + ul {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n}\r\n\r\n.tinv-search-list {\r\n\tmargin-bottom: 36px;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinv-header {\r\n\t\tmargin-bottom: 30px;\r\n\t}\r\n\r\n\ttable {\r\n\t\tposition: relative;\r\n\t\ttable-layout: auto;\r\n\t\tmargin-bottom: 30px;\r\n\t\tz-index: 2;\r\n\t}\r\n}\r\n\r\n.tinv-overlay {\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tposition: fixed;\r\n\ttransition: opacity .3s ease, visibility .3s ease;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinv-modal {\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tposition: fixed;\r\n\t\ttransition: opacity .3s ease, visibility .3s ease;\r\n\t}\r\n\r\n\ttable {\r\n\t\t&.tinvwl-table-manage-list {\r\n\t\t\tmargin-bottom: 27px;\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\tinput[type=checkbox] {\r\n\t\t\tmargin-right: 0;\r\n\t\t}\r\n\r\n\t\ttd, th {\r\n\t\t\tpadding: 1em;\r\n\t\t\tvertical-align: middle;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl-table-manage-list {\r\n\t\t.product-cb {\r\n\t\t\twidth: 35px;\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\r\n\t\t.product-remove {\r\n\t\t\twidth: 46px;\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\t}\r\n\r\n\t.product-remove button {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-content: center;\r\n\t\tmargin: 0 auto;\r\n\t\twidth: 27px;\r\n\t\theight: 27px;\r\n\t\tborder-radius: 50%;\r\n\t\tpadding: 0;\r\n\t\tbox-shadow: none;\r\n\t\tborder: none;\r\n\t\tbackground-color: #f7f7f7;\r\n\t\tcolor: #000000;\r\n\t\tfont-size: 20px;\r\n\t\tpadding-left: 3px;\r\n\t}\r\n\r\n\t.product-thumbnail {\r\n\t\tmin-width: 100px;\r\n\t\twidth: 100px;\r\n\r\n\t\t.wp-post-image {\r\n\t\t\tmargin-bottom: 0;\r\n\t\t}\r\n\t}\r\n\r\n\ttd.product-name a + .variation {\r\n\t\tmargin-top: 2px;\r\n\t}\r\n\r\n\t.product-stock {\r\n\t\ti {\r\n\t\t\tmargin-right: 15px;\r\n\t\t}\r\n\r\n\t\tp {\r\n\t\t\tdisplay: table;\r\n\t\t}\r\n\r\n\t\tspan {\r\n\t\t\tdisplay: table-cell;\r\n\t\t\tvertical-align: middle;\r\n\t\t}\r\n\t}\r\n\r\n\t.product-action > .button > i, .tinvwl-table-manage-list .product-action button[name=tinvwl-remove], table thead th .tinvwl-mobile {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t&.woocommerce {\r\n\t\t.product-quantity {\r\n\t\t\twidth: 80px;\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\r\n\t\ttable .quantity .qty {\r\n\t\t\tmax-width: 100%;\r\n\t\t\twidth: 62px;\r\n\t\t\ttext-align: left;\r\n\t\t}\r\n\t}\r\n\r\n\t.product-action {\r\n\t\twidth: 135px;\r\n\t\ttext-align: center;\r\n\r\n\t\t.button {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t.tinvwl_move_product_button {\r\n\t\t\tmargin-top: 5px;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl-table-manage-list .product-action > button[name=tinvwl-remove] > i {\r\n\t\tmargin-right: 0;\r\n\t}\r\n\r\n\t.wishlist-cb {\r\n\t\twidth: 33px;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.wishlist-name {\r\n\t\t.tinvwl-rename-input input {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t.tinvwl-rename-button {\r\n\t\t\tfloat: right;\r\n\r\n\t\t\t> i {\r\n\t\t\t\tmargin-right: 10px;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.wishlist-privacy, table:not(.tinvwl-public) .wishlist-date {\r\n\t\twidth: 18%;\r\n\t}\r\n\r\n\t.wishlist-privacy select {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.wishlist-name {\r\n\t\twidth: 45%;\r\n\t}\r\n\r\n\t.wishlist-action {\r\n\t\twidth: 120px;\r\n\t\ttext-align: center;\r\n\r\n\t\tbutton[value=manage_remove] > i {\r\n\t\t\tdisplay: none;\r\n\t\t\tmargin-right: 0;\r\n\t\t}\r\n\t}\r\n\r\n\ttfoot {\r\n\t\t.tinvwl-to-right .tinv-create-list {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tvertical-align: middle;\r\n\r\n\t\t\t> a.button {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tinvwl-to-left {\r\n\t\t\t+ .tinvwl-to-right {\r\n\t\t\t\tmargin-top: -10px;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(:empty) {\r\n\t\t\t\tfloat: left;\r\n\t\t\t\twidth: 35%;\r\n\t\t\t\tmargin-right: 2%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tinvwl-to-right {\r\n\t\t\tfloat: left;\r\n\t\t\twidth: 63%;\r\n\t\t\ttext-align: right;\r\n\r\n\t\t\t> * {\r\n\t\t\t\tmargin: 10px 0 0;\r\n\t\t\t\tvertical-align: middle;\r\n\r\n\t\t\t\t+ * {\r\n\t\t\t\t\tmargin-left: 10px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tinvwl-to-left:empty + .tinvwl-to-right {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t.social-buttons + .tinv-wishlist-clear + .navigation-button {\r\n\t\tmargin-top: 16px;\r\n\t}\r\n\r\n\t.navigation-button {\r\n\t\tmargin-top: -10px;\r\n\r\n\t\t> li {\r\n\t\t\tfloat: left;\r\n\r\n\t\t\t> {\r\n\t\t\t\t.tinv-create-list > a, a {\r\n\t\t\t\t\tmargin-right: 30px;\r\n\t\t\t\t\tmargin-top: 10px;\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tinv-create-list > a.button, a.button {\r\n\t\t\t\t\tmargin-right: 10px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&:last-child > {\r\n\t\t\t\t.tinv-create-list > a, a {\r\n\t\t\t\t\tmargin-right: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.social-buttons {\r\n\t\tfloat: right;\r\n\r\n\t\t> {\r\n\t\t\tspan, ul {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tvertical-align: middle;\r\n\t\t\t}\r\n\r\n\t\t\tspan {\r\n\t\t\t\tmargin-right: 27px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tli {\r\n\t\t\tfloat: left;\r\n\t\t\tmargin-right: 5px;\r\n\t\t\tlist-style: none;\r\n\r\n\t\t\t&:last-child {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\r\n\t\t\ta {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\talign-content: center;\r\n\t\t\t\tjustify-content: center;\r\n\t\t\t\twidth: 2em;\r\n\t\t\t\theight: 2em;\r\n\t\t\t\tborder-radius: 50%;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t\tbox-shadow: none;\r\n\t\t\t\tborder: 0;\r\n\t\t\t\tfont-size: 20px;\r\n\r\n\t\t\t\t&.white {\r\n\t\t\t\t\tcolor: #ffffff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.dark {\r\n\t\t\t\t\tcolor: #000000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti {\r\n\t\t\t\t\tline-height: 2em;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.navigation-button {\r\n\t\t.tinv-create-list > a.tinvwl-no-icon > i, li > a.tinvwl-no-icon > i {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinv-lists-nav {\r\n\t\tmargin-bottom: 35px;\r\n\t}\r\n\r\n\t.tinv-next {\r\n\t\tdisplay: inline-block;\r\n\t\tfloat: left;\r\n\t}\r\n\r\n\t.tinv-prev {\r\n\t\tdisplay: inline-block;\r\n\t\tfloat: left;\r\n\t\tmargin-right: 35px !important;\r\n\t}\r\n\r\n\t.tinv-prev i {\r\n\t\tmargin-left: 0;\r\n\t\tmargin-right: 18px;\r\n\t}\r\n\r\n\t.tinv-next i {\r\n\t\tmargin-left: 18px;\r\n\t\tmargin-right: 0;\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n\t.tinv-wishlist {\r\n\t\t.tinvwl-table-manage-lists:not(.tinvwl-public) {\r\n\t\t\tmargin-top: 0;\r\n\t\t}\r\n\r\n\t\t.tinvwl-table-manage-list {\r\n\t\t\t.product-remove {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\r\n\t\t\t.product-action button[name=tinvwl-remove] {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tmargin-top: 5px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.product-action {\r\n\t\t\twidth: 60px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) and (min-width: 641px) {\r\n\t.tinv-wishlist {\r\n\t\t.tinvwl-table-manage-list td.product-stock p {\r\n\t\t\tdisplay: block;\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\r\n\t\t.product-stock span {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t\t.tinvwl-table-manage-list td.product-stock {\r\n\t\t\ti {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\r\n\t\t\t.tinvwl-txt {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.product-thumbnail {\r\n\t\t\tmax-width: 76px;\r\n\t\t\twidth: 76px;\r\n\t\t}\r\n\r\n\t\t.product-action .button {\r\n\t\t\t> i {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\r\n\t\t\t.tinvwl-txt {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.tinv-wishlist {\r\n\t\ttable {\r\n\t\t\t&.tinvwl-table-manage-list {\r\n\t\t\t\ttbody td.product-remove, thead th:not(.product-name) {\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-lists thead th:not(.wishlist-name) {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthead th .tinvwl-full {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\ttable {\r\n\t\t\t&.tinvwl-table-manage-list thead th.product-name, &.tinvwl-table-manage-lists thead th.wishlist-name {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t}\r\n\r\n\t\t\tthead th .tinvwl-mobile {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-list tbody td {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\twidth: 100% !important;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-lists {\r\n\t\t\t\ttbody td, &.tinvwl-public tbody td {\r\n\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\twidth: 100% !important;\r\n\t\t\t\t\ttext-align: center;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-list tbody td:not(:last-child) {\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-lists {\r\n\t\t\t\ttbody td:not(:last-child), &.tinvwl-public tbody td:not(:last-child) {\r\n\t\t\t\t\tborder-bottom: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.product-stock p {\r\n\t\t\tmargin: 0 auto;\r\n\t\t}\r\n\r\n\t\t.product-thumbnail img {\r\n\t\t\tmargin: 0 auto;\r\n\t\t\tmax-width: 80px;\r\n\t\t}\r\n\r\n\t\t&.woocommerce table .quantity .qty {\r\n\t\t\ttext-align: center;\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t.product-action .tinvwl_move_product_button {\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\ttable {\r\n\t\t\t&.tinvwl-table-manage-list tfoot td {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-table-manage-lists {\r\n\t\t\t\t.wishlist-action button[value=manage_remove] {\r\n\t\t\t\t\twidth: 100%;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.wishlist-name .tinvwl-rename-button {\r\n\t\t\t\t\tfloat: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n\t.tinv-wishlist {\r\n\t\t.wishlist-name .tinvwl-rename-button > i, tfoot .tinvwl-to-left:not(:empty) {\r\n\t\t\tmargin-right: 0;\r\n\t\t}\r\n\r\n\t\t.wishlist-name .tinvwl-rename-button span {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\t.wishlist-action {\r\n\t\t\twidth: 60px;\r\n\t\t}\r\n\r\n\t\ttfoot {\r\n\t\t\t.tinvwl-to-left:not(:empty) {\r\n\t\t\t\tfloat: none;\r\n\t\t\t\twidth: auto;\r\n\t\t\t}\r\n\r\n\t\t\t.tinvwl-to-right {\r\n\t\t\t\tfloat: none;\r\n\t\t\t\twidth: auto;\r\n\t\t\t\ttext-align: left;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) and (min-width: 641px) {\r\n\t.tinv-wishlist {\r\n\t\t.wishlist-action button[value=\"manage_remove\"] {\r\n\t\t\tspan {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\r\n\t\t\t> i {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttfoot .tinvwl-to-left + .tinvwl-to-right {\r\n\t\t\tmargin-top: 0;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.tinv-wishlist {\r\n\t\tbutton {\r\n\t\t\t&[value=\"manage_apply\"] .tinvwl-mobile, &[value=\"product_apply\"] .tinvwl-mobile {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttfoot .tinvwl-to-right .tinv-create-list {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t\t.tinvwl-table-manage-list tfoot .tinvwl-to-right {\r\n\t\t\t.button, button {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tmargin: 10px 0 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tinvwl-table-manage-lists tfoot .tinvwl-to-right {\r\n\t\t\t.button, button {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tmargin: 10px 0 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttfoot {\r\n\t\t\t.tinvwl-to-right {\r\n\t\t\t\t> * {\r\n\t\t\t\t\tmargin: 10px 0 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.button:first-child, button:first-child {\r\n\t\t\t\t\tmargin-top: 0 !important;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tinvwl-to-left + .tinvwl-to-right {\r\n\t\t\t\tmargin-top: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n\t.tinv-wishlist {\r\n\t\t.social-buttons {\r\n\t\t\t+ .tinv-wishlist-clear + .navigation-button {\r\n\t\t\t\tmargin-top: 30px;\r\n\t\t\t}\r\n\r\n\t\t\tfloat: none;\r\n\t\t\twidth: auto;\r\n\t\t\ttext-align: left;\r\n\t\t\tmargin-top: 20px;\r\n\t\t}\r\n\r\n\t\t.tinv-login form input[name=login] {\r\n\t\t\tmin-width: auto;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.tinv-wishlist {\r\n\t\t.social-buttons {\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\r\n\t\t.navigation-button {\r\n\t\t\t> li {\r\n\t\t\t\twidth: 20%;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-1 > li {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-2 > li {\r\n\t\t\t\twidth: 50%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-3 > li {\r\n\t\t\t\twidth: 33%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-4 > li {\r\n\t\t\t\twidth: 25%;\r\n\t\t\t}\r\n\r\n\t\t\t> li + li {\r\n\t\t\t\twidth: 20%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-1 > li + li {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-2 > li + li {\r\n\t\t\t\twidth: 50%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-3 > li + li {\r\n\t\t\t\twidth: 33%;\r\n\t\t\t}\r\n\r\n\t\t\t&.tinvwl-btns-count-4 > li + li {\r\n\t\t\t\twidth: 25%;\r\n\t\t\t}\r\n\r\n\t\t\t> li > {\r\n\t\t\t\t.tinv-create-list > a, a {\r\n\t\t\t\t\twidth: calc(100% - 10px);\r\n\t\t\t\t\tmargin-right: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tinv-create-list > a .tinvwl-txt, li > a .tinvwl-txt {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\r\n\t\t\t.tinv-create-list > a > i, li > a > i {\r\n\t\t\t\tdisplay: inline-block !important;\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.social-buttons > span {\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-top: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 5px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 667px) {\r\n\t.tinv-wishlist.woocommerce .tinv-login form {\r\n\t\t.form-row-first, .form-row-last {\r\n\t\t\tfloat: none;\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t.form-row-first {\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\r\n\t\t.form-row-last {\r\n\t\t\tpadding: 0;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.tinvwl-input-group-btn {\r\n\t\t\tdisplay: block;\r\n\t\t\tpadding: 0;\r\n\t\t\twidth: auto;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tinv-overlay {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tvisibility: hidden;\r\n\topacity: 0;\r\n\tbackground: #191919;\r\n}\r\n\r\n.tinv-modal.tinv-modal-open .tinv-overlay {\r\n\tvisibility: visible;\r\n\topacity: .5;\r\n}\r\n\r\n.admin-bar .tinv-wishlist .tinv-modal {\r\n\tpadding-top: 32px !important;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinv-modal {\r\n\t\toverflow-y: auto;\r\n\t\toverflow-x: hidden;\r\n\t\twidth: 0;\r\n\t\theight: 0;\r\n\t\tz-index: 9999;\r\n\t\toutline: 0 !important;\r\n\t\t-webkit-backface-visibility: hidden;\r\n\t\tvisibility: hidden;\r\n\t\topacity: 0;\r\n\t\ttext-align: left;\r\n\r\n\t\t.tinv-modal-inner {\r\n\t\t\tposition: relative;\r\n\t\t\tmargin: 0 auto;\r\n\t\t\tbackground-color: #fff;\r\n\t\t\tmax-width: 360px;\r\n\t\t\tpadding: 40px;\r\n\t\t}\r\n\r\n\t\t&.tinv-modal-open {\r\n\t\t\tvisibility: visible;\r\n\t\t\topacity: 1;\r\n\t\t\twidth: 100%;\r\n\t\t\theight: 100%;\r\n\t\t}\r\n\r\n\t\t.tinv-close-modal {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 17px;\r\n\t\t\tright: 14px;\r\n\t\t\twidth: 26px;\r\n\t\t\theight: 26px;\r\n\t\t\tline-height: 26px;\r\n\t\t\tfont-size: 12px;\r\n\t\t\ttext-align: center;\r\n\t\t\tborder-radius: 50%;\r\n\t\t\tborder-bottom: 0;\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tbackground-color: #ebe9eb;\r\n\t\t}\r\n\r\n\t\t.icon_big_heart_check, .icon_big_times, img {\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin: 0 auto;\r\n\t\t\tmargin-bottom: 25px;\r\n\t\t\topacity: 1 !important;\r\n\t\t}\r\n\r\n\t\tul {\r\n\t\t\toverflow: visible;\r\n\t\t\tlist-style: disc;\r\n\t\t\tmargin: 10px 0 0 20px;\r\n\t\t}\r\n\r\n\t\tli {\r\n\t\t\tlist-style: disc !important;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinv-create-list .tinv-modal ul, &.tinv-create-list form ul {\r\n\t\tlist-style: none !important;\r\n\t\tmargin: 25px 0 0;\r\n\t}\r\n\r\n\t.tinv-create-list .tinv-modal li, &.tinv-create-list form li {\r\n\t\tlist-style: none !important;\r\n\t}\r\n\r\n\t.tinv-modal {\r\n\t\t.already-in {\r\n\t\t\tmargin-bottom: 35px;\r\n\t\t}\r\n\r\n\t\t.delete-notification {\r\n\t\t\tmargin-bottom: 25px;\r\n\t\t}\r\n\r\n\t\t.already-in ul {\r\n\t\t\toverflow: visible;\r\n\t\t\tmargin: 12px 0 27px 17px;\r\n\t\t}\r\n\r\n\t\tselect {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\tbutton + {\r\n\t\t\t.button, button {\r\n\t\t\t\tmargin-top: 12px;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinput + button {\r\n\t\t\tmargin-top: 12px;\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\tlabel + {\r\n\t\t\tbutton, input {\r\n\t\t\t\tmargin-top: 12px;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tselect + {\r\n\t\t\tbutton, input {\r\n\t\t\t\tmargin-top: 12px;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media screen and (max-width: 782px) {\r\n\t.admin-bar .tinv-wishlist .tinv-modal {\r\n\t\tpadding-top: 46px !important;\r\n\t}\r\n}\r\n\r\n@media screen and (max-width: 600px) {\r\n\t.admin-bar .tinv-wishlist .tinv-modal {\r\n\t\tpadding-top: 0 !important;\r\n\t}\r\n\t.tinv-wishlist .tinv-modal .tinv-close-modal {\r\n\t\tposition: static;\r\n\t\tdisplay: block;\r\n\t\tmargin: 0 auto 20px;\r\n\t}\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinv-modal {\r\n\t\t.already-in + label {\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-top: 6px;\r\n\t\t}\r\n\r\n\t\tlabel select {\r\n\t\t\tmargin-top: 8px;\r\n\t\t}\r\n\r\n\t\t.delete-notification + button {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl_added_to_wishlist, .tinvwl_created_wishlist {\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tinvwl_added_to_wishlist .tinv-txt {\r\n\t\tmargin-bottom: 25px;\r\n\t}\r\n\r\n\t.tinvwl_created_wishlist {\r\n\t\t.tinv-txt {\r\n\t\t\tmargin-bottom: 25px;\r\n\t\t}\r\n\r\n\t\tbutton {\r\n\t\t\tmargin-top: 0;\r\n\t\t\tmargin-bottom: 10px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.woocommerce .tinv-wishlist .tinvwl_added_to_wishlist.tinv-modal button.button {\r\n\tmargin-top: 0;\r\n\tmargin-bottom: 10px;\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinv-modal {\r\n\t\t.tinvwl-buttons-group {\r\n\t\t\tmargin-top: 20px;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinvwl-buttons-group {\r\n\t\tbutton {\r\n\t\t\twidth: 100%;\r\n\r\n\t\t\t+ button {\r\n\t\t\t\tmargin-top: 7px;\r\n\t\t\t}\r\n\r\n\t\t\ti {\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t&.ftinvwl-heart-o, &.ftinvwl-key, &.ftinvwl-times {\r\n\t\t\t\t\tfont-size: 20px;\r\n\r\n\t\t\t\t\t&::before {\r\n\t\t\t\t\t\tposition: relative;\r\n\t\t\t\t\t\ttop: 3px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t+ button {\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-top: 7px;\r\n\t\t}\r\n\t}\r\n\r\n\t.tinv-modal h2 {\r\n\t\ttext-align: center;\r\n\t\tmargin: 0 0 35px;\r\n\t}\r\n\r\n\t.tinv-create-list .tinv-modal-inner {\r\n\t\tmax-width: 778px;\r\n\t\tpadding: 30px;\r\n\t}\r\n\r\n\t.tinvwl-has-error:not(.tinvwl-input-group), .tinvwl-input-group.tinvwl-has-error .form-control {\r\n\t\tborder: 2px solid #FF0000;\r\n\t}\r\n\r\n\t.tinvwl-has-error {\r\n\t\t&:not(.tinvwl-input-group) {\r\n\t\t\tborder: 2px solid #FF0000;\r\n\t\t}\r\n\r\n\t\t+ .tinvwl-error {\r\n\t\t\tpadding: 5px 0 0 5px;\r\n\t\t\tcolor: #FF0000;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.navigation-button, .social-buttons, .tinv-lists-nav {\r\n\t\tmargin-left: 12px;\r\n\t\tmargin-right: 12px;\r\n\t}\r\n}\r\n\r\n.tinvwl-tooltip {\r\n\tdisplay: none;\r\n}\r\n\r\n.tinvwl-input-group {\r\n\tposition: relative;\r\n\tdisplay: table;\r\n\tborder-collapse: separate;\r\n\r\n\t.form-control {\r\n\t\tposition: relative;\r\n\t\tz-index: 1;\r\n\t\tfloat: left;\r\n\t\theight: 38px;\r\n\t\twidth: 100%;\r\n\t\tmargin-bottom: 0;\r\n\r\n\t\t+ .tinvwl-input-group-btn {\r\n\t\t\tpadding-left: 15px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tinv-wishlist {\r\n\t.tinvwl-to-left .tinvwl-input-group .form-control + .tinvwl-input-group-btn {\r\n\t\tpadding-left: 10px;\r\n\t}\r\n\r\n\t.tinv-search-form .tinvwl-input-group .form-control + .tinvwl-input-group-btn {\r\n\t\tpadding-left: 9px;\r\n\t}\r\n}\r\n\r\n.tinvwl-input-group .form-control, .tinvwl-input-group-addon, .tinvwl-input-group-btn {\r\n\tdisplay: table-cell;\r\n}\r\n\r\n.tinvwl-input-group-addon, .tinvwl-input-group-btn {\r\n\twidth: 1%;\r\n\twhite-space: nowrap;\r\n\tvertical-align: top;\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.tinvwl-input-group {\r\n\t\twidth: 100%;\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 667px) {\r\n\t.tinvwl-input-group:not(.tinvwl-no-full) {\r\n\t\tdisplay: block;\r\n\r\n\t\t.form-control, .tinvwl-input-group-addon, .tinvwl-input-group-btn {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t\t.form-control {\r\n\t\t\tfloat: none;\r\n\t\t}\r\n\t}\r\n\t.tinv-wishlist .tinv-search-form .tinvwl-input-group:not(.tinvwl-no-full) .form-control + .tinvwl-input-group-btn {\r\n\t\tpadding-top: 10px;\r\n\t\tpadding-left: 0;\r\n\t}\r\n\t.tinvwl-input-group:not(.tinvwl-no-full) {\r\n\t\t.form-control + .tinvwl-input-group-btn {\r\n\t\t\tpadding-top: 10px;\r\n\t\t\tpadding-left: 0;\r\n\t\t}\r\n\r\n\t\t.tinvwl-input-group-addon {\r\n\t\t\twidth: 100%;\r\n\r\n\t\t\t> {\r\n\t\t\t\tbutton, input {\r\n\t\t\t\t\twidth: 100%;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tinvwl-input-group-btn {\r\n\t\t\twidth: 100%;\r\n\r\n\t\t\t> {\r\n\t\t\t\tbutton, input {\r\n\t\t\t\t\twidth: 100%;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tinv-table {\r\n\tdisplay: table;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.tinv-cell {\r\n\tdisplay: table-cell;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.tinv-wishlist .tinv-wishlist-clear {\r\n\tvisibility: visible;\r\n\twidth: auto;\r\n\theight: auto;\r\n}\r\n\r\n.tinv-wishlist-clear {\r\n\t&:before {\r\n\t\tcontent: \"\";\r\n\t\tdisplay: table;\r\n\t}\r\n\r\n\t&:after {\r\n\t\tcontent: \"\";\r\n\t\tdisplay: table;\r\n\t\tclear: both;\r\n\t}\r\n}\r\n\r\n.icon_big_heart_check {\r\n\tdisplay: inline-block;\r\n\twidth: 46px;\r\n\theight: 46px;\r\n\tfont-family: tinvwl-webfont !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tfont-size: 60px;\r\n}\r\n\r\n.icon_big_times {\r\n\tdisplay: inline-block;\r\n\twidth: 46px;\r\n\theight: 46px;\r\n\tfont-family: tinvwl-webfont !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tfont-size: 60px;\r\n\r\n\t&::before {\r\n\t\tcontent: \"\\e904\";\r\n\t\ttop: -7px;\r\n\t\tleft: -7px;\r\n\t\tposition: relative;\r\n\t}\r\n}\r\n\r\n.icon_big_heart_check::before {\r\n\tcontent: \"\\e90a\";\r\n\ttop: -7px;\r\n\tleft: -7px;\r\n\tposition: relative;\r\n}\r\n\r\n.tinvwl_add_to_wishlist_button {\r\n\t&.tinvwl-button.disabled-add-wishlist, &.disabled-add-wishlist {\r\n\t\topacity: 0.5 !important;\r\n\t\tcursor: not-allowed;\r\n\t}\r\n}\r\n\r\n.empty-name-wishlist {\r\n\tborder-color: #FF0000 !important;\r\n}\r\n\r\n.tinvwl_remove_from_wishlist-text {\r\n\tdisplay: none;\r\n}\r\n\r\n.tinvwl-product-in-list.tinvwl-product-make-remove {\r\n\t.tinvwl_remove_from_wishlist-text {\r\n\t\tdisplay: inline;\r\n\t}\r\n\r\n\t.tinvwl_add_to_wishlist-text {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n\t.tinv-wishlist .tinvwl-table-manage-list .product-remove {\r\n\t\tdisplay: table-cell;\r\n\t}\r\n}\r\n\r\n@media only screen and (max-width: 640px) {\r\n\t.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n\r\n\r\n// Tooltips\r\n// Aliases for easy use\r\n$spacer: 8px !default;\r\n$spacers: (\r\n\t0,\r\n\tround($spacer / 2),\r\n\t$spacer,\r\n\t$spacer * 2,\r\n\t$spacer * 3,\r\n\t$spacer * 4,\r\n\t$spacer * 5\r\n) !default;\r\n$spacer-0: nth($spacers, 1) !default; // 0\r\n$spacer-1: nth($spacers, 2) !default; // 4px\r\n$spacer-2: nth($spacers, 3) !default; // 8px\r\n$spacer-3: nth($spacers, 4) !default; // 16px\r\n$spacer-4: nth($spacers, 5) !default; // 24px\r\n$spacer-5: nth($spacers, 6) !default; // 32px\r\n$spacer-6: nth($spacers, 7) !default; // 40px\r\n// Em spacer variables\r\n$em-spacer-1: 0.0625em !default; // 1/16\r\n$em-spacer-2: 0.125em !default; // 1/8\r\n$em-spacer-3: 0.25em !default; // 1/4\r\n$em-spacer-4: 0.375em !default; // 3/8\r\n$em-spacer-5: 0.5em !default; // 1/2\r\n$em-spacer-6: 0.75em !default; // 3/4\r\n// Font stacks\r\n$body-font: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\r\n//\r\n//\r\n// -------- Grays --------\r\n$gray-000: #fafbfc !default;\r\n$gray-100: #f6f8fa !default;\r\n$gray-200: #e1e4e8 !default;\r\n$gray-300: #d1d5da !default;\r\n$gray-400: #959da5 !default;\r\n$gray-500: #6a737d !default;\r\n$gray-600: #586069 !default;\r\n$gray-700: #444d56 !default;\r\n$gray-800: #2f363d !default;\r\n$gray-900: #24292e !default; // body font color\r\n\r\n// -------- Blue --------\r\n$blue-000: #f1f8ff !default;\r\n$blue-100: #dbedff !default;\r\n$blue-200: #c8e1ff !default;\r\n$blue-300: #79b8ff !default;\r\n$blue-400: #2188ff !default;\r\n$blue-500: #0366d6 !default; // Default: Passes AA with #fff\r\n$blue-600: #005cc5 !default;\r\n$blue-700: #044289 !default;\r\n$blue-800: #032f62 !default;\r\n$blue-900: #05264c !default; // Passes with 1/2/300 blues\r\n\r\n// -------- Green --------\r\n$green-000: #f0fff4 !default;\r\n$green-100: #dcffe4 !default;\r\n$green-200: #bef5cb !default;\r\n$green-300: #85e89d !default;\r\n$green-400: #34d058 !default;\r\n$green-500: #28a745 !default; // Default. passes AA Large\r\n$green-600: #22863a !default; // Text green, passes AA on #fff\r\n$green-700: #176f2c !default;\r\n$green-800: #165c26 !default;\r\n$green-900: #144620 !default;\r\n\r\n// -------- Yellow --------\r\n$yellow-000: #fffdef !default;\r\n$yellow-100: #fffbdd !default;\r\n$yellow-200: #fff5b1 !default;\r\n$yellow-300: #ffea7f !default;\r\n$yellow-400: #ffdf5d !default;\r\n$yellow-500: #ffd33d !default;\r\n$yellow-600: #f9c513 !default;\r\n$yellow-700: #dbab09 !default;\r\n$yellow-800: #b08800 !default;\r\n$yellow-900: #735c0f !default;\r\n\r\n// -------- Orange --------\r\n$orange-000: #fff8f2 !default;\r\n$orange-100: #ffebda !default;\r\n$orange-200: #ffd1ac !default;\r\n$orange-300: #ffab70 !default;\r\n$orange-400: #fb8532 !default;\r\n$orange-500: #f66a0a !default; // Default. passes AA Large with #fff\r\n$orange-600: #e36209 !default;\r\n$orange-700: #d15704 !default;\r\n$orange-800: #c24e00 !default;\r\n$orange-900: #a04100 !default;\r\n\r\n// -------- Red --------\r\n$red-000: #ffeef0 !default;\r\n$red-100: #ffdce0 !default;\r\n$red-200: #fdaeb7 !default;\r\n$red-300: #f97583 !default;\r\n$red-400: #ea4a5a !default;\r\n$red-500: #d73a49 !default; // Default. passes AA\r\n$red-600: #cb2431 !default;\r\n$red-700: #b31d28 !default;\r\n$red-800: #9e1c23 !default;\r\n$red-900: #86181d !default;\r\n\r\n// -------- Purple --------\r\n$purple-000: #f5f0ff !default;\r\n$purple-100: #e6dcfd !default;\r\n$purple-200: #d1bcf9 !default;\r\n$purple-300: #b392f0 !default;\r\n$purple-400: #8a63d2 !default;\r\n$purple-500: #6f42c1 !default; // passes AA with #fff\r\n$purple-600: #5a32a3 !default;\r\n$purple-700: #4c2889 !default;\r\n$purple-800: #3a1d6e !default;\r\n$purple-900: #29134e !default;\r\n\r\n// -------- Fades --------\r\n// Black based on same hue as $gray-900\r\n$black: #1b1f23 !default;\r\n$white: #fff !default;\r\n\r\n$black-fade-15: rgba($black, 0.15) !default;\r\n$black-fade-30: rgba($black, 0.3) !default;\r\n$black-fade-50: rgba($black, 0.5) !default;\r\n$black-fade-70: rgba($black, 0.7) !default;\r\n$black-fade-85: rgba($black, 0.85) !default;\r\n\r\n$white-fade-15: rgba($white, 0.15) !default;\r\n$white-fade-30: rgba($white, 0.3) !default;\r\n$white-fade-50: rgba($white, 0.5) !default;\r\n$white-fade-70: rgba($white, 0.7) !default;\r\n$white-fade-85: rgba($white, 0.85) !default;\r\n\r\n// -------- Color defaults --------\r\n$red: $red-500 !default;\r\n$purple: $purple-500 !default;\r\n$blue: $blue-500 !default;\r\n$green: $green-500 !default;\r\n$yellow: $yellow-500 !default;\r\n$orange: $orange-500 !default;\r\n\r\n$gray-dark: $gray-900 !default;\r\n$gray-light: $gray-400 !default;\r\n$gray: $gray-500 !default;\r\n// Border colors\r\n$border-black-fade: $black-fade-15 !default;\r\n\r\n$border-blue: $blue-500 !default;\r\n$border-blue-light: $blue-200 !default;\r\n\r\n$border-green: $green-400 !default;\r\n$border-green-light: desaturate($green-300, 40%) !default;\r\n\r\n$border-purple: $purple !default;\r\n\r\n$border-red: $red !default;\r\n$border-red-light: desaturate($red-300, 60%) !default;\r\n\r\n$border-purple: $purple !default;\r\n\r\n$border-yellow: desaturate($yellow-300, 60%) !default;\r\n\r\n$border-gray-dark: $gray-300 !default;\r\n$border-gray-darker: $gray-700 !default;\r\n$border-gray-light: lighten($gray-200, 3%) !default;\r\n$border-gray: $gray-200 !default;\r\n\r\n$tooltip-max-width: 250px !default;\r\n$tooltip-background-color: $black;\r\n$tooltip-text-color: $white !default;\r\n$tooltip-delay: 0.4s !default;\r\n$tooltip-duration: 0.1s !default;\r\n// Border size\r\n$border-width: 1px !default;\r\n$border-color: $border-gray !default;\r\n$border-style: solid !default;\r\n$border: $border-width $border-color $border-style !default;\r\n$border-radius: 3px !default;\r\n\r\n.tooltipped {\r\n\tposition: relative;\r\n}\r\n\r\n// This is the tooltip bubble\r\n.tooltipped::after {\r\n\tposition: absolute;\r\n\tz-index: 1000000;\r\n\tdisplay: none;\r\n\tpadding: $em-spacer-5 $em-spacer-6;\r\n\tfont: normal normal 11px/1.5 $body-font;\r\n\t-webkit-font-smoothing: subpixel-antialiased;\r\n\tcolor: $tooltip-text-color;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\ttext-shadow: none;\r\n\ttext-transform: none;\r\n\tletter-spacing: normal;\r\n\tword-wrap: break-word;\r\n\twhite-space: pre;\r\n\tpointer-events: none;\r\n\tcontent: attr(aria-label);\r\n\tbackground: $tooltip-background-color;\r\n\tborder-radius: $border-radius;\r\n\topacity: 0;\r\n}\r\n\r\n// This is the tooltip arrow\r\n.tooltipped::before {\r\n\tposition: absolute;\r\n\tz-index: 1000001;\r\n\tdisplay: none;\r\n\twidth: 0;\r\n\theight: 0;\r\n\tcolor: $tooltip-background-color;\r\n\tpointer-events: none;\r\n\tcontent: \"\";\r\n\tborder: 6px $border-style transparent;\r\n\topacity: 0;\r\n}\r\n\r\n// delay animation for tooltip\r\n@keyframes tooltip-appear {\r\n\tfrom {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\tto {\r\n\t\topacity: 1;\r\n\t}\r\n}\r\n\r\n// This will indicate when we'll activate the tooltip\r\n.tooltipped:hover,\r\n.tooltipped:active,\r\n.tooltipped:focus {\r\n\t&::before,\r\n\t&::after {\r\n\t\tdisplay: inline-block;\r\n\t\ttext-decoration: none;\r\n\t\tanimation-name: tooltip-appear;\r\n\t\tanimation-duration: $tooltip-duration;\r\n\t\tanimation-fill-mode: forwards;\r\n\t\tanimation-timing-function: ease-in;\r\n\t\tanimation-delay: $tooltip-delay;\r\n\t}\r\n}\r\n\r\n.tooltipped-no-delay:hover,\r\n.tooltipped-no-delay:active,\r\n.tooltipped-no-delay:focus {\r\n\t&::before,\r\n\t&::after {\r\n\t\tanimation-delay: 0s;\r\n\t}\r\n}\r\n\r\n.tooltipped-multiline:hover,\r\n.tooltipped-multiline:active,\r\n.tooltipped-multiline:focus {\r\n\t&::after {\r\n\t\tdisplay: table-cell;\r\n\t}\r\n}\r\n\r\n// Tooltipped south\r\n.tooltipped-s,\r\n.tooltipped-se,\r\n.tooltipped-sw {\r\n\t&::after {\r\n\t\ttop: 100%;\r\n\t\tright: 50%;\r\n\t\tmargin-top: 6px;\r\n\t}\r\n\r\n\t&::before {\r\n\t\ttop: auto;\r\n\t\tright: 50%;\r\n\t\tbottom: -7px;\r\n\t\tmargin-right: -6px;\r\n\t\tborder-bottom-color: $tooltip-background-color;\r\n\t}\r\n}\r\n\r\n.tooltipped-se {\r\n\t&::after {\r\n\t\tright: auto;\r\n\t\tleft: 50%;\r\n\t\tmargin-left: -$spacer-3;\r\n\t}\r\n}\r\n\r\n.tooltipped-sw::after {\r\n\tmargin-right: -$spacer-3;\r\n}\r\n\r\n// Tooltips above the object\r\n.tooltipped-n,\r\n.tooltipped-ne,\r\n.tooltipped-nw {\r\n\t&::after {\r\n\t\tright: 50%;\r\n\t\tbottom: 100%;\r\n\t\tmargin-bottom: 6px;\r\n\t}\r\n\r\n\t&::before {\r\n\t\ttop: -7px;\r\n\t\tright: 50%;\r\n\t\tbottom: auto;\r\n\t\tmargin-right: -6px;\r\n\t\tborder-top-color: $tooltip-background-color;\r\n\t}\r\n}\r\n\r\n.tooltipped-ne {\r\n\t&::after {\r\n\t\tright: auto;\r\n\t\tleft: 50%;\r\n\t\tmargin-left: -$spacer-3;\r\n\t}\r\n}\r\n\r\n.tooltipped-nw::after {\r\n\tmargin-right: -$spacer-3;\r\n}\r\n\r\n// Move the tooltip body to the center of the object.\r\n.tooltipped-s::after,\r\n.tooltipped-n::after {\r\n\ttransform: translateX(50%);\r\n}\r\n\r\n// Tooltipped to the left\r\n.tooltipped-w {\r\n\t&::after {\r\n\t\tright: 100%;\r\n\t\tbottom: 50%;\r\n\t\tmargin-right: 6px;\r\n\t\ttransform: translateY(50%);\r\n\t}\r\n\r\n\t&::before {\r\n\t\ttop: 50%;\r\n\t\tbottom: 50%;\r\n\t\tleft: -7px;\r\n\t\tmargin-top: -6px;\r\n\t\tborder-left-color: $tooltip-background-color;\r\n\t}\r\n}\r\n\r\n// tooltipped to the right\r\n.tooltipped-e {\r\n\t&::after {\r\n\t\tbottom: 50%;\r\n\t\tleft: 100%;\r\n\t\tmargin-left: 6px;\r\n\t\ttransform: translateY(50%);\r\n\t}\r\n\r\n\t&::before {\r\n\t\ttop: 50%;\r\n\t\tright: -7px;\r\n\t\tbottom: 50%;\r\n\t\tmargin-top: -6px;\r\n\t\tborder-right-color: $tooltip-background-color;\r\n\t}\r\n}\r\n\r\n// Tooltip align right and left\r\n.tooltipped-align-right-1,\r\n.tooltipped-align-right-2 {\r\n\t&::after {\r\n\t\tright: 0;\r\n\t\tmargin-right: 0;\r\n\t}\r\n}\r\n\r\n.tooltipped-align-right-1 {\r\n\t&::before {\r\n\t\tright: 10px;\r\n\t}\r\n}\r\n\r\n.tooltipped-align-right-2 {\r\n\t&::before {\r\n\t\tright: 15px;\r\n\t}\r\n}\r\n\r\n.tooltipped-align-left-1,\r\n.tooltipped-align-left-2 {\r\n\t&::after {\r\n\t\tleft: 0;\r\n\t\tmargin-left: 0;\r\n\t}\r\n}\r\n\r\n.tooltipped-align-left-1 {\r\n\t&::before {\r\n\t\tleft: 5px;\r\n\t}\r\n}\r\n\r\n.tooltipped-align-left-2 {\r\n\t&::before {\r\n\t\tleft: 10px;\r\n\t}\r\n}\r\n\r\n// Multiline tooltips\r\n//\r\n// `.tooltipped-multiline` Add this class when you have long content.\r\n// The downside is you cannot preformat the text with newlines and `[w,e]`\r\n// are always `$tooltip-max-width` wide.\r\n.tooltipped-multiline {\r\n\t&::after {\r\n\t\twidth: max-content;\r\n\t\tmax-width: $tooltip-max-width;\r\n\t\tword-wrap: break-word;\r\n\t\twhite-space: pre-line;\r\n\t\tborder-collapse: separate;\r\n\t}\r\n\r\n\t&.tooltipped-s::after,\r\n\t&.tooltipped-n::after {\r\n\t\tright: auto;\r\n\t\tleft: 50%;\r\n\t\ttransform: translateX(-50%);\r\n\t}\r\n\r\n\t&.tooltipped-w::after,\r\n\t&.tooltipped-e::after {\r\n\t\tright: 100%;\r\n\t}\r\n}\r\n\r\n@media screen and (min-width: 0 \\0\r\n) {\r\n\t// IE11\r\n\t.tooltipped-multiline::after {\r\n\t\twidth: $tooltip-max-width;\r\n\t}\r\n}\r\n\r\n// Sticky tooltips\r\n//\r\n// Always show the tooltip.\r\n.tooltipped-sticky {\r\n\t&::before,\r\n\t&::after {\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tooltipped-multiline {\r\n\t\t&::after {\r\n\t\t\tdisplay: table-cell;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Alert tooltips\r\n//\r\n// Colors for different alert states.\r\n@mixin colorizeTooltip($text-color, $background-color) {\r\n\t&::after {\r\n\t\tcolor: $text-color;\r\n\t\tbackground: $background-color;\r\n\t}\r\n\r\n\t&.tooltipped-s,\r\n\t&.tooltipped-se,\r\n\t&.tooltipped-sw {\r\n\t\t&::before {\r\n\t\t\tborder-bottom-color: $background-color;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tooltipped-n,\r\n\t&.tooltipped-ne,\r\n\t&.tooltipped-nw {\r\n\t\t&::before {\r\n\t\t\tborder-top-color: $background-color;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tooltipped-e::before {\r\n\t\tborder-right-color: $background-color;\r\n\t}\r\n\r\n\t&.tooltipped-w::before {\r\n\t\tborder-left-color: $background-color;\r\n\t}\r\n}\r\n",null,"/*------------------------------------------------------------------\r\nWooCommerce Wishlist Plugin custom webfont\r\n-------------------------------------------------------------------*/\r\n@font-face {\r\n\tfont-family: 'tinvwl-webfont';\r\n\tsrc: url('../fonts/tinvwl-webfont.eot?xu2uyi');\r\n\tsrc: url('../fonts/tinvwl-webfont.eot?xu2uyi#iefix') format('embedded-opentype'),\r\n\turl('../fonts/tinvwl-webfont.ttf?xu2uyi') format('truetype'),\r\n\turl('../fonts/tinvwl-webfont.woff?xu2uyi') format('woff'),\r\n\turl('../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont') format('svg');\r\n\tfont-weight: normal;\r\n\tfont-style: normal;\r\n}\r\n\r\n.ftinvwl {\r\n\t/* use !important to prevent issues with browser extensions that change fonts */\r\n\tfont-family: 'tinvwl-webfont' !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: normal;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\r\n\t/* Better Font Rendering =========== */\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.ftinvwl-twitter:before {\r\n\tcontent: \"\\f099\";\r\n}\r\n\r\n.ftinvwl-facebook:before {\r\n\tcontent: \"\\f09a\";\r\n}\r\n\r\n.ftinvwl-facebook-f:before {\r\n\tcontent: \"\\f09a\";\r\n}\r\n\r\n.ftinvwl-google:before {\r\n\tcontent: \"\\f0d5\";\r\n}\r\n\r\n.ftinvwl-email:before {\r\n\tcontent: \"\\f0e0\";\r\n}\r\n\r\n.ftinvwl-pinterest:before {\r\n\tcontent: \"\\f231\";\r\n}\r\n\r\n.ftinvwl-whatsapp:before {\r\n\tcontent: \"\\f232\";\r\n}\r\n\r\n.ftinvwl-clipboard:before {\r\n\tcontent: \"\\e911\";\r\n}\r\n\r\n.ftinvwl-star:before {\r\n\tcontent: \"\\e912\";\r\n}\r\n\r\n.ftinvwl-shopping-cart:before {\r\n\tcontent: \"\\e913\";\r\n}\r\n\r\n.ftinvwl-magic:before {\r\n\tcontent: \"\\e914\";\r\n}\r\n\r\n.ftinvwl-info:before {\r\n\tcontent: \"\\e915\";\r\n}\r\n\r\n.ftinvwl-graduation-cap:before {\r\n\tcontent: \"\\e918\";\r\n}\r\n\r\n.ftinvwl-floppy-o:before {\r\n\tcontent: \"\\e919\";\r\n}\r\n\r\n.ftinvwl-eyedropper:before {\r\n\tcontent: \"\\e91a\";\r\n}\r\n\r\n.ftinvwl-exclamation-triangle:before {\r\n\tcontent: \"\\e91b\";\r\n}\r\n\r\n.ftinvwl-check:before {\r\n\tcontent: \"\\e91e\";\r\n}\r\n\r\n.ftinvwl-arrow-left:before {\r\n\tcontent: \"\\e91f\";\r\n}\r\n\r\n.ftinvwl-wrench:before {\r\n\tcontent: \"\\e920\";\r\n}\r\n\r\n.ftinvwl-chevron-down:before {\r\n\tcontent: \"\\e900\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-right:before {\r\n\tcontent: \"\\e901\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-left:before {\r\n\tcontent: \"\\e902\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-up:before {\r\n\tcontent: \"\\e903\";\r\n\r\n}\r\n\r\n.ftinvwl-cancel:before {\r\n\tcontent: \"\\e904\";\r\n\r\n}\r\n\r\n.ftinvwl-times:before {\r\n\tcontent: \"\\e905\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-plus:before {\r\n\tcontent: \"\\e906\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mark-right:before {\r\n\tcontent: \"\\e907\";\r\n\r\n}\r\n\r\n.ftinvwl-heart2:before {\r\n\tcontent: \"\\e908\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-o:before {\r\n\tcontent: \"\\e909\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mark-left:before {\r\n\tcontent: \"\\e90a\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mail:before {\r\n\tcontent: \"\\e90b\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-tinv:before {\r\n\tcontent: \"\\e90c\";\r\n\r\n}\r\n\r\n.ftinvwl-key:before {\r\n\tcontent: \"\\e90d\";\r\n\r\n}\r\n\r\n.ftinvwl-lock:before {\r\n\tcontent: \"\\e90e\";\r\n\r\n}\r\n\r\n.ftinvwl-hearts:before {\r\n\tcontent: \"\\e90f\";\r\n\r\n}\r\n\r\n.ftinvwl-user:before {\r\n\tcontent: \"\\e910\";\r\n\r\n}\r\n\r\n/* PULSE */\r\n\r\n@-webkit-keyframes ftinvwl-pulse {\r\n\t0% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n\r\n\t50% {\r\n\t\t-webkit-transform: scale(0.8);\r\n\t\ttransform: scale(0.8);\r\n\t}\r\n\r\n\t100% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n}\r\n\r\n@keyframes ftinvwl-pulse {\r\n\t0% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\t-ms-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n\r\n\t50% {\r\n\t\t-webkit-transform: scale(0.8);\r\n\t\t-ms-transform: scale(0.8);\r\n\t\ttransform: scale(0.8);\r\n\t}\r\n\r\n\t100% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\t-ms-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n}\r\n\r\n.ftinvwl-pulse.ftinvwl-animated::before {\r\n\t-webkit-animation: ftinvwl-pulse 2s linear infinite;\r\n\tanimation: ftinvwl-pulse 2s linear infinite;\r\n}\r\n"]}
|
1 |
+
{"version":3,"sources":["public.scss","public.css","webfont.scss"],"names":[],"mappings":"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","file":"public.css","sourcesContent":["/*------------------------------------*\n\t$WEBFONT\n*------------------------------------*/\n@import \"webfont\";\n\n.tinv-wishlist {\n\tform, p:last-child, table {\n\t\tmargin-bottom: 0;\n\t}\n}\n\n.tinv-wishlist * {\n\tbox-sizing: border-box;\n}\n\n.tinvwl-wishlist {\n\t:after, :before {\n\t\tbox-sizing: border-box;\n\t}\n}\n\n.tinv-wishlist {\n\tselect {\n\t\twidth: 140px;\n\t}\n\n\tul {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tinvwl_add_to_wishlist_button {\n\t\t&.tinvwl-icon-heart-plus.no-txt:before, &.tinvwl-icon-heart.no-txt:before {\n\t\t\tmargin-top: -10px;\n\t\t\tmargin-left: -10px;\n\t\t}\n\t}\n}\n\n.woocommerce.tinv-wishlist {\n\t#respond input#submit.alt, a.button.alt, button.button.alt, input.button.alt {\n\t\ttext-align: center;\n\t}\n}\n\n.tinv-wishlist {\n\t.button i, .navigation-button a i {\n\t\tmargin-right: 6px;\n\t}\n\n\tinput {\n\t\t&[type=\"button\"] i, &[type=\"reset\"] i, &[type=\"submit\"] i {\n\t\t\tmargin-right: 6px;\n\t\t}\n\t}\n\n\ta.tinv-close-modal i {\n\t\tmargin-right: 0;\n\t}\n}\n\na.wishlist_products_counter {\n\ttext-decoration: none;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart.tinvwl_add_to_wishlist_button:before, a.wishlist_products_counter.top_wishlist-heart:before, span.wishlist_products_counter.top_wishlist-heart:before, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart:before {\n\tcontent: '\\e909';\n\tdisplay: inline-block;\n\tfont-family: tinvwl-webfont !important;\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: 400;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: 20px;\n\tvertical-align: sub;\n\tmargin-right: 5px;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus:before, a.wishlist_products_counter.top_wishlist-heart-plus:before, span.wishlist_products_counter.top_wishlist-heart-plus:before, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart-plus:before {\n\tcontent: '\\e906';\n\tdisplay: inline-block;\n\tfont-family: tinvwl-webfont !important;\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: 400;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: 20px;\n\tvertical-align: sub;\n\tmargin-right: 5px;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button {\n\t&.tinvwl-icon-heart-plus.no-txt, &.tinvwl-icon-heart.no-txt {\n\t\tposition: relative;\n\t\twidth: 36px;\n\t\theight: 36px;\n\t\tvertical-align: sub;\n\t}\n}\n\na.wishlist_products_counter.top_wishlist-heart-plus.no-txt, span.wishlist_products_counter.top_wishlist-heart-plus.no-txt {\n\tposition: relative;\n\twidth: 36px;\n\theight: 36px;\n\tvertical-align: sub;\n}\n\n.tinv-wishlist {\n\t.tinvwl_add_to_wishlist_button {\n\t\t&.tinvwl-icon-heart-plus.no-txt:before, &.tinvwl-icon-heart.no-txt:before {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\tmargin-right: 0;\n\t\t}\n\t}\n\n\t.tinvwl-button.tinvwl_add_to_wishlist_button {\n\t\t&.tinvwl-icon-heart-plus.no-txt, &.tinvwl-icon-heart.no-txt {\n\t\t\tpadding-left: 1em;\n\t\t\tvertical-align: bottom;\n\t\t}\n\t}\n\n\t.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before {\n\t\tcontent: '\\e908';\n\t}\n}\n\n.woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart.tinvwl_add_to_wishlist_button.tinvwl-product-in-list:before, a.wishlist_products_counter.top_wishlist-heart.wishlist-counter-with-products:before, span.wishlist_products_counter.top_wishlist-heart.wishlist-counter-with-products:before {\n\tcontent: '\\e908';\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.tinvwl-product-in-list:before, .woocommerce ul.products li.product a.tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.tinvwl-product-in-list:before, .woocommerce-page ul.products li.product a.tinvwl-button.tinvwl-icon-heart-plus.tinvwl_add_to_wishlist_button.tinvwl-product-in-list:before, a.wishlist_products_counter.top_wishlist-heart-plus.wishlist-counter-with-products:before, span.wishlist_products_counter.top_wishlist-heart-plus.wishlist-counter-with-products:before {\n\tcontent: '\\e907';\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-white:before, a.wishlist_products_counter.top_wishlist-white:before, span.wishlist_products_counter.top_wishlist-white:before {\n\tcolor: #FFF;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-black:before, a.wishlist_products_counter.top_wishlist-black:before, span.wishlist_products_counter.top_wishlist-black:before {\n\tcolor: #000;\n}\n\n.tinv-wishlist {\n\t&.tinvwl-before-add-to-cart .tinvwl_add_to_wishlist_button {\n\t\tmargin-bottom: 15px;\n\t}\n\n\t&.tinvwl-after-add-to-cart .tinvwl_add_to_wishlist_button {\n\t\tmargin-top: 15px;\n\t}\n\n\t.tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt {\n\t\tpadding: 10px 11px;\n\t\tline-height: 1;\n\t}\n}\n\na.wishlist_products_counter.top_wishlist-custom.no-txt, span.wishlist_products_counter.top_wishlist-custom.no-txt {\n\tpadding: 10px 11px;\n\tline-height: 1;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom img, a.wishlist_products_counter.top_wishlist-custom img, span.wishlist_products_counter.top_wishlist-custom img {\n\tdisplay: inline-block !important;\n\tvertical-align: baseline;\n\twidth: auto !important;\n\tmax-width: 16px;\n\tmax-height: 16px;\n\tmargin-bottom: 0;\n\tmargin: 0 6px 0 0 !important;\n}\n\n.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt img, a.wishlist_products_counter.top_wishlist-custom.no-txt img, span.wishlist_products_counter.top_wishlist-custom.no-txt img {\n\tmargin-right: 0 !important;\n}\n\n.single-product div.product form.cart .tinvwl-button.tinvwl_add_to_wishlist_button, div.product form.cart .tinvwl_add_to_wishlist_button {\n\tfloat: none;\n}\n\nul.products li.product .tinvwl_add_to_wishlist_button {\n\tmargin-top: 1em;\n}\n\n.tinvwl_add_to_wishlist_button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n}\n\n.tinv-wishlist.woocommerce .stock.in-stock:before {\n\tcontent: none;\n}\n\n.tinv-wraper.tinv-wishlist {\n\tfont-size: 100%;\n}\n\n.tinv-create-list {\n\tli {\n\t\tinput[type=radio] {\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\t+ li {\n\t\t\tmargin-top: 15px;\n\t\t}\n\t}\n\n\t.tinvwl-input-group + ul {\n\t\tmargin-top: 25px;\n\t}\n}\n\n.tinv-search-list {\n\tmargin-bottom: 36px;\n}\n\n.tinv-wishlist {\n\t.tinv-header {\n\t\tmargin-bottom: 30px;\n\t}\n\n\ttable {\n\t\tposition: relative;\n\t\ttable-layout: auto;\n\t\tmargin-bottom: 30px;\n\t\tz-index: 2;\n\t}\n}\n\n.tinv-overlay {\n\ttop: 0;\n\tleft: 0;\n\tposition: fixed;\n\ttransition: opacity .3s ease, visibility .3s ease;\n}\n\n.tinv-wishlist {\n\t.tinv-modal {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tposition: fixed;\n\t\ttransition: opacity .3s ease, visibility .3s ease;\n\t}\n\n\ttable {\n\t\t&.tinvwl-table-manage-list {\n\t\t\tmargin-bottom: 27px;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput[type=checkbox] {\n\t\t\tmargin-right: 0;\n\t\t}\n\n\t\ttd, th {\n\t\t\tpadding: 1em;\n\t\t\tvertical-align: middle;\n\t\t}\n\t}\n\n\t.tinvwl-table-manage-list {\n\t\t.product-cb {\n\t\t\twidth: 35px;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t.product-remove {\n\t\t\twidth: 46px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n\n\t.product-remove button {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-content: center;\n\t\tmargin: 0 auto;\n\t\twidth: 27px;\n\t\theight: 27px;\n\t\tborder-radius: 50%;\n\t\tpadding: 0;\n\t\tbox-shadow: none;\n\t\tborder: none;\n\t\tbackground-color: #f7f7f7;\n\t\tcolor: #000000;\n\t\tfont-size: 20px;\n\t\tpadding-left: 3px;\n\t}\n\n\t.product-thumbnail {\n\t\tmin-width: 100px;\n\t\twidth: 100px;\n\n\t\t.wp-post-image {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\n\ttd.product-name a + .variation {\n\t\tmargin-top: 2px;\n\t}\n\n\t.product-stock {\n\t\ti {\n\t\t\tmargin-right: 15px;\n\t\t}\n\n\t\tp {\n\t\t\tdisplay: table;\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: table-cell;\n\t\t\tvertical-align: middle;\n\t\t}\n\t}\n\n\t.product-action > .button > i, .tinvwl-table-manage-list .product-action button[name=tinvwl-remove], table thead th .tinvwl-mobile {\n\t\tdisplay: none;\n\t}\n\n\t&.woocommerce {\n\t\t.product-quantity {\n\t\t\twidth: 80px;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\ttable .quantity .qty {\n\t\t\tmax-width: 100%;\n\t\t\twidth: 62px;\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n\t.product-action {\n\t\twidth: 135px;\n\t\ttext-align: center;\n\n\t\t.button {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.tinvwl_move_product_button {\n\t\t\tmargin-top: 5px;\n\t\t}\n\t}\n\n\t.tinvwl-table-manage-list .product-action > button[name=tinvwl-remove] > i {\n\t\tmargin-right: 0;\n\t}\n\n\t.wishlist-cb {\n\t\twidth: 33px;\n\t\ttext-align: center;\n\t}\n\n\t.wishlist-name {\n\t\t.tinvwl-rename-input input {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.tinvwl-rename-button {\n\t\t\tfloat: right;\n\n\t\t\t> i {\n\t\t\t\tmargin-right: 10px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.wishlist-privacy, table:not(.tinvwl-public) .wishlist-date {\n\t\twidth: 18%;\n\t}\n\n\t.wishlist-privacy select {\n\t\twidth: 100%;\n\t}\n\n\t.wishlist-name {\n\t\twidth: 45%;\n\t}\n\n\t.wishlist-action {\n\t\twidth: 120px;\n\t\ttext-align: center;\n\n\t\tbutton[value=manage_remove] > i {\n\t\t\tdisplay: none;\n\t\t\tmargin-right: 0;\n\t\t}\n\t}\n\n\ttfoot {\n\t\t.tinvwl-to-right .tinv-create-list {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\n\t\t\t> a.button {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t.tinvwl-to-left {\n\t\t\t+ .tinvwl-to-right {\n\t\t\t\tmargin-top: -10px;\n\t\t\t}\n\n\t\t\t&:not(:empty) {\n\t\t\t\tfloat: left;\n\t\t\t\twidth: 35%;\n\t\t\t\tmargin-right: 2%;\n\t\t\t}\n\t\t}\n\n\t\t.tinvwl-to-right {\n\t\t\tfloat: left;\n\t\t\twidth: 63%;\n\t\t\ttext-align: right;\n\n\t\t\t> * {\n\t\t\t\tmargin: 10px 0 0;\n\t\t\t\tvertical-align: middle;\n\n\t\t\t\t+ * {\n\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.tinvwl-to-left:empty + .tinvwl-to-right {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.social-buttons + .tinv-wishlist-clear + .navigation-button {\n\t\tmargin-top: 16px;\n\t}\n\n\t.navigation-button {\n\t\tmargin-top: -10px;\n\n\t\t> li {\n\t\t\tfloat: left;\n\n\t\t\t> {\n\t\t\t\t.tinv-create-list > a, a {\n\t\t\t\t\tmargin-right: 30px;\n\t\t\t\t\tmargin-top: 10px;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\n\t\t\t\t.tinv-create-list > a.button, a.button {\n\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:last-child > {\n\t\t\t\t.tinv-create-list > a, a {\n\t\t\t\t\tmargin-right: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.social-buttons {\n\t\ttext-align: right;\n\n\t\t> {\n\t\t\tspan, ul {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\n\t\t\tspan {\n\t\t\t\tmargin-right: 27px;\n\t\t\t}\n\t\t}\n\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tmargin-right: 5px;\n\t\t\tlist-style: none;\n\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\n\t\t\ta.social {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-content: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\twidth: 2em;\n\t\t\t\theight: 2em;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\ttext-align: center;\n\t\t\t\tbox-shadow: none;\n\t\t\t\tborder: 0;\n\t\t\t\tfont-size: 20px;\n\t\t\t\ttext-decoration: none;\n\n\t\t\t\t&.white {\n\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t}\n\n\t\t\t\t&.dark {\n\t\t\t\t\tcolor: #000000;\n\t\t\t\t}\n\n\t\t\t\ti {\n\t\t\t\t\tline-height: 2em;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.navigation-button {\n\t\t.tinv-create-list > a.tinvwl-no-icon > i, li > a.tinvwl-no-icon > i {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t.tinv-lists-nav {\n\t\tmargin-top: 35px;\n\t\tmargin-bottom: 35px;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\n\t\t> * {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tflex-basis: 100%;\n\t\t\tflex: 1;\n\t\t\ttext-align: center;\n\t\t\tjustify-content: center;\n\t\t}\n\n\t\t> span {\n\t\t\tfont-weight: 700;\n\t\t}\n\t}\n\n\t.tinv-next {\n\t\tdisplay: inline-block;\n\t\tfloat: left;\n\t}\n\n\t.tinv-prev {\n\t\tdisplay: inline-block;\n\t\tfloat: left;\n\t\tmargin-right: 35px !important;\n\t}\n\n\t.tinv-prev i {\n\t\tmargin-left: 0;\n\t\tmargin-right: 18px;\n\t}\n\n\t.tinv-next i {\n\t\tmargin-left: 18px;\n\t\tmargin-right: 0;\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.tinv-wishlist {\n\t\t.tinvwl-table-manage-lists:not(.tinvwl-public) {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\t.tinvwl-table-manage-list {\n\t\t\t.product-remove {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.product-action button[name=tinvwl-remove] {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmargin-top: 5px;\n\t\t\t}\n\t\t}\n\n\t\t.product-action {\n\t\t\twidth: 60px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) and (min-width: 641px) {\n\t.tinv-wishlist {\n\t\t.tinvwl-table-manage-list td.product-stock p {\n\t\t\tdisplay: block;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t.product-stock span {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.tinvwl-table-manage-list td.product-stock {\n\t\t\ti {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\n\t\t\t.tinvwl-txt {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\t.product-thumbnail {\n\t\t\tmax-width: 76px;\n\t\t\twidth: 76px;\n\t\t}\n\n\t\t.product-action .button {\n\t\t\t> i {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\n\t\t\t.tinvwl-txt {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1023px) {\n\t.tinv-wishlist .tinv-lists-nav a.tinv-prev, .tinv-wishlist .tinv-lists-nav a.tinv-next {\n\t\t> i {\n\t\t\tmargin: 0;\n\t\t}\n\n\t\t> span {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 640px) {\n\t.tinv-wishlist {\n\t\ttable {\n\t\t\t&.tinvwl-table-manage-list {\n\t\t\t\ttbody td.product-remove, thead th:not(.product-name) {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-lists thead th:not(.wishlist-name) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\tthead th .tinvwl-full {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\ttable {\n\t\t\t&.tinvwl-table-manage-list thead th.product-name, &.tinvwl-table-manage-lists thead th.wishlist-name {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\tthead th .tinvwl-mobile {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-list tbody td {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 100% !important;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-lists {\n\t\t\t\ttbody td, &.tinvwl-public tbody td {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100% !important;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-list tbody td:not(:last-child) {\n\t\t\t\tborder-bottom: 0;\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-lists {\n\t\t\t\ttbody td:not(:last-child), &.tinvwl-public tbody td:not(:last-child) {\n\t\t\t\t\tborder-bottom: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.product-stock p {\n\t\t\tmargin: 0 auto;\n\t\t}\n\n\t\t.product-thumbnail img {\n\t\t\tmargin: 0 auto;\n\t\t\tmax-width: 80px;\n\t\t}\n\n\t\t&.woocommerce table .quantity .qty {\n\t\t\ttext-align: center;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.product-action .tinvwl_move_product_button {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\ttable {\n\t\t\t&.tinvwl-table-manage-list tfoot td {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t&.tinvwl-table-manage-lists {\n\t\t\t\t.wishlist-action button[value=manage_remove] {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\n\t\t\t\t.wishlist-name .tinvwl-rename-button {\n\t\t\t\t\tfloat: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.tinv-wishlist {\n\t\t.wishlist-name .tinvwl-rename-button > i, tfoot .tinvwl-to-left:not(:empty) {\n\t\t\tmargin-right: 0;\n\t\t}\n\n\t\t.wishlist-name .tinvwl-rename-button span {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.wishlist-action {\n\t\t\twidth: 60px;\n\t\t}\n\n\t\ttfoot {\n\t\t\t.tinvwl-to-left:not(:empty) {\n\t\t\t\tfloat: none;\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t.tinvwl-to-right {\n\t\t\t\tfloat: none;\n\t\t\t\twidth: auto;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) and (min-width: 641px) {\n\t.tinv-wishlist {\n\t\t.wishlist-action button[value=\"manage_remove\"] {\n\t\t\tspan {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t> i {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\ttfoot .tinvwl-to-left + .tinvwl-to-right {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 640px) {\n\t.tinv-wishlist {\n\t\tbutton {\n\t\t\t&[value=\"manage_apply\"] .tinvwl-mobile, &[value=\"product_apply\"] .tinvwl-mobile {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\ttfoot .tinvwl-to-right .tinv-create-list {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.tinvwl-table-manage-list tfoot .tinvwl-to-right {\n\t\t\t.button, button {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 10px 0 0;\n\t\t\t}\n\t\t}\n\n\t\t.tinvwl-table-manage-lists tfoot .tinvwl-to-right {\n\t\t\t.button, button {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 10px 0 0;\n\t\t\t}\n\t\t}\n\n\t\ttfoot {\n\t\t\t.tinvwl-to-right {\n\t\t\t\t> * {\n\t\t\t\t\tmargin: 10px 0 0;\n\t\t\t\t}\n\n\t\t\t\t.button:first-child, button:first-child {\n\t\t\t\t\tmargin-top: 0 !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.tinvwl-to-left + .tinvwl-to-right {\n\t\t\t\tmargin-top: 20px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.tinv-wishlist {\n\t\t.social-buttons {\n\t\t\t+ .tinv-wishlist-clear + .navigation-button {\n\t\t\t\tmargin-top: 30px;\n\t\t\t}\n\n\t\t\tfloat: none;\n\t\t\twidth: auto;\n\t\t\ttext-align: left;\n\t\t\tmargin-top: 20px;\n\t\t}\n\n\t\t.tinv-login form input[name=login] {\n\t\t\tmin-width: auto;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 640px) {\n\t.tinv-wishlist {\n\t\t.social-buttons {\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t.navigation-button {\n\t\t\t> li {\n\t\t\t\twidth: 20%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-1 > li {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-2 > li {\n\t\t\t\twidth: 50%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-3 > li {\n\t\t\t\twidth: 33%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-4 > li {\n\t\t\t\twidth: 25%;\n\t\t\t}\n\n\t\t\t> li + li {\n\t\t\t\twidth: 20%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-1 > li + li {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-2 > li + li {\n\t\t\t\twidth: 50%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-3 > li + li {\n\t\t\t\twidth: 33%;\n\t\t\t}\n\n\t\t\t&.tinvwl-btns-count-4 > li + li {\n\t\t\t\twidth: 25%;\n\t\t\t}\n\n\t\t\t> li > {\n\t\t\t\t.tinv-create-list > a, a {\n\t\t\t\t\twidth: calc(100% - 10px);\n\t\t\t\t\tmargin-right: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.tinv-create-list > a .tinvwl-txt, li > a .tinvwl-txt {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.tinv-create-list > a > i, li > a > i {\n\t\t\t\tdisplay: inline-block !important;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t.social-buttons > span {\n\t\t\tdisplay: block;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 667px) {\n\t.tinv-wishlist.woocommerce .tinv-login form {\n\t\t.form-row-first, .form-row-last {\n\t\t\tfloat: none;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.form-row-first {\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t.form-row-last {\n\t\t\tpadding: 0;\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t.tinvwl-input-group-btn {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0;\n\t\t\twidth: auto;\n\t\t\tmargin-top: 10px;\n\t\t}\n\t}\n}\n\n.tinv-overlay {\n\twidth: 100%;\n\theight: 100%;\n\tvisibility: hidden;\n\topacity: 0;\n\tbackground: #191919;\n}\n\n.tinv-modal.tinv-modal-open .tinv-overlay {\n\tvisibility: visible;\n\topacity: .5;\n}\n\n.admin-bar .tinv-wishlist .tinv-modal {\n\tpadding-top: 32px !important;\n}\n\n.tinv-wishlist {\n\t.tinv-modal {\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tz-index: 9999;\n\t\toutline: 0 !important;\n\t\t-webkit-backface-visibility: hidden;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\ttext-align: left;\n\n\t\t.tinv-modal-inner {\n\t\t\tposition: relative;\n\t\t\tmargin: 0 auto;\n\t\t\tbackground-color: #fff;\n\t\t\tmax-width: 360px;\n\t\t\tpadding: 40px;\n\t\t}\n\n\t\t&.tinv-modal-open {\n\t\t\tvisibility: visible;\n\t\t\topacity: 1;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\n\t\t.tinv-close-modal {\n\t\t\tdisplay: inline-block;\n\t\t\tposition: absolute;\n\t\t\ttop: 17px;\n\t\t\tright: 14px;\n\t\t\twidth: 26px;\n\t\t\theight: 26px;\n\t\t\tline-height: 26px;\n\t\t\tfont-size: 12px;\n\t\t\ttext-align: center;\n\t\t\tborder-radius: 50%;\n\t\t\tborder-bottom: 0;\n\t\t\tbox-shadow: none !important;\n\t\t\tbackground-color: #ebe9eb;\n\t\t}\n\n\t\t.icon_big_heart_check, .icon_big_times, img {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\tmargin-bottom: 25px;\n\t\t\topacity: 1 !important;\n\t\t}\n\n\t\tul {\n\t\t\toverflow: visible;\n\t\t\tlist-style: disc;\n\t\t\tmargin: 10px 0 0 20px;\n\t\t}\n\n\t\tli {\n\t\t\tlist-style: disc !important;\n\t\t}\n\t}\n\n\t.tinv-create-list .tinv-modal ul, &.tinv-create-list form ul {\n\t\tlist-style: none !important;\n\t\tmargin: 25px 0 0;\n\t}\n\n\t.tinv-create-list .tinv-modal li, &.tinv-create-list form li {\n\t\tlist-style: none !important;\n\t}\n\n\t.tinv-modal {\n\t\t.already-in {\n\t\t\tmargin-bottom: 35px;\n\t\t}\n\n\t\t.delete-notification {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\n\t\t.already-in ul {\n\t\t\toverflow: visible;\n\t\t\tmargin: 12px 0 27px 17px;\n\t\t}\n\n\t\tselect {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tbutton + {\n\t\t\t.button, button {\n\t\t\t\tmargin-top: 12px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\tinput + button {\n\t\t\tmargin-top: 12px;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tlabel + {\n\t\t\tbutton, input {\n\t\t\t\tmargin-top: 12px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\tselect + {\n\t\t\tbutton, input {\n\t\t\t\tmargin-top: 12px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media screen and (max-width: 782px) {\n\t.admin-bar .tinv-wishlist .tinv-modal {\n\t\tpadding-top: 46px !important;\n\t}\n}\n\n@media screen and (max-width: 600px) {\n\t.admin-bar .tinv-wishlist .tinv-modal {\n\t\tpadding-top: 0 !important;\n\t}\n\t.tinv-wishlist .tinv-modal .tinv-close-modal {\n\t\tposition: static;\n\t\tdisplay: block;\n\t\tmargin: 0 auto 20px;\n\t}\n}\n\n.tinv-wishlist {\n\t.tinv-modal {\n\t\t.already-in + label {\n\t\t\tdisplay: block;\n\t\t\tmargin-top: 6px;\n\t\t}\n\n\t\tlabel select {\n\t\t\tmargin-top: 8px;\n\t\t}\n\n\t\t.delete-notification + button {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.tinvwl_added_to_wishlist, .tinvwl_created_wishlist {\n\t\ttext-align: center;\n\t}\n\n\t.tinvwl_added_to_wishlist .tinv-txt {\n\t\tmargin-bottom: 25px;\n\t}\n\n\t.tinvwl_created_wishlist {\n\t\t.tinv-txt {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\n\t\tbutton {\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\t}\n}\n\n.woocommerce .tinv-wishlist .tinvwl_added_to_wishlist.tinv-modal button.button {\n\tmargin-top: 0;\n\tmargin-bottom: 10px;\n}\n\n.tinv-wishlist {\n\t.tinv-modal {\n\t\t.tinvwl-buttons-group {\n\t\t\tmargin-top: 20px;\n\t\t}\n\t}\n\n\t.tinvwl-buttons-group {\n\t\tbutton {\n\t\t\twidth: 100%;\n\n\t\t\t+ button {\n\t\t\t\tmargin-top: 7px;\n\t\t\t}\n\n\t\t\ti {\n\t\t\t\tposition: relative;\n\n\t\t\t\t&.ftinvwl-heart-o, &.ftinvwl-key, &.ftinvwl-times {\n\t\t\t\t\tfont-size: 20px;\n\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: 3px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t+ button {\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 7px;\n\t\t}\n\t}\n\n\t.tinv-modal h2 {\n\t\ttext-align: center;\n\t\tmargin: 0 0 35px;\n\t}\n\n\t.tinv-create-list .tinv-modal-inner {\n\t\tmax-width: 778px;\n\t\tpadding: 30px;\n\t}\n\n\t.tinvwl-has-error:not(.tinvwl-input-group), .tinvwl-input-group.tinvwl-has-error .form-control {\n\t\tborder: 2px solid #FF0000;\n\t}\n\n\t.tinvwl-has-error {\n\t\t&:not(.tinvwl-input-group) {\n\t\t\tborder: 2px solid #FF0000;\n\t\t}\n\n\t\t+ .tinvwl-error {\n\t\t\tpadding: 5px 0 0 5px;\n\t\t\tcolor: #FF0000;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 640px) {\n\t.navigation-button, .social-buttons, .tinv-lists-nav {\n\t\tmargin-left: 12px;\n\t\tmargin-right: 12px;\n\t}\n}\n\n.tinvwl-tooltip {\n\tdisplay: none;\n}\n\n.tinvwl-input-group {\n\tposition: relative;\n\tdisplay: table;\n\tborder-collapse: separate;\n\n\t.form-control {\n\t\tposition: relative;\n\t\tz-index: 1;\n\t\tfloat: left;\n\t\theight: 38px;\n\t\twidth: 100%;\n\t\tmargin-bottom: 0;\n\n\t\t+ .tinvwl-input-group-btn {\n\t\t\tpadding-left: 15px;\n\t\t}\n\t}\n}\n\n.tinv-wishlist {\n\t.tinvwl-to-left .tinvwl-input-group .form-control + .tinvwl-input-group-btn {\n\t\tpadding-left: 10px;\n\t}\n\n\t.tinv-search-form .tinvwl-input-group .form-control + .tinvwl-input-group-btn {\n\t\tpadding-left: 9px;\n\t}\n}\n\n.tinvwl-input-group .form-control, .tinvwl-input-group-addon, .tinvwl-input-group-btn {\n\tdisplay: table-cell;\n}\n\n.tinvwl-input-group-addon, .tinvwl-input-group-btn {\n\twidth: 1%;\n\twhite-space: nowrap;\n\tvertical-align: top;\n}\n\n@media only screen and (max-width: 640px) {\n\t.tinvwl-input-group {\n\t\twidth: 100%;\n\t}\n}\n\n@media only screen and (max-width: 667px) {\n\t.tinvwl-input-group:not(.tinvwl-no-full) {\n\t\tdisplay: block;\n\n\t\t.form-control, .tinvwl-input-group-addon, .tinvwl-input-group-btn {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t.form-control {\n\t\t\tfloat: none;\n\t\t}\n\t}\n\t.tinv-wishlist .tinv-search-form .tinvwl-input-group:not(.tinvwl-no-full) .form-control + .tinvwl-input-group-btn {\n\t\tpadding-top: 10px;\n\t\tpadding-left: 0;\n\t}\n\t.tinvwl-input-group:not(.tinvwl-no-full) {\n\t\t.form-control + .tinvwl-input-group-btn {\n\t\t\tpadding-top: 10px;\n\t\t\tpadding-left: 0;\n\t\t}\n\n\t\t.tinvwl-input-group-addon {\n\t\t\twidth: 100%;\n\n\t\t\t> {\n\t\t\t\tbutton, input {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.tinvwl-input-group-btn {\n\t\t\twidth: 100%;\n\n\t\t\t> {\n\t\t\t\tbutton, input {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.tinv-table {\n\tdisplay: table;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.tinv-cell {\n\tdisplay: table-cell;\n\tvertical-align: middle;\n}\n\n.tinv-wishlist .tinv-wishlist-clear {\n\tvisibility: visible;\n\twidth: auto;\n\theight: auto;\n}\n\n.tinv-wishlist-clear {\n\t&:before {\n\t\tcontent: \"\";\n\t\tdisplay: table;\n\t}\n\n\t&:after {\n\t\tcontent: \"\";\n\t\tdisplay: table;\n\t\tclear: both;\n\t}\n}\n\n.icon_big_heart_check {\n\tdisplay: inline-block;\n\twidth: 46px;\n\theight: 46px;\n\tfont-family: tinvwl-webfont !important;\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: 400;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: 60px;\n}\n\n.icon_big_times {\n\tdisplay: inline-block;\n\twidth: 46px;\n\theight: 46px;\n\tfont-family: tinvwl-webfont !important;\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: 400;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: 60px;\n\n\t&::before {\n\t\tcontent: \"\\e904\";\n\t\ttop: -7px;\n\t\tleft: -7px;\n\t\tposition: relative;\n\t}\n}\n\n.icon_big_heart_check::before {\n\tcontent: \"\\e90a\";\n\ttop: -7px;\n\tleft: -7px;\n\tposition: relative;\n}\n\n.tinvwl_add_to_wishlist_button {\n\t&.tinvwl-button.disabled-add-wishlist, &.disabled-add-wishlist {\n\t\topacity: 0.5 !important;\n\t\tcursor: not-allowed;\n\t}\n}\n\n.empty-name-wishlist {\n\tborder-color: #FF0000 !important;\n}\n\n.tinvwl_remove_from_wishlist-text {\n\tdisplay: none;\n}\n\n.tinvwl-product-in-list.tinvwl-product-make-remove {\n\t.tinvwl_remove_from_wishlist-text {\n\t\tdisplay: inline;\n\t}\n\n\t.tinvwl_add_to_wishlist-text {\n\t\tdisplay: none;\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.tinv-wishlist .tinvwl-table-manage-list .product-remove {\n\t\tdisplay: table-cell;\n\t}\n}\n\n@media only screen and (max-width: 640px) {\n\t.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove {\n\t\tdisplay: block;\n\t}\n}\n\n\n// Tooltips\n// Aliases for easy use\n$spacer: 8px !default;\n$spacers: (\n\t0,\n\tround($spacer / 2),\n\t$spacer,\n\t$spacer * 2,\n\t$spacer * 3,\n\t$spacer * 4,\n\t$spacer * 5\n) !default;\n$spacer-0: nth($spacers, 1) !default; // 0\n$spacer-1: nth($spacers, 2) !default; // 4px\n$spacer-2: nth($spacers, 3) !default; // 8px\n$spacer-3: nth($spacers, 4) !default; // 16px\n$spacer-4: nth($spacers, 5) !default; // 24px\n$spacer-5: nth($spacers, 6) !default; // 32px\n$spacer-6: nth($spacers, 7) !default; // 40px\n// Em spacer variables\n$em-spacer-1: 0.0625em !default; // 1/16\n$em-spacer-2: 0.125em !default; // 1/8\n$em-spacer-3: 0.25em !default; // 1/4\n$em-spacer-4: 0.375em !default; // 3/8\n$em-spacer-5: 0.5em !default; // 1/2\n$em-spacer-6: 0.75em !default; // 3/4\n// Font stacks\n$body-font: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n//\n//\n// -------- Grays --------\n$gray-000: #fafbfc !default;\n$gray-100: #f6f8fa !default;\n$gray-200: #e1e4e8 !default;\n$gray-300: #d1d5da !default;\n$gray-400: #959da5 !default;\n$gray-500: #6a737d !default;\n$gray-600: #586069 !default;\n$gray-700: #444d56 !default;\n$gray-800: #2f363d !default;\n$gray-900: #24292e !default; // body font color\n\n// -------- Blue --------\n$blue-000: #f1f8ff !default;\n$blue-100: #dbedff !default;\n$blue-200: #c8e1ff !default;\n$blue-300: #79b8ff !default;\n$blue-400: #2188ff !default;\n$blue-500: #0366d6 !default; // Default: Passes AA with #fff\n$blue-600: #005cc5 !default;\n$blue-700: #044289 !default;\n$blue-800: #032f62 !default;\n$blue-900: #05264c !default; // Passes with 1/2/300 blues\n\n// -------- Green --------\n$green-000: #f0fff4 !default;\n$green-100: #dcffe4 !default;\n$green-200: #bef5cb !default;\n$green-300: #85e89d !default;\n$green-400: #34d058 !default;\n$green-500: #28a745 !default; // Default. passes AA Large\n$green-600: #22863a !default; // Text green, passes AA on #fff\n$green-700: #176f2c !default;\n$green-800: #165c26 !default;\n$green-900: #144620 !default;\n\n// -------- Yellow --------\n$yellow-000: #fffdef !default;\n$yellow-100: #fffbdd !default;\n$yellow-200: #fff5b1 !default;\n$yellow-300: #ffea7f !default;\n$yellow-400: #ffdf5d !default;\n$yellow-500: #ffd33d !default;\n$yellow-600: #f9c513 !default;\n$yellow-700: #dbab09 !default;\n$yellow-800: #b08800 !default;\n$yellow-900: #735c0f !default;\n\n// -------- Orange --------\n$orange-000: #fff8f2 !default;\n$orange-100: #ffebda !default;\n$orange-200: #ffd1ac !default;\n$orange-300: #ffab70 !default;\n$orange-400: #fb8532 !default;\n$orange-500: #f66a0a !default; // Default. passes AA Large with #fff\n$orange-600: #e36209 !default;\n$orange-700: #d15704 !default;\n$orange-800: #c24e00 !default;\n$orange-900: #a04100 !default;\n\n// -------- Red --------\n$red-000: #ffeef0 !default;\n$red-100: #ffdce0 !default;\n$red-200: #fdaeb7 !default;\n$red-300: #f97583 !default;\n$red-400: #ea4a5a !default;\n$red-500: #d73a49 !default; // Default. passes AA\n$red-600: #cb2431 !default;\n$red-700: #b31d28 !default;\n$red-800: #9e1c23 !default;\n$red-900: #86181d !default;\n\n// -------- Purple --------\n$purple-000: #f5f0ff !default;\n$purple-100: #e6dcfd !default;\n$purple-200: #d1bcf9 !default;\n$purple-300: #b392f0 !default;\n$purple-400: #8a63d2 !default;\n$purple-500: #6f42c1 !default; // passes AA with #fff\n$purple-600: #5a32a3 !default;\n$purple-700: #4c2889 !default;\n$purple-800: #3a1d6e !default;\n$purple-900: #29134e !default;\n\n// -------- Fades --------\n// Black based on same hue as $gray-900\n$black: #1b1f23 !default;\n$white: #fff !default;\n\n$black-fade-15: rgba($black, 0.15) !default;\n$black-fade-30: rgba($black, 0.3) !default;\n$black-fade-50: rgba($black, 0.5) !default;\n$black-fade-70: rgba($black, 0.7) !default;\n$black-fade-85: rgba($black, 0.85) !default;\n\n$white-fade-15: rgba($white, 0.15) !default;\n$white-fade-30: rgba($white, 0.3) !default;\n$white-fade-50: rgba($white, 0.5) !default;\n$white-fade-70: rgba($white, 0.7) !default;\n$white-fade-85: rgba($white, 0.85) !default;\n\n// -------- Color defaults --------\n$red: $red-500 !default;\n$purple: $purple-500 !default;\n$blue: $blue-500 !default;\n$green: $green-500 !default;\n$yellow: $yellow-500 !default;\n$orange: $orange-500 !default;\n\n$gray-dark: $gray-900 !default;\n$gray-light: $gray-400 !default;\n$gray: $gray-500 !default;\n// Border colors\n$border-black-fade: $black-fade-15 !default;\n\n$border-blue: $blue-500 !default;\n$border-blue-light: $blue-200 !default;\n\n$border-green: $green-400 !default;\n$border-green-light: desaturate($green-300, 40%) !default;\n\n$border-purple: $purple !default;\n\n$border-red: $red !default;\n$border-red-light: desaturate($red-300, 60%) !default;\n\n$border-purple: $purple !default;\n\n$border-yellow: desaturate($yellow-300, 60%) !default;\n\n$border-gray-dark: $gray-300 !default;\n$border-gray-darker: $gray-700 !default;\n$border-gray-light: lighten($gray-200, 3%) !default;\n$border-gray: $gray-200 !default;\n\n$tooltip-max-width: 250px !default;\n$tooltip-background-color: $black;\n$tooltip-text-color: $white !default;\n$tooltip-delay: 0.4s !default;\n$tooltip-duration: 0.1s !default;\n// Border size\n$border-width: 1px !default;\n$border-color: $border-gray !default;\n$border-style: solid !default;\n$border: $border-width $border-color $border-style !default;\n$border-radius: 3px !default;\n\n.tooltipped {\n\tposition: relative;\n}\n\n// This is the tooltip bubble\n.tooltipped::after {\n\tposition: absolute;\n\tz-index: 1000000;\n\tdisplay: none;\n\tpadding: $em-spacer-5 $em-spacer-6;\n\tfont: normal normal 11px/1.5 $body-font;\n\t-webkit-font-smoothing: subpixel-antialiased;\n\tcolor: $tooltip-text-color;\n\ttext-align: center;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\tword-wrap: break-word;\n\twhite-space: pre;\n\tpointer-events: none;\n\tcontent: attr(aria-label);\n\tbackground: $tooltip-background-color;\n\tborder-radius: $border-radius;\n\topacity: 0;\n}\n\n// This is the tooltip arrow\n.tooltipped::before {\n\tposition: absolute;\n\tz-index: 1000001;\n\tdisplay: none;\n\twidth: 0;\n\theight: 0;\n\tcolor: $tooltip-background-color;\n\tpointer-events: none;\n\tcontent: \"\";\n\tborder: 6px $border-style transparent;\n\topacity: 0;\n}\n\n// delay animation for tooltip\n@keyframes tooltip-appear {\n\tfrom {\n\t\topacity: 0;\n\t}\n\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n// This will indicate when we'll activate the tooltip\n.tooltipped:hover,\n.tooltipped:active,\n.tooltipped:focus {\n\t&::before,\n\t&::after {\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\tanimation-name: tooltip-appear;\n\t\tanimation-duration: $tooltip-duration;\n\t\tanimation-fill-mode: forwards;\n\t\tanimation-timing-function: ease-in;\n\t\tanimation-delay: $tooltip-delay;\n\t}\n}\n\n.tooltipped-no-delay:hover,\n.tooltipped-no-delay:active,\n.tooltipped-no-delay:focus {\n\t&::before,\n\t&::after {\n\t\tanimation-delay: 0s;\n\t}\n}\n\n.tooltipped-multiline:hover,\n.tooltipped-multiline:active,\n.tooltipped-multiline:focus {\n\t&::after {\n\t\tdisplay: table-cell;\n\t}\n}\n\n// Tooltipped south\n.tooltipped-s,\n.tooltipped-se,\n.tooltipped-sw {\n\t&::after {\n\t\ttop: 100%;\n\t\tright: 50%;\n\t\tmargin-top: 6px;\n\t}\n\n\t&::before {\n\t\ttop: auto;\n\t\tright: 50%;\n\t\tbottom: -7px;\n\t\tmargin-right: -6px;\n\t\tborder-bottom-color: $tooltip-background-color;\n\t}\n}\n\n.tooltipped-se {\n\t&::after {\n\t\tright: auto;\n\t\tleft: 50%;\n\t\tmargin-left: -$spacer-3;\n\t}\n}\n\n.tooltipped-sw::after {\n\tmargin-right: -$spacer-3;\n}\n\n// Tooltips above the object\n.tooltipped-n,\n.tooltipped-ne,\n.tooltipped-nw {\n\t&::after {\n\t\tright: 50%;\n\t\tbottom: 100%;\n\t\tmargin-bottom: 6px;\n\t}\n\n\t&::before {\n\t\ttop: -7px;\n\t\tright: 50%;\n\t\tbottom: auto;\n\t\tmargin-right: -6px;\n\t\tborder-top-color: $tooltip-background-color;\n\t}\n}\n\n.tooltipped-ne {\n\t&::after {\n\t\tright: auto;\n\t\tleft: 50%;\n\t\tmargin-left: -$spacer-3;\n\t}\n}\n\n.tooltipped-nw::after {\n\tmargin-right: -$spacer-3;\n}\n\n// Move the tooltip body to the center of the object.\n.tooltipped-s::after,\n.tooltipped-n::after {\n\ttransform: translateX(50%);\n}\n\n// Tooltipped to the left\n.tooltipped-w {\n\t&::after {\n\t\tright: 100%;\n\t\tbottom: 50%;\n\t\tmargin-right: 6px;\n\t\ttransform: translateY(50%);\n\t}\n\n\t&::before {\n\t\ttop: 50%;\n\t\tbottom: 50%;\n\t\tleft: -7px;\n\t\tmargin-top: -6px;\n\t\tborder-left-color: $tooltip-background-color;\n\t}\n}\n\n// tooltipped to the right\n.tooltipped-e {\n\t&::after {\n\t\tbottom: 50%;\n\t\tleft: 100%;\n\t\tmargin-left: 6px;\n\t\ttransform: translateY(50%);\n\t}\n\n\t&::before {\n\t\ttop: 50%;\n\t\tright: -7px;\n\t\tbottom: 50%;\n\t\tmargin-top: -6px;\n\t\tborder-right-color: $tooltip-background-color;\n\t}\n}\n\n// Tooltip align right and left\n.tooltipped-align-right-1,\n.tooltipped-align-right-2 {\n\t&::after {\n\t\tright: 0;\n\t\tmargin-right: 0;\n\t}\n}\n\n.tooltipped-align-right-1 {\n\t&::before {\n\t\tright: 10px;\n\t}\n}\n\n.tooltipped-align-right-2 {\n\t&::before {\n\t\tright: 15px;\n\t}\n}\n\n.tooltipped-align-left-1,\n.tooltipped-align-left-2 {\n\t&::after {\n\t\tleft: 0;\n\t\tmargin-left: 0;\n\t}\n}\n\n.tooltipped-align-left-1 {\n\t&::before {\n\t\tleft: 5px;\n\t}\n}\n\n.tooltipped-align-left-2 {\n\t&::before {\n\t\tleft: 10px;\n\t}\n}\n\n// Multiline tooltips\n//\n// `.tooltipped-multiline` Add this class when you have long content.\n// The downside is you cannot preformat the text with newlines and `[w,e]`\n// are always `$tooltip-max-width` wide.\n.tooltipped-multiline {\n\t&::after {\n\t\twidth: max-content;\n\t\tmax-width: $tooltip-max-width;\n\t\tword-wrap: break-word;\n\t\twhite-space: pre-line;\n\t\tborder-collapse: separate;\n\t}\n\n\t&.tooltipped-s::after,\n\t&.tooltipped-n::after {\n\t\tright: auto;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\t&.tooltipped-w::after,\n\t&.tooltipped-e::after {\n\t\tright: 100%;\n\t}\n}\n\n@media screen and (min-width: 0 \\0\n) {\n\t// IE11\n\t.tooltipped-multiline::after {\n\t\twidth: $tooltip-max-width;\n\t}\n}\n\n// Sticky tooltips\n//\n// Always show the tooltip.\n.tooltipped-sticky {\n\t&::before,\n\t&::after {\n\t\tdisplay: inline-block;\n\t}\n\n\t&.tooltipped-multiline {\n\t\t&::after {\n\t\t\tdisplay: table-cell;\n\t\t}\n\t}\n}\n\n// Alert tooltips\n//\n// Colors for different alert states.\n@mixin colorizeTooltip($text-color, $background-color) {\n\t&::after {\n\t\tcolor: $text-color;\n\t\tbackground: $background-color;\n\t}\n\n\t&.tooltipped-s,\n\t&.tooltipped-se,\n\t&.tooltipped-sw {\n\t\t&::before {\n\t\t\tborder-bottom-color: $background-color;\n\t\t}\n\t}\n\n\t&.tooltipped-n,\n\t&.tooltipped-ne,\n\t&.tooltipped-nw {\n\t\t&::before {\n\t\t\tborder-top-color: $background-color;\n\t\t}\n\t}\n\n\t&.tooltipped-e::before {\n\t\tborder-right-color: $background-color;\n\t}\n\n\t&.tooltipped-w::before {\n\t\tborder-left-color: $background-color;\n\t}\n}\n",null,"/*------------------------------------------------------------------\r\nWooCommerce Wishlist Plugin custom webfont\r\n-------------------------------------------------------------------*/\r\n@font-face {\r\n\tfont-family: 'tinvwl-webfont';\r\n\tsrc: url('../fonts/tinvwl-webfont.eot?xu2uyi');\r\n\tsrc: url('../fonts/tinvwl-webfont.eot?xu2uyi#iefix') format('embedded-opentype'),\r\n\turl('../fonts/tinvwl-webfont.ttf?xu2uyi') format('truetype'),\r\n\turl('../fonts/tinvwl-webfont.woff?xu2uyi') format('woff'),\r\n\turl('../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont') format('svg');\r\n\tfont-weight: normal;\r\n\tfont-style: normal;\r\n}\r\n\r\n.ftinvwl {\r\n\t/* use !important to prevent issues with browser extensions that change fonts */\r\n\tfont-family: 'tinvwl-webfont' !important;\r\n\tspeak: none;\r\n\tfont-style: normal;\r\n\tfont-weight: normal;\r\n\tfont-variant: normal;\r\n\ttext-transform: none;\r\n\tline-height: 1;\r\n\r\n\t/* Better Font Rendering =========== */\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.ftinvwl-twitter:before {\r\n\tcontent: \"\\f099\";\r\n}\r\n\r\n.ftinvwl-facebook:before {\r\n\tcontent: \"\\f09a\";\r\n}\r\n\r\n.ftinvwl-facebook-f:before {\r\n\tcontent: \"\\f09a\";\r\n}\r\n\r\n.ftinvwl-google:before {\r\n\tcontent: \"\\f0d5\";\r\n}\r\n\r\n.ftinvwl-email:before {\r\n\tcontent: \"\\f0e0\";\r\n}\r\n\r\n.ftinvwl-pinterest:before {\r\n\tcontent: \"\\f231\";\r\n}\r\n\r\n.ftinvwl-whatsapp:before {\r\n\tcontent: \"\\f232\";\r\n}\r\n\r\n.ftinvwl-clipboard:before {\r\n\tcontent: \"\\e911\";\r\n}\r\n\r\n.ftinvwl-star:before {\r\n\tcontent: \"\\e912\";\r\n}\r\n\r\n.ftinvwl-shopping-cart:before {\r\n\tcontent: \"\\e913\";\r\n}\r\n\r\n.ftinvwl-magic:before {\r\n\tcontent: \"\\e914\";\r\n}\r\n\r\n.ftinvwl-info:before {\r\n\tcontent: \"\\e915\";\r\n}\r\n\r\n.ftinvwl-graduation-cap:before {\r\n\tcontent: \"\\e918\";\r\n}\r\n\r\n.ftinvwl-floppy-o:before {\r\n\tcontent: \"\\e919\";\r\n}\r\n\r\n.ftinvwl-eyedropper:before {\r\n\tcontent: \"\\e91a\";\r\n}\r\n\r\n.ftinvwl-exclamation-triangle:before {\r\n\tcontent: \"\\e91b\";\r\n}\r\n\r\n.ftinvwl-check:before {\r\n\tcontent: \"\\e91e\";\r\n}\r\n\r\n.ftinvwl-arrow-left:before {\r\n\tcontent: \"\\e91f\";\r\n}\r\n\r\n.ftinvwl-wrench:before {\r\n\tcontent: \"\\e920\";\r\n}\r\n\r\n.ftinvwl-chevron-down:before {\r\n\tcontent: \"\\e900\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-right:before {\r\n\tcontent: \"\\e901\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-left:before {\r\n\tcontent: \"\\e902\";\r\n\r\n}\r\n\r\n.ftinvwl-chevron-up:before {\r\n\tcontent: \"\\e903\";\r\n\r\n}\r\n\r\n.ftinvwl-cancel:before {\r\n\tcontent: \"\\e904\";\r\n\r\n}\r\n\r\n.ftinvwl-times:before {\r\n\tcontent: \"\\e905\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-plus:before {\r\n\tcontent: \"\\e906\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mark-right:before {\r\n\tcontent: \"\\e907\";\r\n\r\n}\r\n\r\n.ftinvwl-heart2:before {\r\n\tcontent: \"\\e908\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-o:before {\r\n\tcontent: \"\\e909\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mark-left:before {\r\n\tcontent: \"\\e90a\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-mail:before {\r\n\tcontent: \"\\e90b\";\r\n\r\n}\r\n\r\n.ftinvwl-heart-tinv:before {\r\n\tcontent: \"\\e90c\";\r\n\r\n}\r\n\r\n.ftinvwl-key:before {\r\n\tcontent: \"\\e90d\";\r\n\r\n}\r\n\r\n.ftinvwl-lock:before {\r\n\tcontent: \"\\e90e\";\r\n\r\n}\r\n\r\n.ftinvwl-hearts:before {\r\n\tcontent: \"\\e90f\";\r\n\r\n}\r\n\r\n.ftinvwl-user:before {\r\n\tcontent: \"\\e910\";\r\n\r\n}\r\n\r\n/* PULSE */\r\n\r\n@-webkit-keyframes ftinvwl-pulse {\r\n\t0% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n\r\n\t50% {\r\n\t\t-webkit-transform: scale(0.8);\r\n\t\ttransform: scale(0.8);\r\n\t}\r\n\r\n\t100% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n}\r\n\r\n@keyframes ftinvwl-pulse {\r\n\t0% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\t-ms-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n\r\n\t50% {\r\n\t\t-webkit-transform: scale(0.8);\r\n\t\t-ms-transform: scale(0.8);\r\n\t\ttransform: scale(0.8);\r\n\t}\r\n\r\n\t100% {\r\n\t\t-webkit-transform: scale(1.1);\r\n\t\t-ms-transform: scale(1.1);\r\n\t\ttransform: scale(1.1);\r\n\t}\r\n}\r\n\r\n.ftinvwl-pulse.ftinvwl-animated::before {\r\n\t-webkit-animation: ftinvwl-pulse 2s linear infinite;\r\n\tanimation: ftinvwl-pulse 2s linear infinite;\r\n}\r\n"]}
|
assets/css/public.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
@@ -125,17 +125,19 @@ ul.products li.product .tinvwl_add_to_wishlist_button{margin-top:1em}
|
|
125 |
.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{margin-right:30px;margin-top:10px;display:inline-block}
|
126 |
.tinv-wishlist .navigation-button>li>.tinv-create-list>a.button,.tinv-wishlist .navigation-button>li>a.button{margin-right:10px}
|
127 |
.tinv-wishlist .navigation-button>li:last-child>.tinv-create-list>a,.tinv-wishlist .navigation-button>li:last-child>a{margin-right:0}
|
128 |
-
.tinv-wishlist .social-buttons{
|
129 |
.tinv-wishlist .social-buttons>span,.tinv-wishlist .social-buttons>ul{display:inline-block;vertical-align:middle}
|
130 |
.tinv-wishlist .social-buttons>span{margin-right:27px}
|
131 |
.tinv-wishlist .social-buttons li{float:left;margin-right:5px;list-style:none}
|
132 |
.tinv-wishlist .social-buttons li:last-child{margin-right:0}
|
133 |
-
.tinv-wishlist .social-buttons li a{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:2em;height:2em;border-radius:50%;text-align:center;-webkit-box-shadow:none;box-shadow:none;border:0;font-size:20px}
|
134 |
-
.tinv-wishlist .social-buttons li a.white{color:#fff}
|
135 |
-
.tinv-wishlist .social-buttons li a.dark{color:#000}
|
136 |
-
.tinv-wishlist .social-buttons li a i{line-height:2em}
|
137 |
.tinv-wishlist .navigation-button .tinv-create-list>a.tinvwl-no-icon>i,.tinv-wishlist .navigation-button li>a.tinvwl-no-icon>i{display:none}
|
138 |
-
.tinv-wishlist .tinv-lists-nav{margin-bottom:35px}
|
|
|
|
|
139 |
.tinv-wishlist .tinv-next{display:inline-block;float:left}
|
140 |
.tinv-wishlist .tinv-prev{display:inline-block;float:left;margin-right:35px !important}
|
141 |
.tinv-wishlist .tinv-prev i{margin-left:0;margin-right:18px}
|
@@ -256,6 +258,8 @@ ul.products li.product .tinvwl_add_to_wishlist_button{margin-top:1em}
|
|
256 |
.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:30px}
|
257 |
.tinv-wishlist .tinv-login form input[name=login]{min-width:auto}
|
258 |
.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:table-cell}
|
|
|
|
|
259 |
}@media screen and (max-width:782px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:46px !important}
|
260 |
}@media only screen and (max-width:667px){.tinv-wishlist.woocommerce .tinv-login form .form-row-first,.tinv-wishlist.woocommerce .tinv-login form .form-row-last{float:none;width:100%}
|
261 |
.tinv-wishlist.woocommerce .tinv-login form .form-row-first{padding:0}
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.10.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
125 |
.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{margin-right:30px;margin-top:10px;display:inline-block}
|
126 |
.tinv-wishlist .navigation-button>li>.tinv-create-list>a.button,.tinv-wishlist .navigation-button>li>a.button{margin-right:10px}
|
127 |
.tinv-wishlist .navigation-button>li:last-child>.tinv-create-list>a,.tinv-wishlist .navigation-button>li:last-child>a{margin-right:0}
|
128 |
+
.tinv-wishlist .social-buttons{text-align:right}
|
129 |
.tinv-wishlist .social-buttons>span,.tinv-wishlist .social-buttons>ul{display:inline-block;vertical-align:middle}
|
130 |
.tinv-wishlist .social-buttons>span{margin-right:27px}
|
131 |
.tinv-wishlist .social-buttons li{float:left;margin-right:5px;list-style:none}
|
132 |
.tinv-wishlist .social-buttons li:last-child{margin-right:0}
|
133 |
+
.tinv-wishlist .social-buttons li a.social{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:2em;height:2em;border-radius:50%;text-align:center;-webkit-box-shadow:none;box-shadow:none;border:0;font-size:20px;text-decoration:none}
|
134 |
+
.tinv-wishlist .social-buttons li a.social.white{color:#fff}
|
135 |
+
.tinv-wishlist .social-buttons li a.social.dark{color:#000}
|
136 |
+
.tinv-wishlist .social-buttons li a.social i{line-height:2em}
|
137 |
.tinv-wishlist .navigation-button .tinv-create-list>a.tinvwl-no-icon>i,.tinv-wishlist .navigation-button li>a.tinvwl-no-icon>i{display:none}
|
138 |
+
.tinv-wishlist .tinv-lists-nav{margin-top:35px;margin-bottom:35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}
|
139 |
+
.tinv-wishlist .tinv-lists-nav>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
|
140 |
+
.tinv-wishlist .tinv-lists-nav>span{font-weight:700}
|
141 |
.tinv-wishlist .tinv-next{display:inline-block;float:left}
|
142 |
.tinv-wishlist .tinv-prev{display:inline-block;float:left;margin-right:35px !important}
|
143 |
.tinv-wishlist .tinv-prev i{margin-left:0;margin-right:18px}
|
258 |
.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:30px}
|
259 |
.tinv-wishlist .tinv-login form input[name=login]{min-width:auto}
|
260 |
.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:table-cell}
|
261 |
+
}@media only screen and (max-width:1023px){.tinv-wishlist .tinv-lists-nav a.tinv-prev>i,.tinv-wishlist .tinv-lists-nav a.tinv-next>i{margin:0}
|
262 |
+
.tinv-wishlist .tinv-lists-nav a.tinv-prev>span,.tinv-wishlist .tinv-lists-nav a.tinv-next>span{display:none}
|
263 |
}@media screen and (max-width:782px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:46px !important}
|
264 |
}@media only screen and (max-width:667px){.tinv-wishlist.woocommerce .tinv-login form .form-row-first,.tinv-wishlist.woocommerce .tinv-login form .form-row-last{float:none;width:100%}
|
265 |
.tinv-wishlist.woocommerce .tinv-login form .form-row-first{padding:0}
|
assets/css/theme.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.10.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
assets/js/admin.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){return"{0}{1}{2}".format(n=n||".",this.pf,t)},this._tm=function(t){var n=$("script#{0}[type='text/template']".format(t));return n.length?n.html():""},this.formElm=function(){if($(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker){var e=function(t){var n=t.substring(1),i=parseInt(n,16);return.2126*(i>>16&255)+.7152*(i>>8&255)+.0722*(i>>0&255)},n=this._csel("-form-color");$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){$(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)).iris("hide"):$(n).iris("hide")})}},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""!==t.val()?(n.removeClass("tinvwl-error"),e.hide(),o.hide()):0==i&&(n.addClass("tinvwl-error"),e.show(),o.show())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),e=t.parents("form").eq(0);i&&("-1"===i.val()?n.preventDefault():e.find("input[type=checkbox]:checked").length||n.preventDefault())},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){var i=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");i&&""===i.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t=this.n;if(this.ho){var n=new Date;t=t+n.getFullYear()+n.getMonth()+n.getDate()}window[t]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})}),function(o){var n=o.n,ho=o.ho,c="";for(var i in ho&&(c="t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),"),o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}(this)}!function(s){s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.attr("type","checkbox").hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var n={onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},c=s.extend(!0,{},n,t);return s(this).each(function(){var t=s(this),n=function(){var t=s(this),n=t.attr("tiwl-show"),i=t.attr("tiwl-hide"),e=c.isChecked.call(t),o=function(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})};return"string"==typeof n&&o(n,e),"string"==typeof i&&o(i,!e),t};return t.is("input")&&"checkbox"==t.attr("type")?(s(this).on("change",n),n.call(t)):t})},s.fn.tiwl_byvalueblock=function(t){var n={onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},i=s.extend(!0,{},n,t);return s(this).each(function(){var t=s(this),n=function(e){var t=s(this),n=t.attr("tiwl-show"),i=t.attr("tiwl-hide"),o=e.onClick.call(t),c=function(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})};return"string"==typeof n&&c(n,o),"string"==typeof i&&c(i,!o),t};return t.is("input")||t.is("select")?(s(this).on("change",function(){n.call(this,i)}),n.call(t,i)):t})};var n=new TInvWL(s);s(document).ready(function(){if(n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover){var t=s(".tinvwl-help");t.popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})}s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})}(jQuery);
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.10.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){return"{0}{1}{2}".format(n=n||".",this.pf,t)},this._tm=function(t){var n=$("script#{0}[type='text/template']".format(t));return n.length?n.html():""},this.formElm=function(){if($(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker){var e=function(t){var n=t.substring(1),i=parseInt(n,16);return.2126*(i>>16&255)+.7152*(i>>8&255)+.0722*(i>>0&255)},n=this._csel("-form-color");$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){$(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)).iris("hide"):$(n).iris("hide")})}},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""!==t.val()?(n.removeClass("tinvwl-error"),e.hide(),o.hide()):0==i&&(n.addClass("tinvwl-error"),e.show(),o.show())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),e=t.parents("form").eq(0);i&&("-1"===i.val()?n.preventDefault():e.find("input[type=checkbox]:checked").length||n.preventDefault())},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){var i=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");i&&""===i.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t=this.n;if(this.ho){var n=new Date;t=t+n.getFullYear()+n.getMonth()+n.getDate()}window[t]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})}),function(o){var n=o.n,ho=o.ho,c="";for(var i in ho&&(c="t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),"),o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}(this)}!function(s){s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.attr("type","checkbox").hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var n={onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},c=s.extend(!0,{},n,t);return s(this).each(function(){var t=s(this),n=function(){var t=s(this),n=t.attr("tiwl-show"),i=t.attr("tiwl-hide"),e=c.isChecked.call(t),o=function(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})};return"string"==typeof n&&o(n,e),"string"==typeof i&&o(i,!e),t};return t.is("input")&&"checkbox"==t.attr("type")?(s(this).on("change",n),n.call(t)):t})},s.fn.tiwl_byvalueblock=function(t){var n={onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},i=s.extend(!0,{},n,t);return s(this).each(function(){var t=s(this),n=function(e){var t=s(this),n=t.attr("tiwl-show"),i=t.attr("tiwl-hide"),o=e.onClick.call(t),c=function(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})};return"string"==typeof n&&c(n,o),"string"==typeof i&&c(i,!o),t};return t.is("input")||t.is("select")?(s(this).on("change",function(){n.call(this,i)}),n.call(t,i)):t})};var n=new TInvWL(s);s(document).ready(function(){if(n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover){var t=s(".tinvwl-help");t.popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})}s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})}(jQuery);
|
assets/js/public.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function update_cart_hash(){jQuery(document.body).on("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist",function(){if("undefined"==typeof wc_cart_fragments_params)return!1;var t=wc_cart_fragments_params.cart_hash_key;localStorage.setItem(t,localStorage.getItem(t)+(new Date).getTime()),sessionStorage.setItem(t,sessionStorage.getItem(t)+(new Date).getTime()),jQuery(document.body).off("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist")})}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}!function(r){r.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href,text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){r("body > .tinv-wishlist").length||r("body").append(r("<div>").addClass("tinv-wishlist")),r(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){r(this).append(r("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){r(t).addClass("tinv-modal-open"),r(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){r(t).removeClass("tinv-modal-open"),r(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(r(this).is(".disabled-add-wishlist"))return!1;r(this).is(".ftinvwl-animated")&&r(this).addClass("ftinvwl-pulse"),this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):o.onActionProduct.call(this),update_cart_hash()},onPrepareDataAction:function(){},filterProductAlreadyIn:function(t){t=t||[];var n={};return r("form.cart[method=post], .woocommerce-variation-add-to-cart").find("input, select").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val();"checkbox"===i||"radio"===i?r(this).is(":checked")&&(n["form"+t]=e):n["form"+t]=e}),n=n.formvariation_id,t.filter(function(t){if("object"!==_typeof(t.in)||"string"!=typeof n)return t.in;var i=parseInt(n);return 0<=t.in.indexOf(i)})},onMultiProductAlreadyIn:function(t){t=t||[];t=o.onPrepareList.call(t)||t,t=o.filterProductAlreadyIn.call(this,t)||t,r(this).parent().parent().find(".already-in").remove();var e="";switch(t.length){case 0:break;default:e=r("<ul>");r.each(t,function(t,i){e.append(r("<li>").html(r("<a>").html(i.title).attr({href:i.url})).val(i.ID))})}e.length&&r(this).closest(".tinv-modal-inner").find("img").after(r("<div>").addClass("already-in").html(o.text_already_in+" ").append(e))},onAction:{redirect:function(t){o.redirectTimer&&clearTimeout(o.redirectTimer),o.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(t){r(this).attr("data-tinv-wl-list",t)},msg:function(t){if(!t)return!1;var i=r(t).eq(0);r("body > .tinv-wishlist").length||r("body").append(r("<div>").addClass("tinv-wishlist")),r("body > .tinv-wishlist").append(i),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),o.redirectTimer&&clearTimeout(o.redirectTimer)})},status:function(t){t&&r(this).addClass("tinvwl-product-in-list")},removed:function(t){t&&r(this).removeClass("tinvwl-product-in-list").removeClass("tinvwl-product-make-remove").attr("data-tinv-wl-action","addto")},make_remove:function(t){r(this).toggleClass("tinvwl-product-make-remove",t).attr("data-tinv-wl-action",t?"remove":"addto")},fragments:function(t){if("undefined"==typeof wc_cart_fragments_params)return r.each(t,function(t,i){r(t).replaceWith(i)}),!1;var i;try{i="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc"),window.localStorage.setItem("wc","test"),window.localStorage.removeItem("wc")}catch(t){i=!1}if(i)try{var e=r.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),n=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",o=sessionStorage.getItem(n),a=Cookies.get("woocommerce_cart_hash"),l=sessionStorage.getItem("wc_cart_created");if(null!=o&&""!==o||(o=""),null!=a&&""!==a||(a=""),o&&(null==l||""===l))throw"No cart_created";if(r.each(t,function(t,i){e[t]=i}),localStorage.setItem(n,localStorage.getItem(n)+(new Date).getTime()),sessionStorage.setItem(n,sessionStorage.getItem(n)+(new Date).getTime()),sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(e)),!e||!e["div.widget_shopping_cart_content"]||o!==a)throw"No fragment";r.each(e,function(t,i){r(t).replaceWith(i)}),r(document.body).trigger("wc_fragments_loaded")}catch(t){r(document.body).trigger("wc_fragment_refresh")}}},onActionProduct:function(t,i){var s={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:r(this).attr("data-tinv-wl-producttype"),product_id:r(this).attr("data-tinv-wl-product")||0,product_variation:r(this).attr("data-tinv-wl-productvariation")||0,product_action:r(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},e=this;r(e).closest("form.cart[method=post], .tinvwl-loop-button-wrapper").find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val(),n=10,o=function t(i,e){if("object"!==_typeof(e))return e;for(var n in void 0===i&&(i={}),e)if(""===n){var o=-1;for(o in i)o=o;i[o=parseInt(o)+1]=t(i[n],e[n])}else i[n]=t(i[n],e[n]);return i};if("button"!==i&&void 0!==t&&"attribute_"!=t.substr(0,10)){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<n;){var a=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===a.length){var l={};l[a[2]]=e,e=l}t=a[1],n--}"checkbox"===i||"radio"===i?r(this).is(":checked")&&(e.length||"object"===_typeof(e)||(e=!0),s.form[t]=o(s.form[t],e)):s.form[t]=o(s.form[t],e)}}),s=o.onPrepareDataAction.call(e,s)||s,r.post(o.api_url,s,function(t){if(o.onDialogHide.call(e.tinvwl_dialog,e),"object"===_typeof(t))for(var i in t)"function"==typeof o.onAction[i]&&o.onAction[i].call(e,t[i]);else"function"==typeof o.onAction.msg&&o.onAction.msg.call(e,t)})}},o=r.extend(!0,{},i,t);return r(this).each(function(){if(!r(this).attr("data-tinv-wl-list"))return!1;if(o.dialogbox&&o.dialogbox.length&&(this.tinvwl_dialog=o.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=o.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=r(this).nextAll(o.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){o.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=r(this).find(o.class.select).eq(0);r(this).find(o.class.newtitle).hide().val(""),e.html(""),r.each(t,function(t,i){o.onCreateWishList.call(e,i)}),o.text_create&&o.onCreateWishList.call(e,{ID:"",title:o.text_create,in:!1}),o.onMultiProductAlreadyIn.call(e,t),o.onSelectWishList.call(e,t),r(this).find(o.class.newtitle).toggle(""===e.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=r.parseJSON(r(this).attr("data-tinv-wl-list"))||[];t.length?(t=o.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),o.onDialogShow.call(this.tinvwl_dialog,this)):o.onActionProduct.call(this)});var n=this;r(this.tinvwl_dialog).find(o.class.dialogbutton).off("click").on("click",function(){var t,i=r(n.tinvwl_dialog).find(o.class.select),e=r(n.tinvwl_dialog).find(o.class.newtitle);i.val()||e.val()?o.onActionProduct.call(n,i.val(),e.val()):((t=e.is(":visible")?e:i).addClass("empty-name-wishlist"),window.setTimeout(function(){t.removeClass("empty-name-wishlist")},1e3))})}r(this).off("click").on("click",o.onClick),o.onInited.call(this,o)})},r(document).ready(function(){r("body").on("click",".tinvwl_add_to_wishlist_button",function(t){if(r(this).is(".disabled-add-wishlist"))return t.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);r(this).is(".inited-add-wishlist")||r(this).tinvwl_to_wishlist({onInited:function(t){r(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),r(document).on("hide_variation",".variations_form",function(t){var i=r(this).find(".tinvwl_add_to_wishlist_button");i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),r(document).on("show_variation",".variations_form",function(t,i,e){var n=r(this).find(".tinvwl_add_to_wishlist_button");if(n.length){var o=JSON.parse(n.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in o)o[s].hasOwnProperty("in")&&Array.isArray(o[s].in)&&-1<(o[s].in||[]).indexOf(i.variation_id)&&(a=!0);n.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto"),t.preventDefault(),n.removeClass("disabled-add-wishlist")}})})}(jQuery),function(n){n(document).ready(function(){if(n("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),n(".tinv-lists-nav").each(function(){n.trim(n(this).html()).length||n(this).remove()}),n("body").on("click",".social-buttons .social[title!=email][title!=whatsapp][title!=clipboard]",function(t){var i=window.open(n(this).attr("href"),n(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}n("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),n("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),n(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),n("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){n(this).data("url")&&(t.preventDefault(),window.location=n(this).data("url"))});var e=n(".tinv-wishlist .navigation-button");e.length&&e.each(function(){var t=n(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),n(".tinv-login .showlogin").unbind("click").on("click",function(t){t.preventDefault(),n(this).closest(".tinv-login").find(".login").toggle()}),n(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){n(this).toggle(!!n(this).children().not(".look_in").length||!!n(this).children(".look_in").children().length)})}),n(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){var t=!("0"==n(".wishlist_products_counter_number").html()||""==n(".wishlist_products_counter_number").html());n(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",t)}),update_cart_hash()}(jQuery),function(n){n.fn.tinvwl_break_submit=function(t){var i={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return n(this).val()},rule:function(){var t=n(this).parents("form").eq(0).find(e.selector),i=e.invert;return 0===t.length?e.ifempty:(t.each(function(){i&&!e.invert||!i&&e.invert||(i=Boolean(e.validate.call(n(this))))}),i)}},e=n.extend(!0,{},i,t);return n(this).each(function(){n(this).on("click",function(t){e.rule.call(n(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault())})})},n(document).ready(function(){n(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),n(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return n(this).is(":checked")}}),n(".global-cb").on("click",function(){n(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",n(this).is(":checked"))})})}(jQuery);
|
1 |
/**
|
2 |
* WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.10.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function update_cart_hash(){jQuery(document.body).on("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist",function(){if("undefined"==typeof wc_cart_fragments_params)return!1;var t=wc_cart_fragments_params.cart_hash_key;localStorage.setItem(t,localStorage.getItem(t)+(new Date).getTime()),sessionStorage.setItem(t,sessionStorage.getItem(t)+(new Date).getTime()),jQuery(document.body).off("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist")})}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}!function(r){r.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href,text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){r("body > .tinv-wishlist").length||r("body").append(r("<div>").addClass("tinv-wishlist")),r(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){r(this).append(r("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){r(t).addClass("tinv-modal-open"),r(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){r(t).removeClass("tinv-modal-open"),r(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(r(this).is(".disabled-add-wishlist"))return!1;r(this).is(".ftinvwl-animated")&&r(this).addClass("ftinvwl-pulse"),this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):o.onActionProduct.call(this),update_cart_hash()},onPrepareDataAction:function(){},filterProductAlreadyIn:function(t){t=t||[];var n={};return r("form.cart[method=post], .woocommerce-variation-add-to-cart").find("input, select").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val();"checkbox"===i||"radio"===i?r(this).is(":checked")&&(n["form"+t]=e):n["form"+t]=e}),n=n.formvariation_id,t.filter(function(t){if("object"!==_typeof(t.in)||"string"!=typeof n)return t.in;var i=parseInt(n);return 0<=t.in.indexOf(i)})},onMultiProductAlreadyIn:function(t){t=t||[];t=o.onPrepareList.call(t)||t,t=o.filterProductAlreadyIn.call(this,t)||t,r(this).parent().parent().find(".already-in").remove();var e="";switch(t.length){case 0:break;default:e=r("<ul>");r.each(t,function(t,i){e.append(r("<li>").html(r("<a>").html(i.title).attr({href:i.url})).val(i.ID))})}e.length&&r(this).closest(".tinv-modal-inner").find("img").after(r("<div>").addClass("already-in").html(o.text_already_in+" ").append(e))},onAction:{redirect:function(t){o.redirectTimer&&clearTimeout(o.redirectTimer),o.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(t){r(this).attr("data-tinv-wl-list",t)},msg:function(t){if(!t)return!1;var i=r(t).eq(0);r("body > .tinv-wishlist").length||r("body").append(r("<div>").addClass("tinv-wishlist")),r("body > .tinv-wishlist").append(i),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),o.redirectTimer&&clearTimeout(o.redirectTimer)})},status:function(t){t&&r(this).addClass("tinvwl-product-in-list")},removed:function(t){t&&r(this).removeClass("tinvwl-product-in-list").removeClass("tinvwl-product-make-remove").attr("data-tinv-wl-action","addto")},make_remove:function(t){r(this).toggleClass("tinvwl-product-make-remove",t).attr("data-tinv-wl-action",t?"remove":"addto")},fragments:function(t){if("undefined"==typeof wc_cart_fragments_params)return r.each(t,function(t,i){r(t).replaceWith(i)}),!1;var i;try{i="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc"),window.localStorage.setItem("wc","test"),window.localStorage.removeItem("wc")}catch(t){i=!1}if(i)try{var e=r.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),n=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",o=sessionStorage.getItem(n),a=Cookies.get("woocommerce_cart_hash"),l=sessionStorage.getItem("wc_cart_created");if(null!=o&&""!==o||(o=""),null!=a&&""!==a||(a=""),o&&(null==l||""===l))throw"No cart_created";if(r.each(t,function(t,i){e[t]=i}),localStorage.setItem(n,localStorage.getItem(n)+(new Date).getTime()),sessionStorage.setItem(n,sessionStorage.getItem(n)+(new Date).getTime()),sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(e)),!e||!e["div.widget_shopping_cart_content"]||o!==a)throw"No fragment";r.each(e,function(t,i){r(t).replaceWith(i)}),r(document.body).trigger("wc_fragments_loaded")}catch(t){r(document.body).trigger("wc_fragment_refresh")}}},onActionProduct:function(t,i){var s={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:r(this).attr("data-tinv-wl-producttype"),product_id:r(this).attr("data-tinv-wl-product")||0,product_variation:r(this).attr("data-tinv-wl-productvariation")||0,product_action:r(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},e=this;r(e).closest("form.cart[method=post], .tinvwl-loop-button-wrapper").find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val(),n=10,o=function t(i,e){if("object"!==_typeof(e))return e;for(var n in void 0===i&&(i={}),e)if(""===n){var o=-1;for(o in i)o=o;i[o=parseInt(o)+1]=t(i[n],e[n])}else i[n]=t(i[n],e[n]);return i};if("button"!==i&&void 0!==t&&"attribute_"!=t.substr(0,10)){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<n;){var a=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===a.length){var l={};l[a[2]]=e,e=l}t=a[1],n--}"checkbox"===i||"radio"===i?r(this).is(":checked")&&(e.length||"object"===_typeof(e)||(e=!0),s.form[t]=o(s.form[t],e)):s.form[t]=o(s.form[t],e)}}),s=o.onPrepareDataAction.call(e,s)||s,r.post(o.api_url,s,function(t){if(o.onDialogHide.call(e.tinvwl_dialog,e),"object"===_typeof(t))for(var i in t)"function"==typeof o.onAction[i]&&o.onAction[i].call(e,t[i]);else"function"==typeof o.onAction.msg&&o.onAction.msg.call(e,t)})}},o=r.extend(!0,{},i,t);return r(this).each(function(){if(!r(this).attr("data-tinv-wl-list"))return!1;if(o.dialogbox&&o.dialogbox.length&&(this.tinvwl_dialog=o.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=o.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=r(this).nextAll(o.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){o.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=r(this).find(o.class.select).eq(0);r(this).find(o.class.newtitle).hide().val(""),e.html(""),r.each(t,function(t,i){o.onCreateWishList.call(e,i)}),o.text_create&&o.onCreateWishList.call(e,{ID:"",title:o.text_create,in:!1}),o.onMultiProductAlreadyIn.call(e,t),o.onSelectWishList.call(e,t),r(this).find(o.class.newtitle).toggle(""===e.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=r.parseJSON(r(this).attr("data-tinv-wl-list"))||[];t.length?(t=o.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),o.onDialogShow.call(this.tinvwl_dialog,this)):o.onActionProduct.call(this)});var n=this;r(this.tinvwl_dialog).find(o.class.dialogbutton).off("click").on("click",function(){var t,i=r(n.tinvwl_dialog).find(o.class.select),e=r(n.tinvwl_dialog).find(o.class.newtitle);i.val()||e.val()?o.onActionProduct.call(n,i.val(),e.val()):((t=e.is(":visible")?e:i).addClass("empty-name-wishlist"),window.setTimeout(function(){t.removeClass("empty-name-wishlist")},1e3))})}r(this).off("click").on("click",o.onClick),o.onInited.call(this,o)})},r(document).ready(function(){r("body").on("click",".tinvwl_add_to_wishlist_button",function(t){if(r(this).is(".disabled-add-wishlist"))return t.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);r(this).is(".inited-add-wishlist")||r(this).tinvwl_to_wishlist({onInited:function(t){r(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),r(document).on("hide_variation",".variations_form",function(t){var i=r(this).find(".tinvwl_add_to_wishlist_button");i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),r(document).on("show_variation",".variations_form",function(t,i,e){var n=r(this).find(".tinvwl_add_to_wishlist_button");if(n.length){var o=JSON.parse(n.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in o)o[s].hasOwnProperty("in")&&Array.isArray(o[s].in)&&-1<(o[s].in||[]).indexOf(i.variation_id)&&(a=!0);n.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto"),t.preventDefault(),n.removeClass("disabled-add-wishlist")}})})}(jQuery),function(n){n(document).ready(function(){if(n("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),n(".tinv-lists-nav").each(function(){n.trim(n(this).html()).length||n(this).remove()}),n("body").on("click",".social-buttons .social[title!=email][title!=whatsapp][title!=clipboard]",function(t){var i=window.open(n(this).attr("href"),n(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}n("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),n("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),n(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),n("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){n(this).data("url")&&(t.preventDefault(),window.location=n(this).data("url"))});var e=n(".tinv-wishlist .navigation-button");e.length&&e.each(function(){var t=n(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),n(".tinv-login .showlogin").unbind("click").on("click",function(t){t.preventDefault(),n(this).closest(".tinv-login").find(".login").toggle()}),n(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){n(this).toggle(!!n(this).children().not(".look_in").length||!!n(this).children(".look_in").children().length)})}),n(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){var t=!("0"==n(".wishlist_products_counter_number").html()||""==n(".wishlist_products_counter_number").html());n(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",t)}),update_cart_hash()}(jQuery),function(n){n.fn.tinvwl_break_submit=function(t){var i={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return n(this).val()},rule:function(){var t=n(this).parents("form").eq(0).find(e.selector),i=e.invert;return 0===t.length?e.ifempty:(t.each(function(){i&&!e.invert||!i&&e.invert||(i=Boolean(e.validate.call(n(this))))}),i)}},e=n.extend(!0,{},i,t);return n(this).each(function(){n(this).on("click",function(t){e.rule.call(n(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault())})})},n(document).ready(function(){n(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),n(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return n(this).is(":checked")}}),n(".global-cb").on("click",function(){n(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",n(this).is(":checked"))})})}(jQuery);
|
includes/activator.class.php
CHANGED
@@ -1,924 +1,987 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Activation/Deactivation plugin class
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist
|
7 |
-
*/
|
8 |
-
|
9 |
-
// If this file is called directly, abort.
|
10 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
-
die;
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Activation/Deactivation plugin class
|
16 |
-
*/
|
17 |
-
class TInvWL_Activator {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Plugin name
|
21 |
-
*
|
22 |
-
* @var string Using defined constant.
|
23 |
-
*/
|
24 |
-
static $_name = TINVWL_PREFIX;
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Prefix database
|
28 |
-
*
|
29 |
-
* @see wpdb
|
30 |
-
* @var string
|
31 |
-
*/
|
32 |
-
static $wpdb_prefix;
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Database version
|
36 |
-
*
|
37 |
-
* @var string
|
38 |
-
*/
|
39 |
-
static $_version = TINVWL_FVERSION;
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Current installed database version
|
43 |
-
*
|
44 |
-
* @var string
|
45 |
-
*/
|
46 |
-
static $_prev;
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Regular expression for sorting database version function
|
50 |
-
*
|
51 |
-
* @var string
|
52 |
-
*/
|
53 |
-
const REGEXP = '/^database_/i';
|
54 |
-
|
55 |
-
/**
|
56 |
-
* Method activation plugin.
|
57 |
-
*/
|
58 |
-
public static function activate() {
|
59 |
-
if ( self::update() ) {
|
60 |
-
return false;
|
61 |
-
}
|
62 |
-
if ( is_null( get_option( self::$_name . '_db_ver', null ) ) ) {
|
63 |
-
TInvWL_WizardSetup::setup();
|
64 |
-
}
|
65 |
-
self::database();
|
66 |
-
self::load_data();
|
67 |
-
TInvWL_Public_TInvWL::update_rewrite_rules();
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Method deactivation plugin.
|
72 |
-
*/
|
73 |
-
public static function uninstall() {
|
74 |
-
self::database( 'destroy' );
|
75 |
-
self::unload_data();
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Method update plugin.
|
80 |
-
*/
|
81 |
-
public static function update() {
|
82 |
-
$current_version = get_option( self::$_name . '_db_ver', self::$_version );
|
83 |
-
if ( version_compare( self::$_version, $current_version, 'gt' ) ) {
|
84 |
-
self::database( 'upgrade', $current_version );
|
85 |
-
self::upgrade_data();
|
86 |
-
TInvWL_Public_TInvWL::update_rewrite_rules();
|
87 |
-
|
88 |
-
return true;
|
89 |
-
}
|
90 |
-
|
91 |
-
return false;
|
92 |
-
}
|
93 |
-
|
94 |
-
/**
|
95 |
-
* Require function database and apply method
|
96 |
-
*
|
97 |
-
* @param string $action create|destroy.
|
98 |
-
* @param string $prev Current installed version.
|
99 |
-
*/
|
100 |
-
private static function database( $action = 'create', $prev = 'f.0' ) {
|
101 |
-
|
102 |
-
$activator = new TInvWL_Activator();
|
103 |
-
$lists = get_class_methods( $activator );
|
104 |
-
unset( $activator );
|
105 |
-
|
106 |
-
self::$_prev = $prev;
|
107 |
-
$lists = array_filter( $lists, array( __CLASS__, 'filter_database' ) );
|
108 |
-
uasort( $lists, array( __CLASS__, 'sort_database' ) );
|
109 |
-
|
110 |
-
$tables = array();
|
111 |
-
foreach ( $lists as $method ) {
|
112 |
-
$tables = self::merge_database( $tables, $method );
|
113 |
-
}
|
114 |
-
if ( ! empty( $tables ) && is_array( $tables ) ) {
|
115 |
-
self::$action( $tables );
|
116 |
-
}
|
117 |
-
}
|
118 |
-
|
119 |
-
/**
|
120 |
-
* Merge table wit upgrade attributes
|
121 |
-
*
|
122 |
-
* @param array $tables1 Collecting tables.
|
123 |
-
* @param string $method Method for get new tables.
|
124 |
-
*
|
125 |
-
* @return array
|
126 |
-
*/
|
127 |
-
public static function merge_database( $tables1, $method ) {
|
128 |
-
$tables2 = self::$method();
|
129 |
-
foreach ( (array) $tables2 as $name => $table ) {
|
130 |
-
if ( empty( $table ) ) {
|
131 |
-
continue;
|
132 |
-
}
|
133 |
-
if ( array_key_exists( 'upgrade', $table ) ) {
|
134 |
-
$_upgrade = $table['upgrade'];
|
135 |
-
$table['upgrade'] = array();
|
136 |
-
$table['upgrade'][ self::pre_database( $method ) ] = $_upgrade;
|
137 |
-
}
|
138 |
-
if ( array_key_exists( $name, $tables1 ) ) {
|
139 |
-
if ( ! array_key_exists( 'upgrade', $tables1[ $name ] ) ) {
|
140 |
-
$tables1[ $name ]['upgrade'] = array();
|
141 |
-
}
|
142 |
-
if ( ! array_key_exists( 'upgrade', $table ) ) {
|
143 |
-
$table['upgrade'] = array();
|
144 |
-
}
|
145 |
-
$table['upgrade'] = tinv_array_merge( $tables1[ $name ]['upgrade'], $table['upgrade'] );
|
146 |
-
}
|
147 |
-
if ( empty( $table['field'] ) ) {
|
148 |
-
$tables1[ $name ]['upgrade'] = $table['upgrade'];
|
149 |
-
} else {
|
150 |
-
$tables1[ $name ] = $table;
|
151 |
-
}
|
152 |
-
}
|
153 |
-
|
154 |
-
return $tables1;
|
155 |
-
}
|
156 |
-
|
157 |
-
/**
|
158 |
-
* Filter methods for creating database
|
159 |
-
*
|
160 |
-
* @param string $method Method name from this class.
|
161 |
-
*
|
162 |
-
* @return boolean
|
163 |
-
*/
|
164 |
-
public static function filter_database( $method ) {
|
165 |
-
if ( ! preg_match( self::REGEXP, $method ) ) {
|
166 |
-
return false;
|
167 |
-
}
|
168 |
-
if ( version_compare( self::$_prev, self::pre_database( $method ), 'ge' ) ) {
|
169 |
-
return false;
|
170 |
-
}
|
171 |
-
|
172 |
-
return version_compare( self::$_version, self::pre_database( $method ), 'ge' );
|
173 |
-
}
|
174 |
-
|
175 |
-
/**
|
176 |
-
* Sort methods for creating database
|
177 |
-
*
|
178 |
-
* @param string $method1 Method name first from this class.
|
179 |
-
* @param string $method2 Method name second from this class.
|
180 |
-
*
|
181 |
-
* @return type
|
182 |
-
*/
|
183 |
-
public static function sort_database( $method1, $method2 ) {
|
184 |
-
return version_compare( self::pre_database( $method1 ), self::pre_database( $method2 ) );
|
185 |
-
}
|
186 |
-
|
187 |
-
/**
|
188 |
-
* Convert method name to version
|
189 |
-
*
|
190 |
-
* @param string $method Method name from this class.
|
191 |
-
*
|
192 |
-
* @return string
|
193 |
-
*/
|
194 |
-
public static function pre_database( $method ) {
|
195 |
-
$method = preg_replace( self::REGEXP, '', $method );
|
196 |
-
$method = str_replace( '_', '.', $method );
|
197 |
-
|
198 |
-
return $method;
|
199 |
-
}
|
200 |
-
|
201 |
-
/**
|
202 |
-
* Creation SQL request for creation table
|
203 |
-
*
|
204 |
-
* @param string $name Name Table.
|
205 |
-
* @param array $table Structured array table.
|
206 |
-
* array 'field' Array fields.
|
207 |
-
* string 'charset' Charset table.
|
208 |
-
* string 'key' Primary key.
|
209 |
-
* string '
|
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 |
-
$flags = $t[
|
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 |
-
$table['key'] =
|
263 |
-
}
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
$table['post'] = '
|
269 |
-
}
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
*
|
291 |
-
*
|
292 |
-
* @
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
$action =
|
433 |
-
if (
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
if (
|
438 |
-
|
439 |
-
}
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
*
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
*
|
483 |
-
*
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
*
|
549 |
-
*
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
$
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
$
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
if (
|
617 |
-
$sql
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
*
|
631 |
-
*
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
),
|
727 |
-
'
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
'
|
754 |
-
'
|
755 |
-
'
|
756 |
-
'
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
'
|
762 |
-
'
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
*
|
777 |
-
*
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
'
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
'
|
791 |
-
'
|
792 |
-
'
|
793 |
-
'
|
794 |
-
'
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
'
|
839 |
-
'
|
840 |
-
'
|
841 |
-
'
|
842 |
-
'
|
843 |
-
'
|
844 |
-
'
|
845 |
-
'
|
846 |
-
'
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Activation/Deactivation plugin class
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist
|
7 |
+
*/
|
8 |
+
|
9 |
+
// If this file is called directly, abort.
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
die;
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Activation/Deactivation plugin class
|
16 |
+
*/
|
17 |
+
class TInvWL_Activator {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Plugin name
|
21 |
+
*
|
22 |
+
* @var string Using defined constant.
|
23 |
+
*/
|
24 |
+
static $_name = TINVWL_PREFIX;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Prefix database
|
28 |
+
*
|
29 |
+
* @see wpdb
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
static $wpdb_prefix;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Database version
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
static $_version = TINVWL_FVERSION;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Current installed database version
|
43 |
+
*
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
static $_prev;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Regular expression for sorting database version function
|
50 |
+
*
|
51 |
+
* @var string
|
52 |
+
*/
|
53 |
+
const REGEXP = '/^database_/i';
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Method activation plugin.
|
57 |
+
*/
|
58 |
+
public static function activate() {
|
59 |
+
if ( self::update() ) {
|
60 |
+
return false;
|
61 |
+
}
|
62 |
+
if ( is_null( get_option( self::$_name . '_db_ver', null ) ) ) {
|
63 |
+
TInvWL_WizardSetup::setup();
|
64 |
+
}
|
65 |
+
self::database();
|
66 |
+
self::load_data();
|
67 |
+
TInvWL_Public_TInvWL::update_rewrite_rules();
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Method deactivation plugin.
|
72 |
+
*/
|
73 |
+
public static function uninstall() {
|
74 |
+
self::database( 'destroy' );
|
75 |
+
self::unload_data();
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Method update plugin.
|
80 |
+
*/
|
81 |
+
public static function update() {
|
82 |
+
$current_version = get_option( self::$_name . '_db_ver', self::$_version );
|
83 |
+
if ( version_compare( self::$_version, $current_version, 'gt' ) ) {
|
84 |
+
self::database( 'upgrade', $current_version );
|
85 |
+
self::upgrade_data();
|
86 |
+
TInvWL_Public_TInvWL::update_rewrite_rules();
|
87 |
+
|
88 |
+
return true;
|
89 |
+
}
|
90 |
+
|
91 |
+
return false;
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Require function database and apply method
|
96 |
+
*
|
97 |
+
* @param string $action create|destroy.
|
98 |
+
* @param string $prev Current installed version.
|
99 |
+
*/
|
100 |
+
private static function database( $action = 'create', $prev = 'f.0' ) {
|
101 |
+
|
102 |
+
$activator = new TInvWL_Activator();
|
103 |
+
$lists = get_class_methods( $activator );
|
104 |
+
unset( $activator );
|
105 |
+
|
106 |
+
self::$_prev = $prev;
|
107 |
+
$lists = array_filter( $lists, array( __CLASS__, 'filter_database' ) );
|
108 |
+
uasort( $lists, array( __CLASS__, 'sort_database' ) );
|
109 |
+
|
110 |
+
$tables = array();
|
111 |
+
foreach ( $lists as $method ) {
|
112 |
+
$tables = self::merge_database( $tables, $method );
|
113 |
+
}
|
114 |
+
if ( ! empty( $tables ) && is_array( $tables ) ) {
|
115 |
+
self::$action( $tables );
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Merge table wit upgrade attributes
|
121 |
+
*
|
122 |
+
* @param array $tables1 Collecting tables.
|
123 |
+
* @param string $method Method for get new tables.
|
124 |
+
*
|
125 |
+
* @return array
|
126 |
+
*/
|
127 |
+
public static function merge_database( $tables1, $method ) {
|
128 |
+
$tables2 = self::$method();
|
129 |
+
foreach ( (array) $tables2 as $name => $table ) {
|
130 |
+
if ( empty( $table ) ) {
|
131 |
+
continue;
|
132 |
+
}
|
133 |
+
if ( array_key_exists( 'upgrade', $table ) ) {
|
134 |
+
$_upgrade = $table['upgrade'];
|
135 |
+
$table['upgrade'] = array();
|
136 |
+
$table['upgrade'][ self::pre_database( $method ) ] = $_upgrade;
|
137 |
+
}
|
138 |
+
if ( array_key_exists( $name, $tables1 ) ) {
|
139 |
+
if ( ! array_key_exists( 'upgrade', $tables1[ $name ] ) ) {
|
140 |
+
$tables1[ $name ]['upgrade'] = array();
|
141 |
+
}
|
142 |
+
if ( ! array_key_exists( 'upgrade', $table ) ) {
|
143 |
+
$table['upgrade'] = array();
|
144 |
+
}
|
145 |
+
$table['upgrade'] = tinv_array_merge( $tables1[ $name ]['upgrade'], $table['upgrade'] );
|
146 |
+
}
|
147 |
+
if ( empty( $table['field'] ) ) {
|
148 |
+
$tables1[ $name ]['upgrade'] = $table['upgrade'];
|
149 |
+
} else {
|
150 |
+
$tables1[ $name ] = $table;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
return $tables1;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Filter methods for creating database
|
159 |
+
*
|
160 |
+
* @param string $method Method name from this class.
|
161 |
+
*
|
162 |
+
* @return boolean
|
163 |
+
*/
|
164 |
+
public static function filter_database( $method ) {
|
165 |
+
if ( ! preg_match( self::REGEXP, $method ) ) {
|
166 |
+
return false;
|
167 |
+
}
|
168 |
+
if ( version_compare( self::$_prev, self::pre_database( $method ), 'ge' ) ) {
|
169 |
+
return false;
|
170 |
+
}
|
171 |
+
|
172 |
+
return version_compare( self::$_version, self::pre_database( $method ), 'ge' );
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Sort methods for creating database
|
177 |
+
*
|
178 |
+
* @param string $method1 Method name first from this class.
|
179 |
+
* @param string $method2 Method name second from this class.
|
180 |
+
*
|
181 |
+
* @return type
|
182 |
+
*/
|
183 |
+
public static function sort_database( $method1, $method2 ) {
|
184 |
+
return version_compare( self::pre_database( $method1 ), self::pre_database( $method2 ) );
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Convert method name to version
|
189 |
+
*
|
190 |
+
* @param string $method Method name from this class.
|
191 |
+
*
|
192 |
+
* @return string
|
193 |
+
*/
|
194 |
+
public static function pre_database( $method ) {
|
195 |
+
$method = preg_replace( self::REGEXP, '', $method );
|
196 |
+
$method = str_replace( '_', '.', $method );
|
197 |
+
|
198 |
+
return $method;
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Creation SQL request for creation table
|
203 |
+
*
|
204 |
+
* @param string $name Name Table.
|
205 |
+
* @param array $table Structured array table.
|
206 |
+
* array 'field' Array fields.
|
207 |
+
* string 'charset' Charset table.
|
208 |
+
* string 'key' Primary key.
|
209 |
+
* string 'index' Custom index.
|
210 |
+
* string 'post' Custom elements in format SQL.
|
211 |
+
*
|
212 |
+
* @return string
|
213 |
+
*/
|
214 |
+
public static function table( $name, $table ) {
|
215 |
+
$name = self::$wpdb_prefix . self::$_name . '_' . $name;
|
216 |
+
$fields = $table['field'];
|
217 |
+
$index = ( isset( $table['index'] ) ) ? $table['index'] : null;
|
218 |
+
$table = filter_var_array( $table, array(
|
219 |
+
'charset' => FILTER_SANITIZE_STRING,
|
220 |
+
'key' => FILTER_SANITIZE_STRING,
|
221 |
+
'post' => FILTER_DEFAULT,
|
222 |
+
) );
|
223 |
+
|
224 |
+
$table['charset'] = ( empty( $table['charset'] ) ) ? 'utf8' : $table['charset'];
|
225 |
+
$table['charset'] = sprintf( 'DEFAULT CHARSET=%s', $table['charset'] );
|
226 |
+
|
227 |
+
$keys = array_keys( $fields );
|
228 |
+
if ( ! in_array( $table['key'], $keys ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
|
229 |
+
$table['key'] = null;
|
230 |
+
}
|
231 |
+
$t = self::column_database();
|
232 |
+
foreach ( $fields as $key => $flags ) {
|
233 |
+
if ( is_string( $flags ) ) {
|
234 |
+
if ( array_key_exists( $flags, $t ) ) {
|
235 |
+
$flags = $t[ $flags ];
|
236 |
+
} else {
|
237 |
+
$flags = $t['text'];
|
238 |
+
}
|
239 |
+
}
|
240 |
+
$fields[ $key ] = $flags;
|
241 |
+
}
|
242 |
+
if ( empty( $table['key'] ) ) {
|
243 |
+
foreach ( $fields as $key => $flags ) {
|
244 |
+
if ( array_key_exists( 4, $flags ) ) {
|
245 |
+
if ( $flags[4] ) {
|
246 |
+
$table['key'] = $key;
|
247 |
+
break;
|
248 |
+
}
|
249 |
+
}
|
250 |
+
}
|
251 |
+
if ( empty( $table['key'] ) ) {
|
252 |
+
foreach ( $keys as $key ) {
|
253 |
+
if ( preg_match( '/id$/i', $key ) ) {
|
254 |
+
$table['key'] = $key;
|
255 |
+
break;
|
256 |
+
}
|
257 |
+
}
|
258 |
+
}
|
259 |
+
}
|
260 |
+
unset( $keys );
|
261 |
+
if ( empty( $table['key'] ) ) {
|
262 |
+
$table['key'] = '';
|
263 |
+
} else {
|
264 |
+
$table['key'] = sprintf( ', PRIMARY KEY (`%s`)', $table['key'] );
|
265 |
+
}
|
266 |
+
|
267 |
+
if ( empty( $table['post'] ) ) {
|
268 |
+
$table['post'] = '';
|
269 |
+
} else {
|
270 |
+
$table['post'] = ', ' . $table['post'];
|
271 |
+
}
|
272 |
+
$indexes = '';
|
273 |
+
if ( $index ) {
|
274 |
+
foreach ( $index as $index_name => $columns ) {
|
275 |
+
$indexes = sprintf( ', INDEX %s (%s)', $index_name, $columns );
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
foreach ( $fields as $key => $format ) {
|
280 |
+
$fields[ $key ] = self::field( $key, $format );
|
281 |
+
}
|
282 |
+
$fields = implode( ', ', $fields );
|
283 |
+
|
284 |
+
$sql = sprintf( 'CREATE TABLE IF NOT EXISTS `%s` ( %s%s%s%s) %s; ', $name, $fields, $table['key'], $indexes, $table['post'], $table['charset'] );
|
285 |
+
|
286 |
+
return $sql;
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Created SQL field
|
291 |
+
*
|
292 |
+
* @param string $name Name field.
|
293 |
+
* @param array $newformat Structure field.
|
294 |
+
* string 0 Data Types column.
|
295 |
+
* integer|string 1 Length or Size column.
|
296 |
+
* boolean 2 is NULL?
|
297 |
+
* integer|string 3 Specifies a default value for a column.
|
298 |
+
* boolean 4 is AUTO_INCREMENT?.
|
299 |
+
*
|
300 |
+
* @return string
|
301 |
+
*/
|
302 |
+
public static function field( $name, $newformat ) {
|
303 |
+
$format = array( 'TEXT', null, false, null, false );
|
304 |
+
|
305 |
+
foreach ( $format as $key => $value ) {
|
306 |
+
if ( array_key_exists( $key, $newformat ) ) {
|
307 |
+
$format[ $key ] = $newformat[ $key ];
|
308 |
+
}
|
309 |
+
}
|
310 |
+
|
311 |
+
if ( ! is_null( $format[1] ) ) {
|
312 |
+
$format[1] = sprintf( '(%s)', $format[1] );
|
313 |
+
}
|
314 |
+
|
315 |
+
$format[2] = ( filter_var( $format[2], FILTER_VALIDATE_BOOLEAN ) ? '' : 'NOT ' ) . 'NULL';
|
316 |
+
|
317 |
+
if ( ! is_null( $format[3] ) ) {
|
318 |
+
if ( ! in_array( $format[3], array( 'CURRENT_TIMESTAMP' ) ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
|
319 |
+
$format[3] = is_string( $format[3] ) ? "'" . $format[3] . "'" : $format[3];
|
320 |
+
}
|
321 |
+
$format[3] = sprintf( 'DEFAULT %s', $format[3] );
|
322 |
+
}
|
323 |
+
|
324 |
+
$format[4] = ( filter_var( $format[4], FILTER_VALIDATE_BOOLEAN ) ? 'AUTO_INCREMENT' : null );
|
325 |
+
|
326 |
+
array_unshift( $format, '`' . $name . '`' );
|
327 |
+
$format = array_filter( $format );
|
328 |
+
|
329 |
+
return implode( ' ', $format );
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Created tables from array
|
334 |
+
*
|
335 |
+
* @param array $tables Array tables.
|
336 |
+
*
|
337 |
+
* @return boolean
|
338 |
+
* @global wpdb $wpdb
|
339 |
+
*
|
340 |
+
*/
|
341 |
+
public static function create( $tables ) {
|
342 |
+
global $wpdb;
|
343 |
+
self::$wpdb_prefix = $wpdb->prefix;
|
344 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
345 |
+
|
346 |
+
foreach ( $tables as $name => $table ) {
|
347 |
+
if ( array_key_exists( 'field', $table ) && ! empty( $table['field'] ) ) {
|
348 |
+
$table = self::table( $name, $table );
|
349 |
+
$tables[ $name ] = dbDelta( $table );
|
350 |
+
}
|
351 |
+
}
|
352 |
+
|
353 |
+
add_option( self::$_name . '_db_ver', self::$_version );
|
354 |
+
|
355 |
+
return true;
|
356 |
+
}
|
357 |
+
|
358 |
+
/**
|
359 |
+
* Upgrade tables from array
|
360 |
+
*
|
361 |
+
* @param array $tables Array tables.
|
362 |
+
*
|
363 |
+
* @return boolean
|
364 |
+
* @global wpdb $wpdb
|
365 |
+
*
|
366 |
+
*/
|
367 |
+
public static function upgrade( $tables ) {
|
368 |
+
|
369 |
+
self::create( $tables );
|
370 |
+
|
371 |
+
foreach ( $tables as $name => $table ) {
|
372 |
+
self::upgrade_action( $name, $table );
|
373 |
+
}
|
374 |
+
|
375 |
+
update_option( self::$_name . '_db_ver', self::$_version );
|
376 |
+
|
377 |
+
return true;
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Get columns for exist table.
|
382 |
+
*
|
383 |
+
* @param string $name Table name.
|
384 |
+
*
|
385 |
+
* @return array
|
386 |
+
* @global wpdb $wpdb
|
387 |
+
*
|
388 |
+
*/
|
389 |
+
public static function upgrade_get_columns( $name ) {
|
390 |
+
global $wpdb;
|
391 |
+
|
392 |
+
$_fields = array();
|
393 |
+
$fields = $wpdb->get_results( "DESCRIBE `{$name}`", ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
394 |
+
foreach ( $fields as $field ) {
|
395 |
+
$_fields[ $field['Field'] ] = $field;
|
396 |
+
}
|
397 |
+
|
398 |
+
return $_fields;
|
399 |
+
}
|
400 |
+
|
401 |
+
/**
|
402 |
+
* Apply upgrade action
|
403 |
+
*
|
404 |
+
* @param string $name Name Table.
|
405 |
+
* @param array $table Structured array table.
|
406 |
+
*
|
407 |
+
* @return boolean
|
408 |
+
* @global wpdb $wpdb
|
409 |
+
*
|
410 |
+
*/
|
411 |
+
public static function upgrade_action( $name, $table ) {
|
412 |
+
|
413 |
+
if ( ! array_key_exists( 'upgrade', $table ) ) {
|
414 |
+
return false;
|
415 |
+
}
|
416 |
+
|
417 |
+
$t = self::column_database();
|
418 |
+
foreach ( $table['field'] as $key => $flags ) {
|
419 |
+
if ( is_string( $flags ) ) {
|
420 |
+
if ( array_key_exists( $flags, $t ) ) {
|
421 |
+
$flags = $t[ $flags ];
|
422 |
+
} else {
|
423 |
+
$flags = $t['text'];
|
424 |
+
}
|
425 |
+
$table['field'][ $key ] = $flags;
|
426 |
+
}
|
427 |
+
}
|
428 |
+
$name = self::$wpdb_prefix . self::$_name . '_' . $name;
|
429 |
+
$upgrades = (array) $table['upgrade'];
|
430 |
+
foreach ( $upgrades as $ver_upgrades ) {
|
431 |
+
foreach ( $ver_upgrades as $upgrade ) {
|
432 |
+
$action = $upgrade;
|
433 |
+
if ( is_array( $upgrade ) ) {
|
434 |
+
$action = $upgrade['action'];
|
435 |
+
unset( $upgrade['action'] );
|
436 |
+
}
|
437 |
+
if ( ! is_string( $action ) ) {
|
438 |
+
continue;
|
439 |
+
}
|
440 |
+
$action = preg_replace( '/[^a-z0-9_]/i', '', (string) $action );
|
441 |
+
if ( empty( $action ) ) {
|
442 |
+
continue;
|
443 |
+
}
|
444 |
+
|
445 |
+
if ( method_exists( __CLASS__, __FUNCTION__ . '_' . $action ) ) {
|
446 |
+
call_user_func( array( __CLASS__, __FUNCTION__ . '_' . $action ), $name, $table, $upgrade );
|
447 |
+
}
|
448 |
+
}
|
449 |
+
}
|
450 |
+
}
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Apply upgrade action
|
454 |
+
* Truncate table
|
455 |
+
*
|
456 |
+
* @param string $name Table name.
|
457 |
+
*
|
458 |
+
* @global wpdb $wpdb
|
459 |
+
*
|
460 |
+
*/
|
461 |
+
public static function upgrade_action_truncate( $name ) {
|
462 |
+
global $wpdb;
|
463 |
+
$wpdb->query( "TRUNCATE `{$name}`" ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
464 |
+
}
|
465 |
+
|
466 |
+
/**
|
467 |
+
* Apply upgrade action
|
468 |
+
* Drop table
|
469 |
+
*
|
470 |
+
* @param string $name Table name.
|
471 |
+
*
|
472 |
+
* @global wpdb $wpdb
|
473 |
+
*
|
474 |
+
*/
|
475 |
+
public static function upgrade_action_drop( $name ) {
|
476 |
+
global $wpdb;
|
477 |
+
$sql = sprintf( 'DROP TABLE IF EXISTS `%s`;', $name );
|
478 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
479 |
+
}
|
480 |
+
|
481 |
+
/**
|
482 |
+
* Apply upgrade action
|
483 |
+
* Rename table
|
484 |
+
*
|
485 |
+
* @param string $name Table name.
|
486 |
+
* @param array $table Not used.
|
487 |
+
* @param array $upgrade Upgrade fields.
|
488 |
+
*
|
489 |
+
* @return boolean
|
490 |
+
* @global wpdb $wpdb
|
491 |
+
*
|
492 |
+
*/
|
493 |
+
public static function upgrade_action_rename_table( $name, $table, $upgrade ) {
|
494 |
+
global $wpdb;
|
495 |
+
if ( ! array_key_exists( 'from', $upgrade ) ) {
|
496 |
+
return false;
|
497 |
+
}
|
498 |
+
$_name = self::$wpdb_prefix . self::$_name . '_' . $upgrade['from'];
|
499 |
+
|
500 |
+
$_t_name = $wpdb->get_var( "SHOW TABLES LIKE '{$_name}'" ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
501 |
+
if ( $_t_name == $_name ) { // WPCS: loose comparison ok.
|
502 |
+
self::upgrade_action_drop( $name );
|
503 |
+
}
|
504 |
+
$wpdb->query( sprintf( 'RENAME TABLE `%s` TO `%s`;', $_name, $name ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
505 |
+
}
|
506 |
+
|
507 |
+
/**
|
508 |
+
* Apply upgrade action
|
509 |
+
* Update fields table
|
510 |
+
*
|
511 |
+
* @param string $name Table name.
|
512 |
+
* @param array $table Table array.
|
513 |
+
*
|
514 |
+
* @global wpdb $wpdb
|
515 |
+
*
|
516 |
+
*/
|
517 |
+
public static function upgrade_action_update_fields( $name, $table ) {
|
518 |
+
global $wpdb;
|
519 |
+
|
520 |
+
$_fields = self::upgrade_get_columns( $name );
|
521 |
+
$fields = $table['field'];
|
522 |
+
|
523 |
+
// Search excess fields.
|
524 |
+
foreach ( $_fields as $field => $attr ) {
|
525 |
+
if ( ! array_key_exists( $field, $fields ) ) {
|
526 |
+
$sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $field );
|
527 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
528 |
+
}
|
529 |
+
}
|
530 |
+
|
531 |
+
$prev_field = '';
|
532 |
+
|
533 |
+
foreach ( $fields as $field => $attr ) {
|
534 |
+
$attr = self::field( $field, $attr );
|
535 |
+
|
536 |
+
$sql = sprintf( 'ALTER TABLE `%s` MODIFY %s;', $name, $attr );
|
537 |
+
if ( ! array_key_exists( $field, $_fields ) ) {
|
538 |
+
$_prev_field = empty( $prev_field ) ? '' : " AFTER `{$prev_field}`";
|
539 |
+
$sql = sprintf( 'ALTER TABLE `%s` ADD %s;', $name, $attr . $_prev_field );
|
540 |
+
}
|
541 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
542 |
+
|
543 |
+
$prev_field = $field;
|
544 |
+
}
|
545 |
+
}
|
546 |
+
|
547 |
+
/**
|
548 |
+
* Apply upgrade action
|
549 |
+
* Add table index
|
550 |
+
*
|
551 |
+
* @global wpdb $wpdb
|
552 |
+
*
|
553 |
+
* @param string $name Table name.
|
554 |
+
* @param array $table Table array.
|
555 |
+
*/
|
556 |
+
public static function upgrade_action_add_index( $name, $table ) {
|
557 |
+
global $wpdb;
|
558 |
+
|
559 |
+
$indexes = $table['index'];
|
560 |
+
|
561 |
+
|
562 |
+
foreach ( $indexes as $index => $columns ) {
|
563 |
+
|
564 |
+
$sql = sprintf( 'ALTER TABLE `%s` ADD INDEX %s (%s);', $name, $index, $columns );
|
565 |
+
|
566 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
567 |
+
|
568 |
+
}
|
569 |
+
}
|
570 |
+
|
571 |
+
/**
|
572 |
+
* Apply upgrade action
|
573 |
+
* Update field table
|
574 |
+
*
|
575 |
+
* @param string $name Table name.
|
576 |
+
* @param array $table Table array.
|
577 |
+
* @param array $upgrade Upgrade fields.
|
578 |
+
*
|
579 |
+
* @return boolean
|
580 |
+
* @global wpdb $wpdb
|
581 |
+
*
|
582 |
+
*/
|
583 |
+
public static function upgrade_action_update_field( $name, $table, $upgrade ) {
|
584 |
+
global $wpdb;
|
585 |
+
if ( ! array_key_exists( 'field', $upgrade ) ) {
|
586 |
+
return false;
|
587 |
+
}
|
588 |
+
$name_field = $upgrade['field'];
|
589 |
+
|
590 |
+
$_fields = self::upgrade_get_columns( $name );
|
591 |
+
$fields = $table['field'];
|
592 |
+
|
593 |
+
$sql = '';
|
594 |
+
|
595 |
+
if ( array_key_exists( $name_field, $fields ) ) {
|
596 |
+
$prev_field = '';
|
597 |
+
foreach ( $fields as $field => $attr ) {
|
598 |
+
if ( $name_field == $field ) { // WPCS: loose comparison ok.
|
599 |
+
break;
|
600 |
+
}
|
601 |
+
$prev_field = $field;
|
602 |
+
}
|
603 |
+
|
604 |
+
$attr = self::field( $name_field, $fields[ $name_field ] );
|
605 |
+
|
606 |
+
$sql = sprintf( 'ALTER TABLE `%s` MODIFY %s;', $name, $attr );
|
607 |
+
if ( ! array_key_exists( $name_field, $_fields ) ) {
|
608 |
+
$_prev_field = empty( $prev_field ) ? '' : " AFTER `{$prev_field}`";
|
609 |
+
$sql = sprintf( 'ALTER TABLE `%s` ADD %s;', $name, $attr . $_prev_field );
|
610 |
+
}
|
611 |
+
} else {
|
612 |
+
if ( ! array_key_exists( $name_field, $fields ) ) {
|
613 |
+
$sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $name_field );
|
614 |
+
}
|
615 |
+
}
|
616 |
+
if ( ! empty( $sql ) ) {
|
617 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
618 |
+
}
|
619 |
+
}
|
620 |
+
|
621 |
+
/**
|
622 |
+
* Apply upgrade action
|
623 |
+
* Rename field.
|
624 |
+
*
|
625 |
+
* @param string $name Table name.
|
626 |
+
* @param array $table Table array.
|
627 |
+
* @param array $upgrade Upgrade fields.
|
628 |
+
*
|
629 |
+
* @return boolean
|
630 |
+
* @global wpdb $wpdb
|
631 |
+
*
|
632 |
+
*/
|
633 |
+
public static function upgrade_action_rename_field( $name, $table, $upgrade ) {
|
634 |
+
global $wpdb;
|
635 |
+
if ( ! array_key_exists( 'from', $upgrade ) || ! array_key_exists( 'to', $upgrade ) ) {
|
636 |
+
return false;
|
637 |
+
}
|
638 |
+
$old_field = $upgrade['from'];
|
639 |
+
$new_field = $upgrade['to'];
|
640 |
+
|
641 |
+
$_fields = self::upgrade_get_columns( $name );
|
642 |
+
$fields = $table['field'];
|
643 |
+
|
644 |
+
if ( ! array_key_exists( $old_field, $_fields ) || ! array_key_exists( $new_field, $fields ) ) {
|
645 |
+
return false;
|
646 |
+
}
|
647 |
+
|
648 |
+
if ( array_key_exists( $new_field, $_fields ) ) {
|
649 |
+
$sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $new_field );
|
650 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
651 |
+
}
|
652 |
+
|
653 |
+
$attr = self::field( $new_field, $fields[ $new_field ] );
|
654 |
+
|
655 |
+
$sql = sprintf( 'ALTER TABLE `%s` CHANGE `%s` %s;', $name, $old_field, $attr );
|
656 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
657 |
+
|
658 |
+
return true;
|
659 |
+
}
|
660 |
+
|
661 |
+
/**
|
662 |
+
* Apply upgrade action
|
663 |
+
* Use sql.
|
664 |
+
*
|
665 |
+
* @param string $name Table name.
|
666 |
+
* @param array $table Not used.
|
667 |
+
* @param array $upgrade Upgrade fields.
|
668 |
+
*
|
669 |
+
* @return boolean
|
670 |
+
* @global wpdb $wpdb
|
671 |
+
*
|
672 |
+
*/
|
673 |
+
public static function upgrade_action_sql( $name, $table, $upgrade ) {
|
674 |
+
global $wpdb;
|
675 |
+
if ( ! array_key_exists( 'sql', $upgrade ) ) {
|
676 |
+
return false;
|
677 |
+
}
|
678 |
+
$name = self::$wpdb_prefix . self::$_name . '_' . $name;
|
679 |
+
|
680 |
+
$wpdb->query( str_replace( '{table_name}', $name, $upgrade['sql'] ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
681 |
+
}
|
682 |
+
|
683 |
+
/**
|
684 |
+
* Destroy tables from array
|
685 |
+
*
|
686 |
+
* @param type $tables Array tables.
|
687 |
+
*
|
688 |
+
* @return boolean
|
689 |
+
* @global wpdb $wpdb
|
690 |
+
*
|
691 |
+
*/
|
692 |
+
public static function destroy( $tables ) {
|
693 |
+
global $wpdb;
|
694 |
+
self::$wpdb_prefix = $wpdb->prefix;
|
695 |
+
|
696 |
+
foreach ( $tables as $name => $table ) {
|
697 |
+
$table = self::$wpdb_prefix . self::$_name . '_' . $name;
|
698 |
+
$sql = sprintf( 'DROP TABLE IF EXISTS `%s`;', $table );
|
699 |
+
$wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
700 |
+
}
|
701 |
+
|
702 |
+
delete_option( self::$_name . '_db_ver' );
|
703 |
+
|
704 |
+
return true;
|
705 |
+
}
|
706 |
+
|
707 |
+
/**
|
708 |
+
* Predefined fields attributes
|
709 |
+
*
|
710 |
+
* @return array
|
711 |
+
*/
|
712 |
+
public static function column_database() {
|
713 |
+
/**
|
714 |
+
* Array format for fields
|
715 |
+
*
|
716 |
+
* @param string TYPE
|
717 |
+
* @param integer|string SIZE
|
718 |
+
* @param boolean NULL
|
719 |
+
* @param integer|string DEFAULT
|
720 |
+
* @param boolean AUTO_INCREMENT
|
721 |
+
*/
|
722 |
+
return array(
|
723 |
+
'first++' => array( 'BIGINT', null, false, null, true ),
|
724 |
+
'int_0' => array( 'BIGINT', null, false, 0 ),
|
725 |
+
'int_1' => array( 'BIGINT', null, false, 1 ),
|
726 |
+
'text' => array( 'TEXT', null, true, null ),
|
727 |
+
'longtext' => array( 'LONGTEXT' ),
|
728 |
+
'date' => array( 'DATETIME', null, false, '0000-00-00 00:00:00' ),
|
729 |
+
'bool' => array( 'TINYINT', 1, false, 1 ),
|
730 |
+
);
|
731 |
+
}
|
732 |
+
|
733 |
+
/**
|
734 |
+
* Database
|
735 |
+
*
|
736 |
+
* @return array
|
737 |
+
* @since 1.0.0
|
738 |
+
*/
|
739 |
+
private static function database_1_0_0() {
|
740 |
+
$t = array(
|
741 |
+
'status' => array( 'VARCHAR', 20, false, 'public' ),
|
742 |
+
'type' => array( 'VARCHAR', 20, false, 'list' ),
|
743 |
+
'key_elem' => array( 'VARCHAR', 45 ),
|
744 |
+
'key_user' => array( 'TINYINT', 1, false, 7 ),
|
745 |
+
);
|
746 |
+
|
747 |
+
return array(
|
748 |
+
'lists' => array(
|
749 |
+
'field' => array(
|
750 |
+
'ID' => 'first++',
|
751 |
+
'author' => 'int_0',
|
752 |
+
'date' => 'date',
|
753 |
+
'title' => 'text',
|
754 |
+
'status' => $t['status'],
|
755 |
+
'type' => $t['type'],
|
756 |
+
'share_key' => $t['key_elem'],
|
757 |
+
),
|
758 |
+
),
|
759 |
+
'items' => array(
|
760 |
+
'field' => array(
|
761 |
+
'ID' => 'first++',
|
762 |
+
'wishlist_id' => 'int_0',
|
763 |
+
'product_id' => 'int_0',
|
764 |
+
'variation_id' => 'int_0',
|
765 |
+
'author' => 'int_0',
|
766 |
+
'date' => 'date',
|
767 |
+
'quantity' => 'int_1',
|
768 |
+
'price' => $t['key_elem'],
|
769 |
+
'in_stock' => 'bool',
|
770 |
+
),
|
771 |
+
),
|
772 |
+
);
|
773 |
+
}
|
774 |
+
|
775 |
+
/**
|
776 |
+
* Database
|
777 |
+
*
|
778 |
+
* @return array
|
779 |
+
* @since 1.5.0
|
780 |
+
*/
|
781 |
+
private static function database_1_5_0() {
|
782 |
+
return array(
|
783 |
+
'items' => array(
|
784 |
+
'field' => array(
|
785 |
+
'ID' => 'first++',
|
786 |
+
'wishlist_id' => 'int_0',
|
787 |
+
'product_id' => 'int_0',
|
788 |
+
'variation_id' => 'int_0',
|
789 |
+
'formdata' => 'text',
|
790 |
+
'author' => 'int_0',
|
791 |
+
'date' => 'date',
|
792 |
+
'quantity' => 'int_1',
|
793 |
+
'price' => array( 'VARCHAR', 255 ),
|
794 |
+
'in_stock' => 'bool',
|
795 |
+
),
|
796 |
+
'upgrade' => array(
|
797 |
+
array(
|
798 |
+
'action' => 'update_fields',
|
799 |
+
),
|
800 |
+
),
|
801 |
+
),
|
802 |
+
);
|
803 |
+
}
|
804 |
+
|
805 |
+
/**
|
806 |
+
* Database
|
807 |
+
*
|
808 |
+
* @return array
|
809 |
+
* @since 1.8.13
|
810 |
+
*/
|
811 |
+
private static function database_1_8_13() {
|
812 |
+
$t = array(
|
813 |
+
'status' => array( 'VARCHAR', 20, false, 'public' ),
|
814 |
+
'type' => array( 'VARCHAR', 20, false, 'list' ),
|
815 |
+
'key_elem' => array( 'VARCHAR', 45 ),
|
816 |
+
'key_user' => array( 'TINYINT', 1, false, 7 ),
|
817 |
+
);
|
818 |
+
|
819 |
+
return array(
|
820 |
+
'lists' => array(
|
821 |
+
'field' => array(
|
822 |
+
'ID' => 'first++',
|
823 |
+
'author' => 'int_0',
|
824 |
+
'date' => 'date',
|
825 |
+
'title' => 'text',
|
826 |
+
'status' => $t['status'],
|
827 |
+
'type' => $t['type'],
|
828 |
+
'share_key' => $t['key_elem'],
|
829 |
+
),
|
830 |
+
'upgrade' => array(
|
831 |
+
array(
|
832 |
+
'action' => 'update_fields',
|
833 |
+
),
|
834 |
+
),
|
835 |
+
),
|
836 |
+
'items' => array(
|
837 |
+
'field' => array(
|
838 |
+
'ID' => 'first++',
|
839 |
+
'wishlist_id' => 'int_0',
|
840 |
+
'product_id' => 'int_0',
|
841 |
+
'variation_id' => 'int_0',
|
842 |
+
'formdata' => 'text',
|
843 |
+
'author' => 'int_0',
|
844 |
+
'date' => 'date',
|
845 |
+
'quantity' => 'int_1',
|
846 |
+
'price' => array( 'VARCHAR', 255 ),
|
847 |
+
'in_stock' => 'bool',
|
848 |
+
),
|
849 |
+
'upgrade' => array(
|
850 |
+
array(
|
851 |
+
'action' => 'update_fields',
|
852 |
+
),
|
853 |
+
),
|
854 |
+
),
|
855 |
+
);
|
856 |
+
}
|
857 |
+
|
858 |
+
/**
|
859 |
+
* Database
|
860 |
+
*
|
861 |
+
* @return array
|
862 |
+
* @since 1.9.16
|
863 |
+
*/
|
864 |
+
private static function database_1_9_16() {
|
865 |
+
|
866 |
+
return array(
|
867 |
+
'items' => array(
|
868 |
+
'field' => array(
|
869 |
+
'ID' => 'first++',
|
870 |
+
'wishlist_id' => 'int_0',
|
871 |
+
'product_id' => 'int_0',
|
872 |
+
'variation_id' => 'int_0',
|
873 |
+
'formdata' => 'text',
|
874 |
+
'author' => 'int_0',
|
875 |
+
'date' => 'date',
|
876 |
+
'quantity' => 'int_1',
|
877 |
+
'price' => array( 'VARCHAR', 255, false, 0 ),
|
878 |
+
'in_stock' => 'bool',
|
879 |
+
),
|
880 |
+
'upgrade' => array(
|
881 |
+
array(
|
882 |
+
'action' => 'update_fields',
|
883 |
+
),
|
884 |
+
),
|
885 |
+
),
|
886 |
+
);
|
887 |
+
}
|
888 |
+
|
889 |
+
/**
|
890 |
+
* Database
|
891 |
+
*
|
892 |
+
* @return array
|
893 |
+
* @since 1.10.0
|
894 |
+
*/
|
895 |
+
private static function database_1_10_0() {
|
896 |
+
|
897 |
+
return array(
|
898 |
+
'analytics' => array(
|
899 |
+
'field' => array(
|
900 |
+
'ID' => array( 'VARCHAR', 32 ),
|
901 |
+
'wishlist_id' => 'int_0',
|
902 |
+
'product_id' => 'int_0',
|
903 |
+
'variation_id' => 'int_0',
|
904 |
+
'visite_author' => 'int_0',
|
905 |
+
'visite' => 'int_0',
|
906 |
+
'click_author' => 'int_0',
|
907 |
+
'click' => 'int_0',
|
908 |
+
'cart' => 'int_0',
|
909 |
+
'sell_of_wishlist' => 'int_0',
|
910 |
+
'sell_as_gift' => 'int_0',
|
911 |
+
),
|
912 |
+
'key' => 'ID',
|
913 |
+
'index' => array(
|
914 |
+
'unique_product' => 'wishlist_id, product_id, variation_id',
|
915 |
+
),
|
916 |
+
),
|
917 |
+
);
|
918 |
+
}
|
919 |
+
|
920 |
+
/**
|
921 |
+
* Set localisation
|
922 |
+
*/
|
923 |
+
private static function set_locale() {
|
924 |
+
$locale = apply_filters( 'plugin_locale', get_locale(), TINVWL_DOMAIN );
|
925 |
+
$mofile = sprintf( '%1$s-%2$s.mo', TINVWL_DOMAIN, $locale );
|
926 |
+
$mofiles = array();
|
927 |
+
|
928 |
+
$mofiles[] = WP_LANG_DIR . DIRECTORY_SEPARATOR . basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . $mofile;
|
929 |
+
$mofiles[] = WP_LANG_DIR . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $mofile;
|
930 |
+
$mofiles[] = TINVWL_PATH . 'languages' . DIRECTORY_SEPARATOR . $mofile;
|
931 |
+
foreach ( $mofiles as $mofile ) {
|
932 |
+
if ( file_exists( $mofile ) && load_textdomain( TINVWL_DOMAIN, $mofile ) ) {
|
933 |
+
return;
|
934 |
+
}
|
935 |
+
}
|
936 |
+
|
937 |
+
load_plugin_textdomain( TINVWL_DOMAIN, false, basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . 'languages' );
|
938 |
+
}
|
939 |
+
|
940 |
+
/**
|
941 |
+
* Load default data
|
942 |
+
*/
|
943 |
+
public static function load_data() {
|
944 |
+
self::set_locale();
|
945 |
+
$settings = tinv_get_option_defaults( 'all' );
|
946 |
+
foreach ( $settings as $setting => $array ) {
|
947 |
+
add_option( sprintf( '%s-%s', self::$_name, $setting ), $array );
|
948 |
+
}
|
949 |
+
}
|
950 |
+
|
951 |
+
/**
|
952 |
+
* Upgrade default data
|
953 |
+
*/
|
954 |
+
public static function upgrade_data() {
|
955 |
+
self::set_locale();
|
956 |
+
$settings = tinv_get_option_defaults( 'all' );
|
957 |
+
foreach ( $settings as $setting => $array ) {
|
958 |
+
$_array = get_option( sprintf( '%s-%s', self::$_name, $setting ) );
|
959 |
+
if ( false === $_array ) {
|
960 |
+
add_option( sprintf( '%s-%s', self::$_name, $setting ), $array );
|
961 |
+
} else {
|
962 |
+
$need_upgrade = false;
|
963 |
+
foreach ( (array) $array as $key => $value ) {
|
964 |
+
if ( ! array_key_exists( $key, (array) $_array ) ) {
|
965 |
+
$_array[ $key ] = $value;
|
966 |
+
$need_upgrade = true;
|
967 |
+
}
|
968 |
+
}
|
969 |
+
if ( $need_upgrade ) {
|
970 |
+
update_option( sprintf( '%s-%s', self::$_name, $setting ), $_array );
|
971 |
+
}
|
972 |
+
}
|
973 |
+
}
|
974 |
+
}
|
975 |
+
|
976 |
+
/**
|
977 |
+
* Unload default data
|
978 |
+
*/
|
979 |
+
public static function unload_data() {
|
980 |
+
$settings = array_keys( tinv_get_option_defaults( 'all' ) );
|
981 |
+
foreach ( $settings as $setting ) {
|
982 |
+
delete_option( sprintf( '%s-%s', self::$_name, $setting ) );
|
983 |
+
}
|
984 |
+
delete_option( self::$_name . '_ver' );
|
985 |
+
delete_option( self::$_name . '_wizard' );
|
986 |
+
}
|
987 |
+
}
|
includes/analytics.class.php
ADDED
@@ -0,0 +1,497 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Analytics function class
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Analytics
|
7 |
+
*/
|
8 |
+
|
9 |
+
// If this file is called directly, abort.
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
die;
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Analytics function class
|
16 |
+
*/
|
17 |
+
class TInvWL_Analytics {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Database table
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
private $table;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Plugin name
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
private $_name;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Constructor
|
35 |
+
*
|
36 |
+
* @global wpdb $wpdb
|
37 |
+
* @param array $wishlist Object wishlist.
|
38 |
+
* @param string $plugin_name Plugin name.
|
39 |
+
*/
|
40 |
+
function __construct( $wishlist, $plugin_name = TINVWL_PREFIX ) {
|
41 |
+
global $wpdb;
|
42 |
+
|
43 |
+
$this->wishlist = (array) $wishlist;
|
44 |
+
$this->_name = $plugin_name;
|
45 |
+
$this->table = sprintf( '%s%s_%s', $wpdb->prefix, $this->_name, 'analytics' );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Get wishlist id
|
50 |
+
*
|
51 |
+
* @return int
|
52 |
+
*/
|
53 |
+
function wishlist_id() {
|
54 |
+
if ( is_array( $this->wishlist ) && array_key_exists( 'ID', $this->wishlist ) ) {
|
55 |
+
return $this->wishlist['ID'];
|
56 |
+
}
|
57 |
+
return 0;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get author wishlist
|
62 |
+
*
|
63 |
+
* @return int
|
64 |
+
*/
|
65 |
+
function wishlist_author() {
|
66 |
+
if ( is_array( $this->wishlist ) && array_key_exists( 'author', $this->wishlist ) ) {
|
67 |
+
return $this->wishlist['author'];
|
68 |
+
}
|
69 |
+
return 0;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Get product info
|
74 |
+
*
|
75 |
+
* @param integer $product_id Product id.
|
76 |
+
* @param integer $variation_id Product variation id.
|
77 |
+
* @return mixed
|
78 |
+
*/
|
79 |
+
private function product_data( $product_id, $variation_id = 0 ) {
|
80 |
+
$product_id = absint( $product_id );
|
81 |
+
$variation_id = absint( $variation_id );
|
82 |
+
|
83 |
+
if ( 'product_variation' == get_post_type( $product_id ) ) { // WPCS: loose comparison ok.
|
84 |
+
$variation_id = $product_id;
|
85 |
+
$product_id = wp_get_post_parent_id( $variation_id );
|
86 |
+
}
|
87 |
+
|
88 |
+
$product_data = wc_get_product( $variation_id ? $variation_id : $product_id );
|
89 |
+
|
90 |
+
if ( ! $product_data || 'trash' === $product_data->post->post_status ) {
|
91 |
+
return null;
|
92 |
+
}
|
93 |
+
|
94 |
+
$product_data->variation_id = absint( $product_data->variation_id );
|
95 |
+
return $product_data;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Add views analitycs
|
100 |
+
*
|
101 |
+
* @param integer $wishlist_id If exist wishlist object, you can put 0.
|
102 |
+
* @param boolean $author is author wislist.
|
103 |
+
* @return boolean
|
104 |
+
*/
|
105 |
+
function wishlist_view( $wishlist_id = 0, $author = null ) {
|
106 |
+
if ( empty( $wishlist_id ) ) {
|
107 |
+
$wishlist_id = $this->wishlist_id();
|
108 |
+
}
|
109 |
+
$this->view_products( $wishlist_id, $author );
|
110 |
+
return $this->add( ($author ? 'author' : 'visite' ), $wishlist_id );
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Add views analitycs
|
115 |
+
*
|
116 |
+
* @param integer $wishlist_id If exist wishlist object, you can put 0.
|
117 |
+
* @param boolean $author is author wislist.
|
118 |
+
* @return boolean
|
119 |
+
*/
|
120 |
+
function view_products( $wishlist_id = 0, $author = null ) {
|
121 |
+
if ( empty( $wishlist_id ) ) {
|
122 |
+
$wishlist_id = $this->wishlist_id();
|
123 |
+
}
|
124 |
+
$wishlist_id = absint( $wishlist_id );
|
125 |
+
$wlp = new TInvWL_Product( array(), $this->_name );
|
126 |
+
$products = $wlp->get_wishlist( array(
|
127 |
+
'wishlist_id' => $wishlist_id,
|
128 |
+
'external' => false,
|
129 |
+
) );
|
130 |
+
if ( empty( $products ) || ! is_array( $products ) ) {
|
131 |
+
return false;
|
132 |
+
}
|
133 |
+
foreach ( $products as $product ) {
|
134 |
+
$this->add( ( $author ? 'author' : 'visite' ), $wishlist_id, $product['product_id'], $product['variation_id'] );
|
135 |
+
}
|
136 |
+
return true;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Apply analytics actions
|
141 |
+
*
|
142 |
+
* @param string $type Type action.
|
143 |
+
* @param integer $product_id Product id.
|
144 |
+
* @param integer $variation_id Product variation id.
|
145 |
+
* @param integer $quantity Quantity applyed product.
|
146 |
+
* @return boolean
|
147 |
+
*/
|
148 |
+
private function _product( $type, $product_id, $variation_id = 0, $quantity = 1 ) {
|
149 |
+
$wishlist_id = $this->wishlist_id();
|
150 |
+
$quantity = absint( $quantity );
|
151 |
+
return $this->add( $type, $wishlist_id, $product_id, $variation_id, $quantity );
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Add to cart product
|
156 |
+
*
|
157 |
+
* @param integer $product_id Product id.
|
158 |
+
* @param integer $variation_id Product variation id.
|
159 |
+
* @param integer $quantity Quantity applyed product.
|
160 |
+
* @return boolean
|
161 |
+
*/
|
162 |
+
function cart_product( $product_id, $variation_id = 0, $quantity = 1 ) {
|
163 |
+
return $this->_product( 'add_to_cart', $product_id, $variation_id, $quantity );
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Bougt product
|
168 |
+
*
|
169 |
+
* @param integer $product_id Product id.
|
170 |
+
* @param integer $variation_id Product variation id.
|
171 |
+
* @param integer $quantity Quantity applyed product.
|
172 |
+
* @return boolean
|
173 |
+
*/
|
174 |
+
function sell_product( $product_id, $variation_id = 0, $quantity = 1 ) {
|
175 |
+
return $this->_product( 'sell', $product_id, $variation_id, $quantity );
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Click to product page from wishlist
|
180 |
+
*
|
181 |
+
* @param integer $product_id Product id.
|
182 |
+
* @param integer $variation_id Product variation id.
|
183 |
+
* @param integer $quantity Quantity applyed product.
|
184 |
+
* @return boolean
|
185 |
+
*/
|
186 |
+
function click_product_from_wl( $product_id, $variation_id = 0, $quantity = 1 ) {
|
187 |
+
return $this->_product( 'click', $product_id, $variation_id, $quantity );
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Click to product page from wishlist by author
|
192 |
+
*
|
193 |
+
* @param integer $product_id Product id.
|
194 |
+
* @param integer $variation_id Product variation id.
|
195 |
+
* @param integer $quantity Quantity applyed product.
|
196 |
+
* @return boolean
|
197 |
+
*/
|
198 |
+
function click_author_product_from_wl( $product_id, $variation_id = 0, $quantity = 1 ) {
|
199 |
+
return $this->_product( 'author_click', $product_id, $variation_id, $quantity );
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Bougt product from wishlist
|
204 |
+
*
|
205 |
+
* @param integer $product_id Product id.
|
206 |
+
* @param integer $variation_id Product variation id.
|
207 |
+
* @param integer $quantity Quantity applyed product.
|
208 |
+
* @return boolean
|
209 |
+
*/
|
210 |
+
function sell_product_from_wl( $product_id, $variation_id = 0, $quantity = 1 ) {
|
211 |
+
return $this->_product( 'wishlist', $product_id, $variation_id, $quantity );
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Gifted product
|
216 |
+
*
|
217 |
+
* @param integer $product_id Product id.
|
218 |
+
* @param integer $variation_id Product variation id.
|
219 |
+
* @param integer $quantity Quantity applyed product.
|
220 |
+
* @return boolean
|
221 |
+
*/
|
222 |
+
function gifted_product( $product_id, $variation_id = 0, $quantity = 1 ) {
|
223 |
+
return $this->_product( 'gift', $product_id, $variation_id, $quantity );
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Add action product
|
228 |
+
*
|
229 |
+
* @global wpdb $wpdb
|
230 |
+
* @param string $type Action field.
|
231 |
+
* @param integer $wishlist_id If exist wishlist object, you can put 0.
|
232 |
+
* @param integer $product_id Product id.
|
233 |
+
* @param integer $variation_id Product variation id.
|
234 |
+
* @param integer $quantity Quantity applyed actions.
|
235 |
+
* @return boolean
|
236 |
+
*/
|
237 |
+
function add( $type = 'visite', $wishlist_id = 0, $product_id = 0, $variation_id = 0, $quantity = 1 ) {
|
238 |
+
if ( ! in_array( $type, array( 'add_to_cart', 'author', 'author_click', 'click', 'gift', 'visite', 'wishlist' ) ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
|
239 |
+
return false;
|
240 |
+
}
|
241 |
+
if ( empty( $wishlist_id ) ) {
|
242 |
+
$wishlist_id = $this->wishlist_id();
|
243 |
+
}
|
244 |
+
if ( empty( $wishlist_id ) ) {
|
245 |
+
return false;
|
246 |
+
}
|
247 |
+
if ( empty( $product_id ) && ! empty( $variation_id ) ) {
|
248 |
+
$product_data = $this->product_data( $product_id, $variation_id );
|
249 |
+
if ( $product_data ) {
|
250 |
+
$product_id = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->id : ( $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id() ) );
|
251 |
+
$variation_id = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->variation_id : ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
252 |
+
} else {
|
253 |
+
return false;
|
254 |
+
}
|
255 |
+
}
|
256 |
+
$data = array(
|
257 |
+
'wishlist_id' => $wishlist_id,
|
258 |
+
'product_id' => $product_id,
|
259 |
+
'variation_id' => $variation_id,
|
260 |
+
);
|
261 |
+
$data['ID'] = md5( implode( '|' , $data ) );
|
262 |
+
|
263 |
+
if ( 'visite' == $type ) { // WPCS: loose comparison ok.
|
264 |
+
$user = wp_get_current_user();
|
265 |
+
if ( $user->exists() ) {
|
266 |
+
if ( $this->wishlist_author() == $user->ID ) { // WPCS: loose comparison ok.
|
267 |
+
$type = 'author';
|
268 |
+
}
|
269 |
+
}
|
270 |
+
}
|
271 |
+
switch ( $type ) {
|
272 |
+
case 'author':
|
273 |
+
$data['visite_author'] = $quantity;
|
274 |
+
case 'visite':
|
275 |
+
$data['visite'] = $quantity;
|
276 |
+
break;
|
277 |
+
case 'author_click':
|
278 |
+
$data['click_author'] = $quantity;
|
279 |
+
case 'click':
|
280 |
+
$data['click'] = $quantity;
|
281 |
+
break;
|
282 |
+
case 'add_to_cart':
|
283 |
+
$data['cart'] = $quantity;
|
284 |
+
break;
|
285 |
+
case 'gift':
|
286 |
+
$data['sell_as_gift'] = $quantity;
|
287 |
+
case 'wishlist':
|
288 |
+
$data['sell_of_wishlist'] = $quantity;
|
289 |
+
break;
|
290 |
+
}
|
291 |
+
switch ( $type ) {
|
292 |
+
case 'author':
|
293 |
+
case 'visite':
|
294 |
+
break;
|
295 |
+
default :
|
296 |
+
if ( empty( $product_id ) ) {
|
297 |
+
return false;
|
298 |
+
}
|
299 |
+
}
|
300 |
+
$fields = array();
|
301 |
+
$values = array();
|
302 |
+
$duplicates = array();
|
303 |
+
foreach ( $data as $key => $value ) {
|
304 |
+
$fields[] = $key;
|
305 |
+
$values[] = $value;
|
306 |
+
if ( in_array( $key, array( 'cart', 'sell_as_gift', 'click_author', 'click', 'sell_of_wishlist', 'visite', 'visite_author' ) ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
|
307 |
+
$duplicates[] = sprintf( '`%s`=`%s`+%d', $key, $key, $value );
|
308 |
+
}
|
309 |
+
}
|
310 |
+
$fields = '`' . implode( '`,`', $fields ) . '`';
|
311 |
+
$values = "'" . implode( "','", $values ) . "'";
|
312 |
+
$duplicates = implode( ',', $duplicates );
|
313 |
+
global $wpdb;
|
314 |
+
return $wpdb->query( "INSERT INTO `$this->table` ($fields) VALUES ($values) ON DUPLICATE KEY UPDATE $duplicates" ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
315 |
+
}
|
316 |
+
|
317 |
+
/**
|
318 |
+
* Get products
|
319 |
+
*
|
320 |
+
* @global wpdb $wpdb
|
321 |
+
* @param array $data Request.
|
322 |
+
* @return array
|
323 |
+
*/
|
324 |
+
function get( $data = array() ) {
|
325 |
+
$default = array(
|
326 |
+
'count' => 10,
|
327 |
+
'field' => null,
|
328 |
+
'offset' => 0,
|
329 |
+
'order' => 'ASC',
|
330 |
+
'order_by' => 'visite',
|
331 |
+
'external' => true,
|
332 |
+
'sql' => '',
|
333 |
+
);
|
334 |
+
|
335 |
+
foreach ( $default as $_k => $_version ) {
|
336 |
+
if ( array_key_exists( $_k, $data ) ) {
|
337 |
+
$default[ $_k ] = $data[ $_k ];
|
338 |
+
unset( $data[ $_k ] );
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
$default['offset'] = absint( $default['offset'] );
|
343 |
+
$default['count'] = absint( $default['count'] );
|
344 |
+
if ( is_array( $default['field'] ) ) {
|
345 |
+
$default['field'] = '`' . implode( '`,`', $default['field'] ) . '`';
|
346 |
+
} elseif ( is_string( $default['field'] ) ) {
|
347 |
+
$default['field'] = array( 'ID', $default['field'] );
|
348 |
+
$default['field'] = '`' . implode( '`,`', $default['field'] ) . '`';
|
349 |
+
} else {
|
350 |
+
$default['field'] = '*';
|
351 |
+
}
|
352 |
+
$sql = "SELECT {$default[ 'field' ]} FROM `{$this->table}`";
|
353 |
+
|
354 |
+
$where = '1';
|
355 |
+
if ( ! empty( $data ) && is_array( $data ) ) {
|
356 |
+
foreach ( $data as $f => $v ) {
|
357 |
+
$s = is_array( $v ) ? ' IN ' : '=';
|
358 |
+
if ( is_array( $v ) ) {
|
359 |
+
$v = "'" . implode( "','", $v ) . "'";
|
360 |
+
$v = "($v)";
|
361 |
+
} else {
|
362 |
+
$v = "'$v'";
|
363 |
+
}
|
364 |
+
$data[ $f ] = sprintf( '`%s`%s%s', $f, $s, $v );
|
365 |
+
}
|
366 |
+
$where = implode( ' AND ', $data );
|
367 |
+
$sql .= ' WHERE ' . $where;
|
368 |
+
}
|
369 |
+
|
370 |
+
$sql .= sprintf( ' ORDER BY `%s` %s LIMIT %d,%d;', $default['order_by'], $default['order'], $default['offset'], $default['count'] );
|
371 |
+
if ( ! empty( $default['sql'] ) ) {
|
372 |
+
$replacer = $replace = array();
|
373 |
+
$replace[0] = '{table}';
|
374 |
+
$replacer[0] = $this->table;
|
375 |
+
$replace[1] = '{where}';
|
376 |
+
$replacer[1] = $where;
|
377 |
+
|
378 |
+
foreach ( $default as $key => $value ) {
|
379 |
+
$i = count( $replace );
|
380 |
+
|
381 |
+
$replace[ $i ] = '{' . $key . '}';
|
382 |
+
$replacer[ $i ] = $value;
|
383 |
+
}
|
384 |
+
|
385 |
+
$sql = str_replace( $replace, $replacer, $default['sql'] );
|
386 |
+
}
|
387 |
+
global $wpdb;
|
388 |
+
$products = $wpdb->get_results( $sql, ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
389 |
+
|
390 |
+
if ( empty( $products ) ) {
|
391 |
+
return array();
|
392 |
+
}
|
393 |
+
if ( $default['external'] ) {
|
394 |
+
foreach ( $products as $k => $product ) {
|
395 |
+
$product_data = $this->product_data( $product['variation_id'], $product['product_id'] );
|
396 |
+
if ( $product_data ) {
|
397 |
+
$product['product_id'] = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->id : ( $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id() ) );
|
398 |
+
$product['variation_id'] = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->variation_id : ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
399 |
+
}
|
400 |
+
$product['data'] = $product_data;
|
401 |
+
$products[ $k ] = $product;
|
402 |
+
}
|
403 |
+
}
|
404 |
+
return $products;
|
405 |
+
}
|
406 |
+
|
407 |
+
/**
|
408 |
+
* Get Analytics
|
409 |
+
*
|
410 |
+
* @global wpdb $wpdb
|
411 |
+
* @param integer $wishlist_id If exist wishlist object, you can put 0.
|
412 |
+
* @return array
|
413 |
+
*/
|
414 |
+
function get_wishlist( $wishlist_id = 0 ) {
|
415 |
+
$wishlist_id = absint( $wishlist_id );
|
416 |
+
if ( empty( $wishlist_id ) ) {
|
417 |
+
$wishlist_id = $this->wishlist_id();
|
418 |
+
}
|
419 |
+
global $wpdb;
|
420 |
+
$analytics = array();
|
421 |
+
if ( empty( $wishlist_id ) ) {
|
422 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`visite`, `visite_author` FROM `$this->table` WHERE `product_id`=%d AND `variation_id`=%d;", 0, 0 ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
423 |
+
} else {
|
424 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`visite`, `visite_author` FROM `$this->table` WHERE `wishlist_id`=%d AND `product_id`=%d AND `variation_id`=%d;", $wishlist_id, 0, 0 ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
425 |
+
}
|
426 |
+
if ( empty( $analytics ) ) {
|
427 |
+
return array();
|
428 |
+
}
|
429 |
+
foreach ( $analytics as $key => $analytic ) {
|
430 |
+
foreach ( $analytic as $field => $value ) {
|
431 |
+
$analytic[ $field ] = absint( $value );
|
432 |
+
}
|
433 |
+
$analytics[ $key ] = $analytic;
|
434 |
+
}
|
435 |
+
return $analytics;
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* Get Analytics Product
|
440 |
+
*
|
441 |
+
* @global wpdb $wpdb
|
442 |
+
* @param type $wishlist_id If exist wishlist object, you can put 0.
|
443 |
+
* @param type $product_id Product id.
|
444 |
+
* @param type $variation_id Product variation id.
|
445 |
+
* @return type
|
446 |
+
*/
|
447 |
+
function get_product( $wishlist_id = 0, $product_id = 0, $variation_id = 0 ) {
|
448 |
+
|
449 |
+
$wishlist_id = absint( $wishlist_id );
|
450 |
+
if ( empty( $wishlist_id ) ) {
|
451 |
+
$wishlist_id = $this->wishlist_id();
|
452 |
+
}
|
453 |
+
$wishlist_id = absint( $wishlist_id );
|
454 |
+
$product_id = absint( $product_id );
|
455 |
+
$variation_id = absint( $variation_id );
|
456 |
+
if ( ! empty( $product_id ) || ! empty( $variation_id ) ) {
|
457 |
+
$product_data = $this->product_data( $product_id, $variation_id );
|
458 |
+
if ( $product_data ) {
|
459 |
+
$product_id = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->id : ( $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id() ) );
|
460 |
+
$variation_id = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product_data->variation_id : ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
461 |
+
} else {
|
462 |
+
$product_id = 0;
|
463 |
+
$variation_id = 0;
|
464 |
+
}
|
465 |
+
} else {
|
466 |
+
$product_id = 0;
|
467 |
+
$variation_id = 0;
|
468 |
+
}
|
469 |
+
|
470 |
+
global $wpdb;
|
471 |
+
$analytics = array();
|
472 |
+
if ( empty( $product_id ) && empty( $variation_id ) ) {
|
473 |
+
if ( empty( $wishlist_id ) ) {
|
474 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`product_id`,`variation_id`,`sell`, `sell_of_wishlist`, `sell_as_gift` FROM `$this->table` WHERE `product_id`<>%d AND `variation_id`<>%d;", 0, 0 ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
475 |
+
} else {
|
476 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`product_id`,`variation_id`,`sell`, `sell_of_wishlist`, `sell_as_gift` FROM `$this->table` WHERE `wishlist_id`=%d AND `product_id`<>%d AND `variation_id`<>%d;", $wishlist_id, 0, 0 ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
477 |
+
}
|
478 |
+
} else {
|
479 |
+
if ( empty( $wishlist_id ) ) {
|
480 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`product_id`,`variation_id`,`sell`, `sell_of_wishlist`, `sell_as_gift` FROM `$this->table` WHERE `product_id`=%d AND `variation_id`=%d;", $product_id, $variation_id ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
481 |
+
} else {
|
482 |
+
$analytics = $wpdb->get_results( $wpdb->prepare( "SELECT `wishlist_id`,`product_id`,`variation_id`,`sell`, `sell_of_wishlist`, `sell_as_gift` FROM `$this->table` WHERE `wishlist_id`=%d AND `product_id`=%d AND `variation_id`=%d;", $wishlist_id, $product_id, $variation_id ), ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
|
483 |
+
}
|
484 |
+
}
|
485 |
+
if ( empty( $analytics ) ) {
|
486 |
+
return array();
|
487 |
+
}
|
488 |
+
|
489 |
+
foreach ( $analytics as $key => $analytic ) {
|
490 |
+
foreach ( $analytic as $field => $value ) {
|
491 |
+
$analytic[ $field ] = absint( $value );
|
492 |
+
}
|
493 |
+
$analytics[ $key ] = $analytic;
|
494 |
+
}
|
495 |
+
return $analytics;
|
496 |
+
}
|
497 |
+
}
|
languages/ti-woocommerce-wishlist.pot
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
# Copyright (C) 2019 WooCommerce Wishlist Plugin - 1.
|
2 |
-
# This file is distributed under the same license as the WooCommerce Wishlist Plugin - 1.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WooCommerce Wishlist Plugin - 1.
|
6 |
"MIME-Version: 1.0\n"
|
7 |
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -32,15 +32,15 @@ msgstr ""
|
|
32 |
msgid "Template Custom CSS"
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: admin/basestyle.helper.php:114, admin/settings/general.class.php:
|
36 |
msgid "Save Settings"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: admin/basestyle.helper.php:120, admin/settings/general.class.php:
|
40 |
msgid "Reset"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: admin/basestyle.helper.php:126, admin/settings/general.class.php:
|
44 |
msgid "Save"
|
45 |
msgstr ""
|
46 |
|
@@ -92,11 +92,11 @@ msgstr ""
|
|
92 |
msgid "Remove Product from Wishlist if added to cart"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: admin/settings/general.class.php:125, admin/settings/general.class.php:
|
96 |
msgid "Redirect to the checkout page from Wishlist if added to cart"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: admin/settings/general.class.php:131, admin/settings/general.class.php:
|
100 |
msgid "Remove by anyone"
|
101 |
msgstr ""
|
102 |
|
@@ -145,326 +145,338 @@ msgid "This notification will be shown once the product is removed from Wishlist
|
|
145 |
msgstr ""
|
146 |
|
147 |
#: admin/settings/general.class.php:202
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
msgid "Wishlist Page Options"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: admin/settings/general.class.php:
|
152 |
msgid "Coming soon"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: admin/settings/general.class.php:
|
156 |
msgid "My Wishlist"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: admin/settings/general.class.php:
|
160 |
msgid "Wishlist Processing Options"
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: admin/settings/general.class.php:
|
164 |
msgid "Automatic removal"
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: admin/settings/general.class.php:
|
168 |
msgid "Remove condition"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: admin/settings/general.class.php:
|
172 |
msgid "Add to Cart"
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: admin/settings/general.class.php:
|
176 |
msgid "Product page \"Add to Wishlist\" Button Settings"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: admin/settings/general.class.php:
|
180 |
msgid "Button position"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: admin/settings/general.class.php:
|
184 |
msgid "Add this shortcode <code>[ti_wishlists_addtowishlist]</code> anywhere on product page, if you have chosen custom position for product button. You will have to do this for each product."
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: admin/settings/general.class.php:
|
188 |
msgid "After \"Add to Cart\" button"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: admin/settings/general.class.php:
|
192 |
msgid "Before \"Add to Cart\" button"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: admin/settings/general.class.php:
|
196 |
msgid "Custom position with code"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: admin/settings/general.class.php:
|
200 |
msgid "Button custom CSS class"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: admin/settings/general.class.php:
|
204 |
msgid "You can add custom CSS classes to button markup separated by spaces. Most of themes using <code>button</code> class for this type of buttons."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: admin/settings/general.class.php:
|
208 |
msgid "\"Add to Wishlist\" Icon"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: admin/settings/general.class.php:
|
212 |
msgid "You can choose from our predefined icons or upload your custom icon. Custom icon size is limited to 16x16 px."
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: admin/settings/general.class.php:
|
216 |
msgid "None"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: admin/settings/general.class.php:
|
220 |
msgid "Heart"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: admin/settings/general.class.php:
|
224 |
msgid "Heart+"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: admin/settings/general.class.php:
|
228 |
msgid "Custom"
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: admin/settings/general.class.php:
|
232 |
msgid "Upload"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: admin/settings/general.class.php:
|
236 |
msgid "\"Add to Wishlist\" Icon Color"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: admin/settings/general.class.php:
|
240 |
msgid "Use font color"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: admin/settings/general.class.php:
|
244 |
msgid "Black"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: admin/settings/general.class.php:
|
248 |
msgid "White"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: admin/settings/general.class.php:
|
252 |
msgid "Show preloader"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: admin/settings/general.class.php:
|
256 |
msgid "If enabled, applies animation for the button icon until product adding or removing processed. (Usable for servers with slow connection mostly.)"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/settings/general.class.php:
|
260 |
msgid "Show button text"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: admin/settings/general.class.php:
|
264 |
msgid "\"Add to Wishlist\" button Text"
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: admin/settings/general.class.php:
|
268 |
msgid "\"Remove from Wishlist\" Button Text"
|
269 |
msgstr ""
|
270 |
|
271 |
-
#: admin/settings/general.class.php:
|
272 |
msgid "Product listing Button Settings"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: admin/settings/general.class.php:
|
276 |
msgid "These are separate settings for the \"Add to Wishlist\" button on a product listing (Shop page, categories, etc.). You can also adjust button and text colors, size, etc. in a <code>TI Wishlist > Style Options.</code>"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: admin/settings/general.class.php:
|
280 |
msgid "Show in Product Listing"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: admin/settings/general.class.php:
|
284 |
msgid "Above Thumbnail"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: admin/settings/general.class.php:
|
288 |
msgid "Note: if \"Custom position with code\" option is applied, the \"Add to Wishlist\" button should be added into template using <code>do_shortcode()</code> function like this:<br /><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
|
289 |
msgstr ""
|
290 |
|
291 |
-
#: admin/settings/general.class.php:
|
292 |
msgid "\"Add to Wishlist\" Text"
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: admin/settings/general.class.php:
|
296 |
msgid "Wishlist Product Settings"
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: admin/settings/general.class.php:
|
300 |
msgid "Following options allows you to choose what information/functionality to show/enable in wishlist table on wishlist page."
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: admin/settings/general.class.php:
|
304 |
msgid "Show \"Add to Cart\" button"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: admin/settings/general.class.php:
|
308 |
msgid "\"Add to Cart\" Text"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: admin/settings/general.class.php:
|
312 |
msgid "Show Unit price"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: admin/settings/general.class.php:
|
316 |
msgid "Show Stock status"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: admin/settings/general.class.php:
|
320 |
msgid "Show Date of addition"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: admin/settings/general.class.php:
|
324 |
msgid "Wishlist Table Settings"
|
325 |
msgstr ""
|
326 |
|
327 |
-
#: admin/settings/general.class.php:
|
328 |
msgid "Following options will help user to manage and add products to cart from wishlist table in bulk."
|
329 |
msgstr ""
|
330 |
|
331 |
-
#: admin/settings/general.class.php:
|
332 |
msgid "Show Checkboxes"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: admin/settings/general.class.php:
|
336 |
msgid "Show Actions button"
|
337 |
msgstr ""
|
338 |
|
339 |
-
#: admin/settings/general.class.php:
|
340 |
msgid "Bulk actions drop down at the bottom of wishlist table"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: admin/settings/general.class.php:
|
344 |
msgid "Show \"Add Selected to Cart\" button"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: admin/settings/general.class.php:
|
348 |
msgid "\"Add Selected to Cart\" Button Text"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: admin/settings/general.class.php:
|
352 |
msgid "Show \"Add All to Cart\" button"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/settings/general.class.php:
|
356 |
msgid "\"Add All to Cart\" Button Text"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/settings/general.class.php:
|
360 |
msgid "Following options enable/disable Social share icons below wishlist table on wishlist page. Wishlist owner can easily share their wishlists using this button on social networks. Wishlist privacy should be set to public or shared status, private wishlists can't be shared."
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: admin/settings/general.class.php:
|
364 |
msgid "Social Networks Sharing Options"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: admin/settings/general.class.php:
|
368 |
msgid "Show \"Facebook\" Button"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: admin/settings/general.class.php:
|
372 |
msgid "Show \"Twitter\" Button"
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: admin/settings/general.class.php:
|
376 |
msgid "Show \"Pinterest\" Button"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: admin/settings/general.class.php:
|
380 |
msgid "Show \"Google+\" Button"
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: admin/settings/general.class.php:
|
384 |
msgid "Show \"WhatsApp\" Button"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: admin/settings/general.class.php:
|
388 |
msgid "Show \"Copy to clipboard\" Button"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: admin/settings/general.class.php:
|
392 |
msgid "Show \"Share by Email\" Button"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: admin/settings/general.class.php:
|
396 |
msgid "\"Share on\" Text"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: admin/settings/general.class.php:
|
400 |
msgid "Social Icons Color"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: admin/settings/general.class.php:
|
404 |
msgid "Dark"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: admin/settings/general.class.php:
|
408 |
msgid "Wishlist Product Counter"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: admin/settings/general.class.php:
|
412 |
msgid "Add this shortcode <code>[ti_wishlist_products_counter]</code> anywhere into a page content to show Wishlist Counter.<br/><br/>It can be also added as a widget <code>Wishlist Products Counter</code> under the <a href=\"%s\">Appearance -> Widgets</a> section."
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: admin/settings/general.class.php:
|
416 |
msgid "\"Wishlist\" Counter Icon"
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: admin/settings/general.class.php:
|
420 |
msgid "\"Wishlist\" Counter Icon Color"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: admin/settings/general.class.php:
|
424 |
msgid "Show \"Wishlist\" Counter Text"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: admin/settings/general.class.php:
|
428 |
msgid "\"Wishlist\" Counter Text"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: admin/settings/general.class.php:
|
432 |
msgid "Wishlist - "
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: admin/settings/general.class.php:
|
436 |
msgid "Add counter to menu"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: admin/settings/general.class.php:
|
440 |
msgid "You can add a wishlist products counter as item to the selected menu."
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: admin/settings/general.class.php:
|
444 |
msgid "Counter position (Menu item order)"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: admin/settings/general.class.php:
|
448 |
msgid "Allows you to add the wishlist counter as a menu item and apply its position."
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: admin/settings/general.class.php:
|
452 |
msgid "Show number of products in counter"
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: admin/settings/general.class.php:
|
456 |
msgid "Hide zero value"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: admin/settings/general.class.php:
|
460 |
msgid "Do not show the \"0\" value in a counter if wishlist is empty."
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: admin/settings/general.class.php:
|
464 |
msgid "Support chat settings"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: admin/settings/general.class.php:
|
468 |
msgid "Disable support chat"
|
469 |
msgstr ""
|
470 |
|
@@ -820,7 +832,7 @@ msgstr ""
|
|
820 |
msgid "Page Setup"
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/wizard.class.php:288, includes/wizard.class.php:319, public/tinvwl.class.php:
|
824 |
msgid "Wishlist"
|
825 |
msgstr ""
|
826 |
|
@@ -864,23 +876,23 @@ msgstr ""
|
|
864 |
msgid "Login"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: public/tinvwl.class.php:
|
868 |
msgid "%1$s by %2$s"
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: public/tinvwl.class.php:
|
872 |
msgid "Create New"
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: public/tinvwl.class.php:
|
876 |
msgid "Please select some product options before adding this product to your wishlist."
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: public/tinvwl.class.php:
|
880 |
msgid "No items or actions are selected."
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: public/tinvwl.class.php:
|
884 |
msgid "Copied!"
|
885 |
msgstr ""
|
886 |
|
@@ -927,11 +939,11 @@ msgstr[1] ""
|
|
927 |
msgid "Actions"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: public/wishlist/buttons.class.php:346, templates/ti-wishlist.php:
|
931 |
msgid "Remove"
|
932 |
msgstr ""
|
933 |
|
934 |
-
#: public/wishlist/buttons.class.php:495, public/wishlist/view.class.php:
|
935 |
msgid "“%s”"
|
936 |
msgstr ""
|
937 |
|
@@ -941,23 +953,23 @@ msgid_plural "%s have been successfully removed from wishlist."
|
|
941 |
msgstr[0] ""
|
942 |
msgstr[1] ""
|
943 |
|
944 |
-
#: public/wishlist/view.class.php:
|
945 |
msgid "%s has been removed from wishlist."
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: public/wishlist/view.class.php:
|
949 |
msgid "%s has not been removed from wishlist."
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: public/wishlist/view.class.php:
|
953 |
msgid "Return to Wishlist"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: public/wishlist/view.class.php:
|
957 |
msgid "Previous Page"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: public/wishlist/view.class.php:
|
961 |
msgid "Next Page"
|
962 |
msgstr ""
|
963 |
|
@@ -981,35 +993,35 @@ msgstr ""
|
|
981 |
msgid "Wishlist is not found!"
|
982 |
msgstr ""
|
983 |
|
984 |
-
#: templates/ti-wishlist-user.php:
|
985 |
msgid "Select all for bulk action"
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: templates/ti-wishlist-user.php:
|
989 |
msgid "Product Name"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#: templates/ti-wishlist-user.php:
|
993 |
msgid "Product"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: templates/ti-wishlist-user.php:
|
997 |
msgid "Unit Price"
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: templates/ti-wishlist-user.php:
|
1001 |
msgid "Date Added"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: templates/ti-wishlist-user.php:
|
1005 |
msgid "Stock Status"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
-
#: templates/ti-wishlist-user.php:
|
1009 |
msgid "Select for bulk action"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: templates/ti-wishlist-user.php:
|
1013 |
msgid "In stock"
|
1014 |
msgstr ""
|
1015 |
|
@@ -1041,7 +1053,7 @@ msgstr ""
|
|
1041 |
msgid "Out of stock"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: tinv-wishlists-function-integration.php:
|
1045 |
msgid "Base price"
|
1046 |
msgstr ""
|
1047 |
|
1 |
+
# Copyright (C) 2019 WooCommerce Wishlist Plugin - 1.10.0
|
2 |
+
# This file is distributed under the same license as the WooCommerce Wishlist Plugin - 1.10.0 package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WooCommerce Wishlist Plugin - 1.10.0\n"
|
6 |
"MIME-Version: 1.0\n"
|
7 |
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
"Content-Transfer-Encoding: 8bit\n"
|
32 |
msgid "Template Custom CSS"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: admin/basestyle.helper.php:114, admin/settings/general.class.php:814
|
36 |
msgid "Save Settings"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: admin/basestyle.helper.php:120, admin/settings/general.class.php:820
|
40 |
msgid "Reset"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: admin/basestyle.helper.php:126, admin/settings/general.class.php:826
|
44 |
msgid "Save"
|
45 |
msgstr ""
|
46 |
|
92 |
msgid "Remove Product from Wishlist if added to cart"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: admin/settings/general.class.php:125, admin/settings/general.class.php:258
|
96 |
msgid "Redirect to the checkout page from Wishlist if added to cart"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: admin/settings/general.class.php:131, admin/settings/general.class.php:265
|
100 |
msgid "Remove by anyone"
|
101 |
msgstr ""
|
102 |
|
145 |
msgstr ""
|
146 |
|
147 |
#: admin/settings/general.class.php:202
|
148 |
+
msgid "Permalinks Settings"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: admin/settings/general.class.php:208
|
152 |
+
msgid "Force permalinks rewrite"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: admin/settings/general.class.php:209
|
156 |
+
msgid "This option should be enabled to avoid any issues with URL rewrites between other plugins and Wishlist"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: admin/settings/general.class.php:216
|
160 |
msgid "Wishlist Page Options"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: admin/settings/general.class.php:217, admin/settings/general.class.php:234
|
164 |
msgid "Coming soon"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: admin/settings/general.class.php:224, views/wizard/step-page.php:36
|
168 |
msgid "My Wishlist"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: admin/settings/general.class.php:233
|
172 |
msgid "Wishlist Processing Options"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: admin/settings/general.class.php:241
|
176 |
msgid "Automatic removal"
|
177 |
msgstr ""
|
178 |
|
179 |
+
#: admin/settings/general.class.php:248
|
180 |
msgid "Remove condition"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: admin/settings/general.class.php:251
|
184 |
msgid "Add to Cart"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: admin/settings/general.class.php:273
|
188 |
msgid "Product page \"Add to Wishlist\" Button Settings"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: admin/settings/general.class.php:279, admin/settings/general.class.php:403, views/wizard/step-button.php:32
|
192 |
msgid "Button position"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: admin/settings/general.class.php:280
|
196 |
msgid "Add this shortcode <code>[ti_wishlists_addtowishlist]</code> anywhere on product page, if you have chosen custom position for product button. You will have to do this for each product."
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: admin/settings/general.class.php:283, admin/settings/general.class.php:406, includes/wizard.class.php:408
|
200 |
msgid "After \"Add to Cart\" button"
|
201 |
msgstr ""
|
202 |
|
203 |
+
#: admin/settings/general.class.php:284, admin/settings/general.class.php:407, includes/wizard.class.php:409
|
204 |
msgid "Before \"Add to Cart\" button"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: admin/settings/general.class.php:285, admin/settings/general.class.php:409, includes/wizard.class.php:410
|
208 |
msgid "Custom position with code"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: admin/settings/general.class.php:291, admin/settings/general.class.php:416
|
212 |
msgid "Button custom CSS class"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: admin/settings/general.class.php:292, admin/settings/general.class.php:417
|
216 |
msgid "You can add custom CSS classes to button markup separated by spaces. Most of themes using <code>button</code> class for this type of buttons."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: admin/settings/general.class.php:301, admin/settings/general.class.php:426
|
220 |
msgid "\"Add to Wishlist\" Icon"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: admin/settings/general.class.php:302, admin/settings/general.class.php:696
|
224 |
msgid "You can choose from our predefined icons or upload your custom icon. Custom icon size is limited to 16x16 px."
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: admin/settings/general.class.php:305, admin/settings/general.class.php:429, admin/settings/general.class.php:691
|
228 |
msgid "None"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: admin/settings/general.class.php:306, admin/settings/general.class.php:430, admin/settings/general.class.php:692
|
232 |
msgid "Heart"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: admin/settings/general.class.php:307, admin/settings/general.class.php:431, admin/settings/general.class.php:693
|
236 |
msgid "Heart+"
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: admin/settings/general.class.php:308, admin/settings/general.class.php:432, admin/settings/general.class.php:694
|
240 |
msgid "Custom"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: admin/settings/general.class.php:325, admin/settings/general.class.php:448, admin/settings/general.class.php:711
|
244 |
msgid "Upload"
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: admin/settings/general.class.php:334, admin/settings/general.class.php:457
|
248 |
msgid "\"Add to Wishlist\" Icon Color"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: admin/settings/general.class.php:336, admin/settings/general.class.php:459, admin/settings/general.class.php:671, admin/settings/general.class.php:722
|
252 |
msgid "Use font color"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: admin/settings/general.class.php:337, admin/settings/general.class.php:460, admin/settings/general.class.php:723
|
256 |
msgid "Black"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: admin/settings/general.class.php:338, admin/settings/general.class.php:461, admin/settings/general.class.php:673, admin/settings/general.class.php:724
|
260 |
msgid "White"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: admin/settings/general.class.php:345, admin/settings/general.class.php:468
|
264 |
msgid "Show preloader"
|
265 |
msgstr ""
|
266 |
|
267 |
+
#: admin/settings/general.class.php:346, admin/settings/general.class.php:469
|
268 |
msgid "If enabled, applies animation for the button icon until product adding or removing processed. (Usable for servers with slow connection mostly.)"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: admin/settings/general.class.php:352, admin/settings/general.class.php:475
|
272 |
msgid "Show button text"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: admin/settings/general.class.php:367
|
276 |
msgid "\"Add to Wishlist\" button Text"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: admin/settings/general.class.php:373, admin/settings/general.class.php:496
|
280 |
msgid "\"Remove from Wishlist\" Button Text"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: admin/settings/general.class.php:381
|
284 |
msgid "Product listing Button Settings"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: admin/settings/general.class.php:382
|
288 |
msgid "These are separate settings for the \"Add to Wishlist\" button on a product listing (Shop page, categories, etc.). You can also adjust button and text colors, size, etc. in a <code>TI Wishlist > Style Options.</code>"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: admin/settings/general.class.php:388
|
292 |
msgid "Show in Product Listing"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: admin/settings/general.class.php:408
|
296 |
msgid "Above Thumbnail"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: admin/settings/general.class.php:411
|
300 |
msgid "Note: if \"Custom position with code\" option is applied, the \"Add to Wishlist\" button should be added into template using <code>do_shortcode()</code> function like this:<br /><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: admin/settings/general.class.php:490, views/wizard/step-button.php:41
|
304 |
msgid "\"Add to Wishlist\" Text"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: admin/settings/general.class.php:504
|
308 |
msgid "Wishlist Product Settings"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: admin/settings/general.class.php:505
|
312 |
msgid "Following options allows you to choose what information/functionality to show/enable in wishlist table on wishlist page."
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: admin/settings/general.class.php:511
|
316 |
msgid "Show \"Add to Cart\" button"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: admin/settings/general.class.php:518
|
320 |
msgid "\"Add to Cart\" Text"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: admin/settings/general.class.php:525
|
324 |
msgid "Show Unit price"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: admin/settings/general.class.php:531
|
328 |
msgid "Show Stock status"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: admin/settings/general.class.php:537
|
332 |
msgid "Show Date of addition"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: admin/settings/general.class.php:544
|
336 |
msgid "Wishlist Table Settings"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: admin/settings/general.class.php:545
|
340 |
msgid "Following options will help user to manage and add products to cart from wishlist table in bulk."
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: admin/settings/general.class.php:551
|
344 |
msgid "Show Checkboxes"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: admin/settings/general.class.php:563
|
348 |
msgid "Show Actions button"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: admin/settings/general.class.php:564
|
352 |
msgid "Bulk actions drop down at the bottom of wishlist table"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: admin/settings/general.class.php:570
|
356 |
msgid "Show \"Add Selected to Cart\" button"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: admin/settings/general.class.php:577
|
360 |
msgid "\"Add Selected to Cart\" Button Text"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: admin/settings/general.class.php:588
|
364 |
msgid "Show \"Add All to Cart\" button"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: admin/settings/general.class.php:595
|
368 |
msgid "\"Add All to Cart\" Button Text"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: admin/settings/general.class.php:608
|
372 |
msgid "Following options enable/disable Social share icons below wishlist table on wishlist page. Wishlist owner can easily share their wishlists using this button on social networks. Wishlist privacy should be set to public or shared status, private wishlists can't be shared."
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: admin/settings/general.class.php:614
|
376 |
msgid "Social Networks Sharing Options"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: admin/settings/general.class.php:620, views/wizard/step-social.php:26
|
380 |
msgid "Show \"Facebook\" Button"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: admin/settings/general.class.php:626, views/wizard/step-social.php:35
|
384 |
msgid "Show \"Twitter\" Button"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: admin/settings/general.class.php:632, views/wizard/step-social.php:44
|
388 |
msgid "Show \"Pinterest\" Button"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: admin/settings/general.class.php:638, views/wizard/step-social.php:53
|
392 |
msgid "Show \"Google+\" Button"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: admin/settings/general.class.php:644, views/wizard/step-social.php:62
|
396 |
msgid "Show \"WhatsApp\" Button"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: admin/settings/general.class.php:650
|
400 |
msgid "Show \"Copy to clipboard\" Button"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: admin/settings/general.class.php:656, views/wizard/step-social.php:80
|
404 |
msgid "Show \"Share by Email\" Button"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: admin/settings/general.class.php:662
|
408 |
msgid "\"Share on\" Text"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: admin/settings/general.class.php:668
|
412 |
msgid "Social Icons Color"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: admin/settings/general.class.php:672
|
416 |
msgid "Dark"
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: admin/settings/general.class.php:681
|
420 |
msgid "Wishlist Product Counter"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: admin/settings/general.class.php:682
|
424 |
msgid "Add this shortcode <code>[ti_wishlist_products_counter]</code> anywhere into a page content to show Wishlist Counter.<br/><br/>It can be also added as a widget <code>Wishlist Products Counter</code> under the <a href=\"%s\">Appearance -> Widgets</a> section."
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: admin/settings/general.class.php:688
|
428 |
msgid "\"Wishlist\" Counter Icon"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: admin/settings/general.class.php:720
|
432 |
msgid "\"Wishlist\" Counter Icon Color"
|
433 |
msgstr ""
|
434 |
|
435 |
+
#: admin/settings/general.class.php:731
|
436 |
msgid "Show \"Wishlist\" Counter Text"
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: admin/settings/general.class.php:740
|
440 |
msgid "\"Wishlist\" Counter Text"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: admin/settings/general.class.php:741
|
444 |
msgid "Wishlist - "
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: admin/settings/general.class.php:747
|
448 |
msgid "Add counter to menu"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: admin/settings/general.class.php:749
|
452 |
msgid "You can add a wishlist products counter as item to the selected menu."
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: admin/settings/general.class.php:758
|
456 |
msgid "Counter position (Menu item order)"
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: admin/settings/general.class.php:759
|
460 |
msgid "Allows you to add the wishlist counter as a menu item and apply its position."
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: admin/settings/general.class.php:770
|
464 |
msgid "Show number of products in counter"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: admin/settings/general.class.php:779
|
468 |
msgid "Hide zero value"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: admin/settings/general.class.php:780
|
472 |
msgid "Do not show the \"0\" value in a counter if wishlist is empty."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: admin/settings/general.class.php:791
|
476 |
msgid "Support chat settings"
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: admin/settings/general.class.php:798
|
480 |
msgid "Disable support chat"
|
481 |
msgstr ""
|
482 |
|
832 |
msgid "Page Setup"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/wizard.class.php:288, includes/wizard.class.php:319, public/tinvwl.class.php:646
|
836 |
msgid "Wishlist"
|
837 |
msgstr ""
|
838 |
|
876 |
msgid "Login"
|
877 |
msgstr ""
|
878 |
|
879 |
+
#: public/tinvwl.class.php:384
|
880 |
msgid "%1$s by %2$s"
|
881 |
msgstr ""
|
882 |
|
883 |
+
#: public/tinvwl.class.php:543
|
884 |
msgid "Create New"
|
885 |
msgstr ""
|
886 |
|
887 |
+
#: public/tinvwl.class.php:546
|
888 |
msgid "Please select some product options before adding this product to your wishlist."
|
889 |
msgstr ""
|
890 |
|
891 |
+
#: public/tinvwl.class.php:547
|
892 |
msgid "No items or actions are selected."
|
893 |
msgstr ""
|
894 |
|
895 |
+
#: public/tinvwl.class.php:548
|
896 |
msgid "Copied!"
|
897 |
msgstr ""
|
898 |
|
939 |
msgid "Actions"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: public/wishlist/buttons.class.php:346, templates/ti-wishlist.php:76
|
943 |
msgid "Remove"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: public/wishlist/buttons.class.php:495, public/wishlist/view.class.php:364
|
947 |
msgid "“%s”"
|
948 |
msgstr ""
|
949 |
|
953 |
msgstr[0] ""
|
954 |
msgstr[1] ""
|
955 |
|
956 |
+
#: public/wishlist/view.class.php:374
|
957 |
msgid "%s has been removed from wishlist."
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: public/wishlist/view.class.php:376
|
961 |
msgid "%s has not been removed from wishlist."
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: public/wishlist/view.class.php:519
|
965 |
msgid "Return to Wishlist"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: public/wishlist/view.class.php:617
|
969 |
msgid "Previous Page"
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: public/wishlist/view.class.php:643
|
973 |
msgid "Next Page"
|
974 |
msgstr ""
|
975 |
|
993 |
msgid "Wishlist is not found!"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: templates/ti-wishlist-user.php:30, templates/ti-wishlist.php:30
|
997 |
msgid "Select all for bulk action"
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: templates/ti-wishlist-user.php:35, templates/ti-wishlist.php:36
|
1001 |
msgid "Product Name"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: templates/ti-wishlist-user.php:36, templates/ti-wishlist.php:37
|
1005 |
msgid "Product"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: templates/ti-wishlist-user.php:38, templates/ti-wishlist.php:39
|
1009 |
msgid "Unit Price"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
+
#: templates/ti-wishlist-user.php:41, templates/ti-wishlist.php:42
|
1013 |
msgid "Date Added"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: templates/ti-wishlist-user.php:44, templates/ti-wishlist.php:45
|
1017 |
msgid "Stock Status"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: templates/ti-wishlist-user.php:67, templates/ti-wishlist.php:68
|
1021 |
msgid "Select for bulk action"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
+
#: templates/ti-wishlist-user.php:120, templates/ti-wishlist.php:128, tinv-wishlists-function-integration.php:774, tinv-wishlists-function-integration.php:931, tinv-wishlists-function-integration.php:1093, tinv-wishlists-function-integration.php:1307
|
1025 |
msgid "In stock"
|
1026 |
msgstr ""
|
1027 |
|
1053 |
msgid "Out of stock"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: tinv-wishlists-function-integration.php:1658
|
1057 |
msgid "Base price"
|
1058 |
msgstr ""
|
1059 |
|
public/cart.class.php
CHANGED
@@ -79,6 +79,7 @@ class TInvWL_Public_Cart {
|
|
79 |
} else {
|
80 |
add_action( 'woocommerce_checkout_create_order', array( $this, 'add_order_item_meta_v3' ) );
|
81 |
}
|
|
|
82 |
}
|
83 |
|
84 |
/**
|
@@ -143,6 +144,8 @@ class TInvWL_Public_Cart {
|
|
143 |
* @param array $product product data.
|
144 |
* */
|
145 |
do_action( 'tinvwl_product_added_to_cart', $cart_item_key, $quantity, $product );
|
|
|
|
|
146 |
if ( ( 'private' !== $wishlist['status'] && tinv_get_option( 'processing', 'autoremove_anyone' ) ) || $wishlist['is_owner'] && 'tinvwl-addcart' === tinv_get_option( 'processing', 'autoremove_status' ) ) {
|
147 |
self::ar_f_wl( $wishlist, $product_id, $quantity, $variation_id, $product['meta'] );
|
148 |
}
|
@@ -361,4 +364,47 @@ class TInvWL_Public_Cart {
|
|
361 |
|
362 |
return 0;
|
363 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
364 |
}
|
79 |
} else {
|
80 |
add_action( 'woocommerce_checkout_create_order', array( $this, 'add_order_item_meta_v3' ) );
|
81 |
}
|
82 |
+
add_action( 'woocommerce_order_status_changed', array( $this, 'order_status_analytics' ), 9, 3 );
|
83 |
}
|
84 |
|
85 |
/**
|
144 |
* @param array $product product data.
|
145 |
* */
|
146 |
do_action( 'tinvwl_product_added_to_cart', $cart_item_key, $quantity, $product );
|
147 |
+
$wla = new TInvWL_Analytics( $wishlist, self::$_name );
|
148 |
+
$wla->cart_product( $product_id, $variation_id );
|
149 |
if ( ( 'private' !== $wishlist['status'] && tinv_get_option( 'processing', 'autoremove_anyone' ) ) || $wishlist['is_owner'] && 'tinvwl-addcart' === tinv_get_option( 'processing', 'autoremove_status' ) ) {
|
150 |
self::ar_f_wl( $wishlist, $product_id, $quantity, $variation_id, $product['meta'] );
|
151 |
}
|
364 |
|
365 |
return 0;
|
366 |
}
|
367 |
+
|
368 |
+
/**
|
369 |
+
* Analytics check completed orders
|
370 |
+
*
|
371 |
+
* @param integer $order_id Order id.
|
372 |
+
* @param string $old_status Not used.
|
373 |
+
* @param string $new_status Updated status order.
|
374 |
+
*
|
375 |
+
* @return boolean
|
376 |
+
*/
|
377 |
+
function order_status_analytics( $order_id, $old_status, $new_status ) {
|
378 |
+
$new_status = str_replace( 'wc-', '', $new_status );
|
379 |
+
|
380 |
+
if ( 'completed' == $new_status ) { // WPCS: loose comparison ok.
|
381 |
+
$order = new WC_Order( $order_id );
|
382 |
+
$items = $order->get_items();
|
383 |
+
if ( empty( $items ) || ! is_array( $items ) ) {
|
384 |
+
return false;
|
385 |
+
}
|
386 |
+
|
387 |
+
foreach ( $items as $item ) {
|
388 |
+
if ( array_key_exists( 'tinvwl_wishlist_cart', (array) $item ) ) {
|
389 |
+
$_wishlist_cart = maybe_unserialize( $item['tinvwl_wishlist_cart'] );
|
390 |
+
$_quantity = absint( $item['qty'] );
|
391 |
+
if ( is_array( $_wishlist_cart ) ) {
|
392 |
+
// @bug remove individual product from all user wishlists
|
393 |
+
foreach ( $_wishlist_cart as $key => $quantity ) {
|
394 |
+
if ( 0 >= $_quantity ) {
|
395 |
+
break;
|
396 |
+
}
|
397 |
+
$wishlist = $this->get_order_wishlist( $key );
|
398 |
+
|
399 |
+
if ( empty( $wishlist ) ) {
|
400 |
+
continue;
|
401 |
+
}
|
402 |
+
$wla = new TInvWL_Analytics( $wishlist, self::$_name );
|
403 |
+
$wla->sell_product_from_wl( $item['product_id'], $item['variation_id'] );
|
404 |
+
}
|
405 |
+
}
|
406 |
+
}
|
407 |
+
}
|
408 |
+
}
|
409 |
+
}
|
410 |
}
|
public/tinvwl.class.php
CHANGED
@@ -70,7 +70,11 @@ class TInvWL_Public_TInvWL {
|
|
70 |
function pre_load_function() {
|
71 |
add_action( 'init', array( $this, 'apply_rewrite_rules' ), 0 );
|
72 |
add_action( 'init', array( $this, 'add_rewrite_rules' ), 0 );
|
|
|
|
|
|
|
73 |
add_filter( 'query_vars', array( $this, 'add_query_var' ) );
|
|
|
74 |
add_action( 'deleted_user', array( $this, 'delete_user_wishlist' ) );
|
75 |
|
76 |
add_action( 'wp_ajax_nopriv_' . $this->_name . '_css', array( $this, 'dynaminc_css' ) );
|
@@ -86,6 +90,22 @@ class TInvWL_Public_TInvWL {
|
|
86 |
$this->topwishlist = TInvWL_Public_WishlistCounter::instance( $this->_name );
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
/**
|
90 |
* Define hooks
|
91 |
*/
|
@@ -112,6 +132,38 @@ class TInvWL_Public_TInvWL {
|
|
112 |
add_action( $this->_name . '_after_wishlist_table', array( $this, 'wishlist_button_action_after' ), 100 );
|
113 |
}
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
/**
|
116 |
* Left class button
|
117 |
*/
|
@@ -214,7 +266,9 @@ class TInvWL_Public_TInvWL {
|
|
214 |
|
215 |
if ( $language_codes && defined( 'POLYLANG_VERSION' ) ) {
|
216 |
add_rewrite_rule( '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]', 'top' );
|
|
|
217 |
add_rewrite_rule( '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]', 'top' );
|
|
|
218 |
}
|
219 |
|
220 |
// Wishlist on frontpage.
|
@@ -223,12 +277,15 @@ class TInvWL_Public_TInvWL {
|
|
223 |
add_filter( 'redirect_canonical', array( $this, 'disable_canonical_redirect_for_front_page' ) );
|
224 |
// Match the front page and pass item value as a query var.
|
225 |
add_rewrite_rule( '^([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[1]', 'top' );
|
|
|
226 |
add_rewrite_rule( '^([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
|
|
227 |
}
|
228 |
|
229 |
add_rewrite_rule( '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
|
|
230 |
add_rewrite_rule( '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]', 'top' );
|
231 |
-
|
232 |
|
233 |
// Wishlist on shop page.
|
234 |
$shop_page_id = wc_get_page_id( 'shop' );
|
@@ -236,8 +293,11 @@ class TInvWL_Public_TInvWL {
|
|
236 |
$shop = get_post( $shop_page_id );
|
237 |
$shop_slug = $shop->post_name;
|
238 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]', 'top' );
|
|
|
239 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
|
|
240 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/page/([0-9]{1,})/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]&paged=$matches[4]', 'top' );
|
|
|
241 |
}
|
242 |
}
|
243 |
}
|
70 |
function pre_load_function() {
|
71 |
add_action( 'init', array( $this, 'apply_rewrite_rules' ), 0 );
|
72 |
add_action( 'init', array( $this, 'add_rewrite_rules' ), 0 );
|
73 |
+
|
74 |
+
add_filter( 'rewrite_rules_array', array( $this, 'add_rewrite_rules_raw' ), 9999999 );
|
75 |
+
|
76 |
add_filter( 'query_vars', array( $this, 'add_query_var' ) );
|
77 |
+
add_action( 'wp', array( $this, 'analytics_referer' ) );
|
78 |
add_action( 'deleted_user', array( $this, 'delete_user_wishlist' ) );
|
79 |
|
80 |
add_action( 'wp_ajax_nopriv_' . $this->_name . '_css', array( $this, 'dynaminc_css' ) );
|
90 |
$this->topwishlist = TInvWL_Public_WishlistCounter::instance( $this->_name );
|
91 |
}
|
92 |
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @param $rules
|
96 |
+
*
|
97 |
+
* @return mixed
|
98 |
+
*/
|
99 |
+
function add_rewrite_rules_raw( $rules ) {
|
100 |
+
|
101 |
+
if ( tinv_get_option( 'permalinks', 'force' ) ) {
|
102 |
+
$rules = $this->rules_raw + $rules;
|
103 |
+
}
|
104 |
+
|
105 |
+
return $rules;
|
106 |
+
}
|
107 |
+
|
108 |
+
|
109 |
/**
|
110 |
* Define hooks
|
111 |
*/
|
132 |
add_action( $this->_name . '_after_wishlist_table', array( $this, 'wishlist_button_action_after' ), 100 );
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* Add analytic click from wishlist
|
137 |
+
*/
|
138 |
+
function analytics_referer() {
|
139 |
+
$product_id = absint( get_query_var( 'tiwp' ) );
|
140 |
+
if ( empty( $product_id ) ) {
|
141 |
+
return false;
|
142 |
+
}
|
143 |
+
$wishlist = tinv_wishlist_get();
|
144 |
+
$wlp = null;
|
145 |
+
if ( 0 === $wishlist['ID'] ) {
|
146 |
+
$wlp = TInvWL_Product_Local::instance();
|
147 |
+
} else {
|
148 |
+
$wlp = new TInvWL_Product( $wishlist );
|
149 |
+
}
|
150 |
+
$items = $wlp->get( array( 'ID' => $product_id ) );
|
151 |
+
$item = array_shift( $items );
|
152 |
+
if ( empty( $item ) ) {
|
153 |
+
return false;
|
154 |
+
}
|
155 |
+
if ( empty( $item['data'] ) ) {
|
156 |
+
return false;
|
157 |
+
}
|
158 |
+
$wla = new TInvWL_Analytics( $wishlist, $this->_name );
|
159 |
+
if ( $wishlist['is_owner'] ) {
|
160 |
+
$wla->click_author_product_from_wl( $item['product_id'], $item['variation_id'] );
|
161 |
+
} else {
|
162 |
+
$wla->click_product_from_wl( $item['product_id'], $item['variation_id'] );
|
163 |
+
}
|
164 |
+
wp_redirect( remove_query_arg( 'tiwp' ) ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.wp_redirect
|
165 |
+
}
|
166 |
+
|
167 |
/**
|
168 |
* Left class button
|
169 |
*/
|
266 |
|
267 |
if ( $language_codes && defined( 'POLYLANG_VERSION' ) ) {
|
268 |
add_rewrite_rule( '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]', 'top' );
|
269 |
+
$this->rules_raw[ '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$' ] = 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]';
|
270 |
add_rewrite_rule( '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]', 'top' );
|
271 |
+
$this->rules_raw[ '^(' . $language_codes . ')/(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$' ] = 'index.php?pagename=$matches[2]&tinvwlID=$matches[4]&wl_paged=$matches[5]&lang=$matches[1]';
|
272 |
}
|
273 |
|
274 |
// Wishlist on frontpage.
|
277 |
add_filter( 'redirect_canonical', array( $this, 'disable_canonical_redirect_for_front_page' ) );
|
278 |
// Match the front page and pass item value as a query var.
|
279 |
add_rewrite_rule( '^([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[1]', 'top' );
|
280 |
+
$this->rules_raw['^([A-Fa-f0-9]{6})?/{0,1}$'] = 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[1]';
|
281 |
add_rewrite_rule( '^([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
282 |
+
$this->rules_raw['^([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$'] = 'index.php?page_id=' . $page_on_front . '&tinvwlID=$matches[3]&wl_paged=$matches[4]';
|
283 |
}
|
284 |
|
285 |
add_rewrite_rule( '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
286 |
+
$this->rules_raw[ '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$' ] = 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]&wl_paged=$matches[4]';
|
287 |
add_rewrite_rule( '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]', 'top' );
|
288 |
+
$this->rules_raw[ '(([^/]+/)*' . $page_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$' ] = 'index.php?pagename=$matches[1]&tinvwlID=$matches[3]';
|
289 |
|
290 |
// Wishlist on shop page.
|
291 |
$shop_page_id = wc_get_page_id( 'shop' );
|
293 |
$shop = get_post( $shop_page_id );
|
294 |
$shop_slug = $shop->post_name;
|
295 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]', 'top' );
|
296 |
+
$this->rules_raw[ '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/{0,1}$' ] = 'index.php?post_type=product&tinvwlID=$matches[3]';
|
297 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]&wl_paged=$matches[4]', 'top' );
|
298 |
+
$this->rules_raw[ '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/wl_page/([0-9]{1,})/{0,1}$' ] = 'index.php?post_type=product&tinvwlID=$matches[3]&wl_paged=$matches[4]';
|
299 |
add_rewrite_rule( '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/page/([0-9]{1,})/{0,1}$', 'index.php?post_type=product&tinvwlID=$matches[3]&paged=$matches[4]', 'top' );
|
300 |
+
$this->rules_raw[ '(([^/]+/)*' . $shop_slug . ')/([A-Fa-f0-9]{6})?/page/([0-9]{1,})/{0,1}$' ] = 'index.php?post_type=product&tinvwlID=$matches[3]&paged=$matches[4]';
|
301 |
}
|
302 |
}
|
303 |
}
|
public/wishlist/view.class.php
CHANGED
@@ -234,6 +234,10 @@ class TInvWL_Public_Wishlist_View {
|
|
234 |
if ( 1 < $paged ) {
|
235 |
add_action( 'tinvwl_pagenation_wishlist', array( $this, 'page_prev' ) );
|
236 |
}
|
|
|
|
|
|
|
|
|
237 |
if ( $pages > $paged ) {
|
238 |
add_action( 'tinvwl_pagenation_wishlist', array( $this, 'page_next' ) );
|
239 |
}
|
@@ -524,6 +528,9 @@ class TInvWL_Public_Wishlist_View {
|
|
524 |
|
525 |
$this->lists_per_page = $atts['lists_per_page'];
|
526 |
|
|
|
|
|
|
|
527 |
foreach ( $products as $key => $product ) {
|
528 |
if ( ! isset( $product['data'] ) ) {
|
529 |
unset( $products[ $key ] );
|
@@ -549,10 +556,10 @@ class TInvWL_Public_Wishlist_View {
|
|
549 |
} else {
|
550 |
if ( class_exists( 'WC_Catalog_Visibility_Options' ) ) {
|
551 |
global $wc_cvo;
|
552 |
-
if ( 'secured' === $wc_cvo->setting( 'wc_cvo_atc' ) ) {
|
553 |
unset( $data['wishlist_table_row']['add_to_cart'] );
|
554 |
}
|
555 |
-
if ( 'secured' === $wc_cvo->setting( 'wc_cvo_prices' ) ) {
|
556 |
unset( $data['wishlist_table_row']['colm_price'] );
|
557 |
}
|
558 |
}
|
@@ -607,7 +614,24 @@ class TInvWL_Public_Wishlist_View {
|
|
607 |
function page_prev() {
|
608 |
$paged = get_query_var( 'wl_paged', 1 );
|
609 |
$paged = 1 < $paged ? $paged - 1 : 0;
|
610 |
-
$this->page( $paged, sprintf( '<i class="ftinvwl ftinvwl-chevron-left"></i>%s', __( 'Previous Page', 'ti-woocommerce-wishlist' ) ), array( 'class' => 'button tinv-prev' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
611 |
}
|
612 |
|
613 |
/**
|
@@ -616,7 +640,7 @@ class TInvWL_Public_Wishlist_View {
|
|
616 |
function page_next() {
|
617 |
$paged = get_query_var( 'wl_paged', 1 );
|
618 |
$paged = 1 < $paged ? $paged + 1 : 2;
|
619 |
-
$this->page( $paged, sprintf( '
|
620 |
}
|
621 |
|
622 |
/**
|
234 |
if ( 1 < $paged ) {
|
235 |
add_action( 'tinvwl_pagenation_wishlist', array( $this, 'page_prev' ) );
|
236 |
}
|
237 |
+
if ( 1 < $pages ) {
|
238 |
+
$this->pages = $pages;
|
239 |
+
add_action( 'tinvwl_pagenation_wishlist', array( $this, 'pages' ) );
|
240 |
+
}
|
241 |
if ( $pages > $paged ) {
|
242 |
add_action( 'tinvwl_pagenation_wishlist', array( $this, 'page_next' ) );
|
243 |
}
|
528 |
|
529 |
$this->lists_per_page = $atts['lists_per_page'];
|
530 |
|
531 |
+
$wla = new TInvWL_Analytics( $wishlist, $this->_name );
|
532 |
+
$wla->wishlist_view( 0, $wishlist['is_owner'] );
|
533 |
+
|
534 |
foreach ( $products as $key => $product ) {
|
535 |
if ( ! isset( $product['data'] ) ) {
|
536 |
unset( $products[ $key ] );
|
556 |
} else {
|
557 |
if ( class_exists( 'WC_Catalog_Visibility_Options' ) ) {
|
558 |
global $wc_cvo;
|
559 |
+
if ( 'secured' === $wc_cvo->setting( 'wc_cvo_atc' && isset( $data['wishlist_table_row']['add_to_cart'] ) ) ) {
|
560 |
unset( $data['wishlist_table_row']['add_to_cart'] );
|
561 |
}
|
562 |
+
if ( 'secured' === $wc_cvo->setting( 'wc_cvo_prices' && isset( $data['wishlist_table_row']['colm_price'] ) ) ) {
|
563 |
unset( $data['wishlist_table_row']['colm_price'] );
|
564 |
}
|
565 |
}
|
614 |
function page_prev() {
|
615 |
$paged = get_query_var( 'wl_paged', 1 );
|
616 |
$paged = 1 < $paged ? $paged - 1 : 0;
|
617 |
+
$this->page( $paged, sprintf( '<i class="ftinvwl ftinvwl-chevron-left"></i><span>%s</span>', __( 'Previous Page', 'ti-woocommerce-wishlist' ) ), array( 'class' => 'button tinv-prev' ) );
|
618 |
+
}
|
619 |
+
|
620 |
+
/**
|
621 |
+
* Pages
|
622 |
+
*/
|
623 |
+
function pages() {
|
624 |
+
|
625 |
+
$paged = get_query_var( 'wl_paged', 1 );
|
626 |
+
if ( 1 === (int) $paged ) {
|
627 |
+
echo '<span></span>';
|
628 |
+
}
|
629 |
+
|
630 |
+
echo '<span>' . $paged . '/' . $this->pages . '</span>';
|
631 |
+
|
632 |
+
if ( (int) $this->pages === (int) $paged ) {
|
633 |
+
echo '<span></span>';
|
634 |
+
}
|
635 |
}
|
636 |
|
637 |
/**
|
640 |
function page_next() {
|
641 |
$paged = get_query_var( 'wl_paged', 1 );
|
642 |
$paged = 1 < $paged ? $paged + 1 : 2;
|
643 |
+
$this->page( $paged, sprintf( '<span>%s</span><i class="ftinvwl ftinvwl-chevron-right"></i>', __( 'Next Page', 'ti-woocommerce-wishlist' ) ), array( 'class' => 'button tinv-next' ) );
|
644 |
}
|
645 |
|
646 |
/**
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpr
|
|
4 |
Tags: wishlist, woocommerce, woocommerce wishlist, e-commerce, ecommerce
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.1
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -140,6 +140,17 @@ If you get stuck, you can ask for help in the [Plugin Forum](https://wordpress.o
|
|
140 |
|
141 |
|
142 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
= 1.9.18 =
|
144 |
*Release Date - 4 April 2019*
|
145 |
|
4 |
Tags: wishlist, woocommerce, woocommerce wishlist, e-commerce, ecommerce
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.1
|
7 |
+
Stable tag: 1.10.0
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
140 |
|
141 |
|
142 |
== Changelog ==
|
143 |
+
= 1.10.0 =
|
144 |
+
*Release Date - 9 April 2019*
|
145 |
+
|
146 |
+
* Added Force permalinks rewrite feature
|
147 |
+
* Added numeric pagination on a Wishlist page
|
148 |
+
* Added analytic tracking feature for compatibility with the premium version of plugin
|
149 |
+
* Improved compatibility with TM Extra Product Options plugin
|
150 |
+
* Fixed pagination issue on a Wishlist page for all actions
|
151 |
+
* Fixed minor PHP issues
|
152 |
+
* Fixed minor CSS issues
|
153 |
+
|
154 |
= 1.9.18 =
|
155 |
*Release Date - 4 April 2019*
|
156 |
|
templates/ti-wishlist-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* The Template for displaying wishlist if a current user not an owner.
|
4 |
*
|
5 |
-
* @version 1.
|
6 |
* @package TInvWishlist\Template
|
7 |
*/
|
8 |
|
@@ -16,7 +16,11 @@ wp_enqueue_script( 'tinvwl' );
|
|
16 |
<?php if ( function_exists( 'wc_print_notices' ) ) {
|
17 |
wc_print_notices();
|
18 |
} ?>
|
19 |
-
|
|
|
|
|
|
|
|
|
20 |
<?php do_action( 'tinvwl_before_wishlist_table', $wishlist ); ?>
|
21 |
<table class="tinvwl-table-manage-list">
|
22 |
<thead>
|
2 |
/**
|
3 |
* The Template for displaying wishlist if a current user not an owner.
|
4 |
*
|
5 |
+
* @version 1.10.0
|
6 |
* @package TInvWishlist\Template
|
7 |
*/
|
8 |
|
16 |
<?php if ( function_exists( 'wc_print_notices' ) ) {
|
17 |
wc_print_notices();
|
18 |
} ?>
|
19 |
+
<?php
|
20 |
+
$wl_paged = get_query_var( 'wl_paged' );
|
21 |
+
$form_url = ( $wl_paged ) ? add_query_arg( 'wl_paged', $wl_paged, tinv_url_wishlist() ) : tinv_url_wishlist();
|
22 |
+
?>
|
23 |
+
<form action="<?php echo esc_url( $form_url ); ?>" method="post" autocomplete="off">
|
24 |
<?php do_action( 'tinvwl_before_wishlist_table', $wishlist ); ?>
|
25 |
<table class="tinvwl-table-manage-list">
|
26 |
<thead>
|
templates/ti-wishlist.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* The Template for displaying wishlist if a current user is owner.
|
4 |
*
|
5 |
-
* @version 1.
|
6 |
* @package TInvWishlist\Template
|
7 |
*/
|
8 |
|
@@ -16,7 +16,11 @@ wp_enqueue_script( 'tinvwl' );
|
|
16 |
<?php if ( function_exists( 'wc_print_notices' ) ) {
|
17 |
wc_print_notices();
|
18 |
} ?>
|
19 |
-
|
|
|
|
|
|
|
|
|
20 |
<?php do_action( 'tinvwl_before_wishlist_table', $wishlist ); ?>
|
21 |
<table class="tinvwl-table-manage-list">
|
22 |
<thead>
|
2 |
/**
|
3 |
* The Template for displaying wishlist if a current user is owner.
|
4 |
*
|
5 |
+
* @version 1.10.0
|
6 |
* @package TInvWishlist\Template
|
7 |
*/
|
8 |
|
16 |
<?php if ( function_exists( 'wc_print_notices' ) ) {
|
17 |
wc_print_notices();
|
18 |
} ?>
|
19 |
+
<?php
|
20 |
+
$wl_paged = get_query_var( 'wl_paged' );
|
21 |
+
$form_url = ( $wl_paged ) ? add_query_arg( 'wl_paged', $wl_paged, tinv_url_wishlist() ) : tinv_url_wishlist();
|
22 |
+
?>
|
23 |
+
<form action="<?php echo esc_url( $form_url ); ?>" method="post" autocomplete="off">
|
24 |
<?php do_action( 'tinvwl_before_wishlist_table', $wishlist ); ?>
|
25 |
<table class="tinvwl-table-manage-list">
|
26 |
<thead>
|
ti-woocommerce-wishlist.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: WooCommerce Wishlist Plugin
|
5 |
* Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
6 |
* Description: Wishlist functionality for your WooCommerce store.
|
7 |
-
* Version: 1.
|
8 |
* Requires at least: 4.5
|
9 |
* Tested up to: 5.1
|
10 |
* WC requires at least: 2.6
|
@@ -41,7 +41,7 @@ if ( ! defined( 'TINVWL_DOMAIN' ) ) {
|
|
41 |
}
|
42 |
|
43 |
if ( ! defined( 'TINVWL_FVERSION' ) ) {
|
44 |
-
define( 'TINVWL_FVERSION', '1.
|
45 |
}
|
46 |
|
47 |
if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
|
4 |
* Plugin Name: WooCommerce Wishlist Plugin
|
5 |
* Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
6 |
* Description: Wishlist functionality for your WooCommerce store.
|
7 |
+
* Version: 1.10.0
|
8 |
* Requires at least: 4.5
|
9 |
* Tested up to: 5.1
|
10 |
* WC requires at least: 2.6
|
41 |
}
|
42 |
|
43 |
if ( ! defined( 'TINVWL_FVERSION' ) ) {
|
44 |
+
define( 'TINVWL_FVERSION', '1.10.0' );
|
45 |
}
|
46 |
|
47 |
if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
|
tinv-wishlists-function-integration.php
CHANGED
@@ -1512,13 +1512,16 @@ if ( ! function_exists( 'tinv_wishlist_metasupport_woocommerce_tm_extra_product_
|
|
1512 |
foreach ( $meta as $key => $value ) {
|
1513 |
$post_data[ $key ] = $value['display'];
|
1514 |
}
|
1515 |
-
|
|
|
|
|
|
|
1516 |
|
1517 |
if ( 'normal' == TM_EPO()->tm_epo_hide_options_in_cart && 'advanced' != TM_EPO()->tm_epo_cart_field_display && ! empty( $cart_item['tmcartepo'] ) ) {
|
1518 |
$cart_item['quantity'] = 1;
|
1519 |
$cart_item['data'] = wc_get_product( $variation_id ? $variation_id : $product_id );
|
1520 |
$cart_item['tm_cart_item_key'] = '';
|
1521 |
-
$item_data =
|
1522 |
|
1523 |
foreach ( $item_data as $key => $data ) {
|
1524 |
// Set hidden to true to not display meta on cart.
|
@@ -1559,7 +1562,10 @@ if ( ! function_exists( 'tinvwl_item_price_woocommerce_tm_extra_product_options'
|
|
1559 |
$product_id = $wl_product['product_id'];
|
1560 |
$has_epo = TM_EPO_API()->has_options( $product_id );
|
1561 |
if ( TM_EPO_API()->is_valid_options( $has_epo ) ) {
|
1562 |
-
|
|
|
|
|
|
|
1563 |
$cart_item['quantity'] = 1;
|
1564 |
$cart_item['data'] = $product;
|
1565 |
|
@@ -1574,7 +1580,7 @@ if ( ! function_exists( 'tinvwl_item_price_woocommerce_tm_extra_product_options'
|
|
1574 |
}
|
1575 |
}
|
1576 |
|
1577 |
-
$price = apply_filters( 'wc_tm_epo_ac_product_price', apply_filters( 'woocommerce_cart_item_price',
|
1578 |
}
|
1579 |
}
|
1580 |
|
1512 |
foreach ( $meta as $key => $value ) {
|
1513 |
$post_data[ $key ] = $value['display'];
|
1514 |
}
|
1515 |
+
|
1516 |
+
$cart_class = version_compare( TM_EPO_VERSION, '4.8.0', '<' ) ? TM_EPO() : TM_EPO_CART();
|
1517 |
+
|
1518 |
+
$cart_item = $cart_class->add_cart_item_data_helper( array(), $product_id, $post_data );
|
1519 |
|
1520 |
if ( 'normal' == TM_EPO()->tm_epo_hide_options_in_cart && 'advanced' != TM_EPO()->tm_epo_cart_field_display && ! empty( $cart_item['tmcartepo'] ) ) {
|
1521 |
$cart_item['quantity'] = 1;
|
1522 |
$cart_item['data'] = wc_get_product( $variation_id ? $variation_id : $product_id );
|
1523 |
$cart_item['tm_cart_item_key'] = '';
|
1524 |
+
$item_data = $cart_class->get_item_data_array( array(), $cart_item );
|
1525 |
|
1526 |
foreach ( $item_data as $key => $data ) {
|
1527 |
// Set hidden to true to not display meta on cart.
|
1562 |
$product_id = $wl_product['product_id'];
|
1563 |
$has_epo = TM_EPO_API()->has_options( $product_id );
|
1564 |
if ( TM_EPO_API()->is_valid_options( $has_epo ) ) {
|
1565 |
+
|
1566 |
+
$cart_class = version_compare( TM_EPO_VERSION, '4.8.0', '<' ) ? TM_EPO() : TM_EPO_CART();
|
1567 |
+
|
1568 |
+
$cart_item = $cart_class->add_cart_item_data_helper( array(), $product_id, $wl_product['meta'] );
|
1569 |
$cart_item['quantity'] = 1;
|
1570 |
$cart_item['data'] = $product;
|
1571 |
|
1580 |
}
|
1581 |
}
|
1582 |
|
1583 |
+
$price = apply_filters( 'wc_tm_epo_ac_product_price', apply_filters( 'woocommerce_cart_item_price', $cart_class->get_price_for_cart( $product_price, $cart_item, '' ), $cart_item, '' ), '', $cart_item, $product, $product_id );
|
1584 |
}
|
1585 |
}
|
1586 |
|