WooCommerce Wishlist Plugin - Version 1.10.0

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 Icon 128x128 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 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.9.18
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
- float: right; }
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
- .tinv-wishlist .social-buttons li a.white {
 
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-bottom: 35px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.9.18
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{float: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{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.9.18
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.9.18
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.9.18
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 'post' Custom elements in format SQL.
210
- *
211
- * @return string
212
- */
213
- public static function table( $name, $table ) {
214
- $name = self::$wpdb_prefix . self::$_name . '_' . $name;
215
- $fields = $table['field'];
216
- $table = filter_var_array( $table, array(
217
- 'charset' => FILTER_SANITIZE_STRING,
218
- 'key' => FILTER_SANITIZE_STRING,
219
- 'post' => FILTER_DEFAULT,
220
- ) );
221
-
222
- $table['charset'] = ( empty( $table['charset'] ) ) ? 'utf8' : $table['charset'];
223
- $table['charset'] = sprintf( 'DEFAULT CHARSET=%s', $table['charset'] );
224
-
225
- $keys = array_keys( $fields );
226
- if ( ! in_array( $table['key'], $keys ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
227
- $table['key'] = null;
228
- }
229
- $t = self::column_database();
230
- foreach ( $fields as $key => $flags ) {
231
- if ( is_string( $flags ) ) {
232
- if ( array_key_exists( $flags, $t ) ) {
233
- $flags = $t[ $flags ];
234
- } else {
235
- $flags = $t['text'];
236
- }
237
- }
238
- $fields[ $key ] = $flags;
239
- }
240
- if ( empty( $table['key'] ) ) {
241
- foreach ( $fields as $key => $flags ) {
242
- if ( array_key_exists( 4, $flags ) ) {
243
- if ( $flags[4] ) {
244
- $table['key'] = $key;
245
- break;
246
- }
247
- }
248
- }
249
- if ( empty( $table['key'] ) ) {
250
- foreach ( $keys as $key ) {
251
- if ( preg_match( '/id$/i', $key ) ) {
252
- $table['key'] = $key;
253
- break;
254
- }
255
- }
256
- }
257
- }
258
- unset( $keys );
259
- if ( empty( $table['key'] ) ) {
260
- $table['key'] = '';
261
- } else {
262
- $table['key'] = sprintf( ', PRIMARY KEY (`%s`)', $table['key'] );
263
- }
264
-
265
- if ( empty( $table['post'] ) ) {
266
- $table['post'] = '';
267
- } else {
268
- $table['post'] = ', ' . $table['post'];
269
- }
270
-
271
- foreach ( $fields as $key => $format ) {
272
- $fields[ $key ] = self::field( $key, $format );
273
- }
274
- $fields = implode( ', ', $fields );
275
-
276
- $sql = sprintf( 'CREATE TABLE IF NOT EXISTS `%s` ( %s%s%s) %s; ', $name, $fields, $table['key'], $table['post'], $table['charset'] );
277
-
278
- return $sql;
279
- }
280
-
281
- /**
282
- * Created SQL field
283
- *
284
- * @param string $name Name field.
285
- * @param array $newformat Structure field.
286
- * string 0 Data Types column.
287
- * integer|string 1 Length or Size column.
288
- * boolean 2 is NULL?
289
- * integer|string 3 Specifies a default value for a column.
290
- * boolean 4 is AUTO_INCREMENT?.
291
- *
292
- * @return string
293
- */
294
- public static function field( $name, $newformat ) {
295
- $format = array( 'TEXT', null, false, null, false );
296
-
297
- foreach ( $format as $key => $value ) {
298
- if ( array_key_exists( $key, $newformat ) ) {
299
- $format[ $key ] = $newformat[ $key ];
300
- }
301
- }
302
-
303
- if ( ! is_null( $format[1] ) ) {
304
- $format[1] = sprintf( '(%s)', $format[1] );
305
- }
306
-
307
- $format[2] = ( filter_var( $format[2], FILTER_VALIDATE_BOOLEAN ) ? '' : 'NOT ' ) . 'NULL';
308
-
309
- if ( ! is_null( $format[3] ) ) {
310
- if ( ! in_array( $format[3], array( 'CURRENT_TIMESTAMP' ) ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
311
- $format[3] = is_string( $format[3] ) ? "'" . $format[3] . "'" : $format[3];
312
- }
313
- $format[3] = sprintf( 'DEFAULT %s', $format[3] );
314
- }
315
-
316
- $format[4] = ( filter_var( $format[4], FILTER_VALIDATE_BOOLEAN ) ? 'AUTO_INCREMENT' : null );
317
-
318
- array_unshift( $format, '`' . $name . '`' );
319
- $format = array_filter( $format );
320
-
321
- return implode( ' ', $format );
322
- }
323
-
324
- /**
325
- * Created tables from array
326
- *
327
- * @param array $tables Array tables.
328
- *
329
- * @return boolean
330
- * @global wpdb $wpdb
331
- *
332
- */
333
- public static function create( $tables ) {
334
- global $wpdb;
335
- self::$wpdb_prefix = $wpdb->prefix;
336
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
337
-
338
- foreach ( $tables as $name => $table ) {
339
- if ( array_key_exists( 'field', $table ) && ! empty( $table['field'] ) ) {
340
- $table = self::table( $name, $table );
341
- $tables[ $name ] = dbDelta( $table );
342
- }
343
- }
344
-
345
- add_option( self::$_name . '_db_ver', self::$_version );
346
-
347
- return true;
348
- }
349
-
350
- /**
351
- * Upgrade tables from array
352
- *
353
- * @param array $tables Array tables.
354
- *
355
- * @return boolean
356
- * @global wpdb $wpdb
357
- *
358
- */
359
- public static function upgrade( $tables ) {
360
-
361
- self::create( $tables );
362
-
363
- foreach ( $tables as $name => $table ) {
364
- self::upgrade_action( $name, $table );
365
- }
366
-
367
- update_option( self::$_name . '_db_ver', self::$_version );
368
-
369
- return true;
370
- }
371
-
372
- /**
373
- * Get columns for exist table.
374
- *
375
- * @param string $name Table name.
376
- *
377
- * @return array
378
- * @global wpdb $wpdb
379
- *
380
- */
381
- public static function upgrade_get_columns( $name ) {
382
- global $wpdb;
383
-
384
- $_fields = array();
385
- $fields = $wpdb->get_results( "DESCRIBE `{$name}`", ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
386
- foreach ( $fields as $field ) {
387
- $_fields[ $field['Field'] ] = $field;
388
- }
389
-
390
- return $_fields;
391
- }
392
-
393
- /**
394
- * Apply upgrade action
395
- *
396
- * @param string $name Name Table.
397
- * @param array $table Structured array table.
398
- *
399
- * @return boolean
400
- * @global wpdb $wpdb
401
- *
402
- */
403
- public static function upgrade_action( $name, $table ) {
404
-
405
- if ( ! array_key_exists( 'upgrade', $table ) ) {
406
- return false;
407
- }
408
-
409
- $t = self::column_database();
410
- foreach ( $table['field'] as $key => $flags ) {
411
- if ( is_string( $flags ) ) {
412
- if ( array_key_exists( $flags, $t ) ) {
413
- $flags = $t[ $flags ];
414
- } else {
415
- $flags = $t['text'];
416
- }
417
- $table['field'][ $key ] = $flags;
418
- }
419
- }
420
- $name = self::$wpdb_prefix . self::$_name . '_' . $name;
421
- $upgrades = (array) $table['upgrade'];
422
- foreach ( $upgrades as $ver_upgrades ) {
423
- foreach ( $ver_upgrades as $upgrade ) {
424
- $action = $upgrade;
425
- if ( is_array( $upgrade ) ) {
426
- $action = $upgrade['action'];
427
- unset( $upgrade['action'] );
428
- }
429
- if ( ! is_string( $action ) ) {
430
- continue;
431
- }
432
- $action = preg_replace( '/[^a-z0-9_]/i', '', (string) $action );
433
- if ( empty( $action ) ) {
434
- continue;
435
- }
436
-
437
- if ( method_exists( __CLASS__, __FUNCTION__ . '_' . $action ) ) {
438
- call_user_func( array( __CLASS__, __FUNCTION__ . '_' . $action ), $name, $table, $upgrade );
439
- }
440
- }
441
- }
442
- }
443
-
444
- /**
445
- * Apply upgrade action
446
- * Truncate table
447
- *
448
- * @param string $name Table name.
449
- *
450
- * @global wpdb $wpdb
451
- *
452
- */
453
- public static function upgrade_action_truncate( $name ) {
454
- global $wpdb;
455
- $wpdb->query( "TRUNCATE `{$name}`" ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
456
- }
457
-
458
- /**
459
- * Apply upgrade action
460
- * Drop table
461
- *
462
- * @param string $name Table name.
463
- *
464
- * @global wpdb $wpdb
465
- *
466
- */
467
- public static function upgrade_action_drop( $name ) {
468
- global $wpdb;
469
- $sql = sprintf( 'DROP TABLE IF EXISTS `%s`;', $name );
470
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
471
- }
472
-
473
- /**
474
- * Apply upgrade action
475
- * Rename table
476
- *
477
- * @param string $name Table name.
478
- * @param array $table Not used.
479
- * @param array $upgrade Upgrade fields.
480
- *
481
- * @return boolean
482
- * @global wpdb $wpdb
483
- *
484
- */
485
- public static function upgrade_action_rename_table( $name, $table, $upgrade ) {
486
- global $wpdb;
487
- if ( ! array_key_exists( 'from', $upgrade ) ) {
488
- return false;
489
- }
490
- $_name = self::$wpdb_prefix . self::$_name . '_' . $upgrade['from'];
491
-
492
- $_t_name = $wpdb->get_var( "SHOW TABLES LIKE '{$_name}'" ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
493
- if ( $_t_name == $_name ) { // WPCS: loose comparison ok.
494
- self::upgrade_action_drop( $name );
495
- }
496
- $wpdb->query( sprintf( 'RENAME TABLE `%s` TO `%s`;', $_name, $name ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
497
- }
498
-
499
- /**
500
- * Apply upgrade action
501
- * Update fields table
502
- *
503
- * @param string $name Table name.
504
- * @param array $table Table array.
505
- *
506
- * @global wpdb $wpdb
507
- *
508
- */
509
- public static function upgrade_action_update_fields( $name, $table ) {
510
- global $wpdb;
511
-
512
- $_fields = self::upgrade_get_columns( $name );
513
- $fields = $table['field'];
514
-
515
- // Search excess fields.
516
- foreach ( $_fields as $field => $attr ) {
517
- if ( ! array_key_exists( $field, $fields ) ) {
518
- $sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $field );
519
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
520
- }
521
- }
522
-
523
- $prev_field = '';
524
-
525
- foreach ( $fields as $field => $attr ) {
526
- $attr = self::field( $field, $attr );
527
-
528
- $sql = sprintf( 'ALTER TABLE `%s` MODIFY %s;', $name, $attr );
529
- if ( ! array_key_exists( $field, $_fields ) ) {
530
- $_prev_field = empty( $prev_field ) ? '' : " AFTER `{$prev_field}`";
531
- $sql = sprintf( 'ALTER TABLE `%s` ADD %s;', $name, $attr . $_prev_field );
532
- }
533
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
534
-
535
- $prev_field = $field;
536
- }
537
- }
538
-
539
- /**
540
- * Apply upgrade action
541
- * Update field table
542
- *
543
- * @param string $name Table name.
544
- * @param array $table Table array.
545
- * @param array $upgrade Upgrade fields.
546
- *
547
- * @return boolean
548
- * @global wpdb $wpdb
549
- *
550
- */
551
- public static function upgrade_action_update_field( $name, $table, $upgrade ) {
552
- global $wpdb;
553
- if ( ! array_key_exists( 'field', $upgrade ) ) {
554
- return false;
555
- }
556
- $name_field = $upgrade['field'];
557
-
558
- $_fields = self::upgrade_get_columns( $name );
559
- $fields = $table['field'];
560
-
561
- $sql = '';
562
-
563
- if ( array_key_exists( $name_field, $fields ) ) {
564
- $prev_field = '';
565
- foreach ( $fields as $field => $attr ) {
566
- if ( $name_field == $field ) { // WPCS: loose comparison ok.
567
- break;
568
- }
569
- $prev_field = $field;
570
- }
571
-
572
- $attr = self::field( $name_field, $fields[ $name_field ] );
573
-
574
- $sql = sprintf( 'ALTER TABLE `%s` MODIFY %s;', $name, $attr );
575
- if ( ! array_key_exists( $name_field, $_fields ) ) {
576
- $_prev_field = empty( $prev_field ) ? '' : " AFTER `{$prev_field}`";
577
- $sql = sprintf( 'ALTER TABLE `%s` ADD %s;', $name, $attr . $_prev_field );
578
- }
579
- } else {
580
- if ( ! array_key_exists( $name_field, $fields ) ) {
581
- $sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $name_field );
582
- }
583
- }
584
- if ( ! empty( $sql ) ) {
585
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
586
- }
587
- }
588
-
589
- /**
590
- * Apply upgrade action
591
- * Rename field.
592
- *
593
- * @param string $name Table name.
594
- * @param array $table Table array.
595
- * @param array $upgrade Upgrade fields.
596
- *
597
- * @return boolean
598
- * @global wpdb $wpdb
599
- *
600
- */
601
- public static function upgrade_action_rename_field( $name, $table, $upgrade ) {
602
- global $wpdb;
603
- if ( ! array_key_exists( 'from', $upgrade ) || ! array_key_exists( 'to', $upgrade ) ) {
604
- return false;
605
- }
606
- $old_field = $upgrade['from'];
607
- $new_field = $upgrade['to'];
608
-
609
- $_fields = self::upgrade_get_columns( $name );
610
- $fields = $table['field'];
611
-
612
- if ( ! array_key_exists( $old_field, $_fields ) || ! array_key_exists( $new_field, $fields ) ) {
613
- return false;
614
- }
615
-
616
- if ( array_key_exists( $new_field, $_fields ) ) {
617
- $sql = sprintf( 'ALTER TABLE `%s` DROP COLUMN `%s`;', $name, $new_field );
618
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
619
- }
620
-
621
- $attr = self::field( $new_field, $fields[ $new_field ] );
622
-
623
- $sql = sprintf( 'ALTER TABLE `%s` CHANGE `%s` %s;', $name, $old_field, $attr );
624
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
625
-
626
- return true;
627
- }
628
-
629
- /**
630
- * Apply upgrade action
631
- * Use sql.
632
- *
633
- * @param string $name Table name.
634
- * @param array $table Not used.
635
- * @param array $upgrade Upgrade fields.
636
- *
637
- * @return boolean
638
- * @global wpdb $wpdb
639
- *
640
- */
641
- public static function upgrade_action_sql( $name, $table, $upgrade ) {
642
- global $wpdb;
643
- if ( ! array_key_exists( 'sql', $upgrade ) ) {
644
- return false;
645
- }
646
- $name = self::$wpdb_prefix . self::$_name . '_' . $name;
647
-
648
- $wpdb->query( str_replace( '{table_name}', $name, $upgrade['sql'] ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
649
- }
650
-
651
- /**
652
- * Destroy tables from array
653
- *
654
- * @param type $tables Array tables.
655
- *
656
- * @return boolean
657
- * @global wpdb $wpdb
658
- *
659
- */
660
- public static function destroy( $tables ) {
661
- global $wpdb;
662
- self::$wpdb_prefix = $wpdb->prefix;
663
-
664
- foreach ( $tables as $name => $table ) {
665
- $table = self::$wpdb_prefix . self::$_name . '_' . $name;
666
- $sql = sprintf( 'DROP TABLE IF EXISTS `%s`;', $table );
667
- $wpdb->query( $sql ); // WPCS: db call ok; no-cache ok; unprepared SQL ok.
668
- }
669
-
670
- delete_option( self::$_name . '_db_ver' );
671
-
672
- return true;
673
- }
674
-
675
- /**
676
- * Predefined fields attributes
677
- *
678
- * @return array
679
- */
680
- public static function column_database() {
681
- /**
682
- * Array format for fields
683
- *
684
- * @param string TYPE
685
- * @param integer|string SIZE
686
- * @param boolean NULL
687
- * @param integer|string DEFAULT
688
- * @param boolean AUTO_INCREMENT
689
- */
690
- return array(
691
- 'first++' => array( 'BIGINT', null, false, null, true ),
692
- 'int_0' => array( 'BIGINT', null, false, 0 ),
693
- 'int_1' => array( 'BIGINT', null, false, 1 ),
694
- 'text' => array( 'TEXT', null, true, null ),
695
- 'longtext' => array( 'LONGTEXT' ),
696
- 'date' => array( 'DATETIME', null, false, '0000-00-00 00:00:00' ),
697
- 'bool' => array( 'TINYINT', 1, false, 1 ),
698
- );
699
- }
700
-
701
- /**
702
- * Database
703
- *
704
- * @return array
705
- * @since 1.0.0
706
- */
707
- private static function database_1_0_0() {
708
- $t = array(
709
- 'status' => array( 'VARCHAR', 20, false, 'public' ),
710
- 'type' => array( 'VARCHAR', 20, false, 'list' ),
711
- 'key_elem' => array( 'VARCHAR', 45 ),
712
- 'key_user' => array( 'TINYINT', 1, false, 7 ),
713
- );
714
-
715
- return array(
716
- 'lists' => array(
717
- 'field' => array(
718
- 'ID' => 'first++',
719
- 'author' => 'int_0',
720
- 'date' => 'date',
721
- 'title' => 'text',
722
- 'status' => $t['status'],
723
- 'type' => $t['type'],
724
- 'share_key' => $t['key_elem'],
725
- ),
726
- ),
727
- 'items' => array(
728
- 'field' => array(
729
- 'ID' => 'first++',
730
- 'wishlist_id' => 'int_0',
731
- 'product_id' => 'int_0',
732
- 'variation_id' => 'int_0',
733
- 'author' => 'int_0',
734
- 'date' => 'date',
735
- 'quantity' => 'int_1',
736
- 'price' => $t['key_elem'],
737
- 'in_stock' => 'bool',
738
- ),
739
- ),
740
- );
741
- }
742
-
743
- /**
744
- * Database
745
- *
746
- * @return array
747
- * @since 1.5.0
748
- */
749
- private static function database_1_5_0() {
750
- return array(
751
- 'items' => array(
752
- 'field' => array(
753
- 'ID' => 'first++',
754
- 'wishlist_id' => 'int_0',
755
- 'product_id' => 'int_0',
756
- 'variation_id' => 'int_0',
757
- 'formdata' => 'text',
758
- 'author' => 'int_0',
759
- 'date' => 'date',
760
- 'quantity' => 'int_1',
761
- 'price' => array( 'VARCHAR', 255 ),
762
- 'in_stock' => 'bool',
763
- ),
764
- 'upgrade' => array(
765
- array(
766
- 'action' => 'update_fields',
767
- ),
768
- ),
769
- ),
770
- );
771
- }
772
-
773
- /**
774
- * Database
775
- *
776
- * @return array
777
- * @since 1.8.13
778
- */
779
- private static function database_1_8_13() {
780
- $t = array(
781
- 'status' => array( 'VARCHAR', 20, false, 'public' ),
782
- 'type' => array( 'VARCHAR', 20, false, 'list' ),
783
- 'key_elem' => array( 'VARCHAR', 45 ),
784
- 'key_user' => array( 'TINYINT', 1, false, 7 ),
785
- );
786
-
787
- return array(
788
- 'lists' => array(
789
- 'field' => array(
790
- 'ID' => 'first++',
791
- 'author' => 'int_0',
792
- 'date' => 'date',
793
- 'title' => 'text',
794
- 'status' => $t['status'],
795
- 'type' => $t['type'],
796
- 'share_key' => $t['key_elem'],
797
- ),
798
- 'upgrade' => array(
799
- array(
800
- 'action' => 'update_fields',
801
- ),
802
- ),
803
- ),
804
- 'items' => array(
805
- 'field' => array(
806
- 'ID' => 'first++',
807
- 'wishlist_id' => 'int_0',
808
- 'product_id' => 'int_0',
809
- 'variation_id' => 'int_0',
810
- 'formdata' => 'text',
811
- 'author' => 'int_0',
812
- 'date' => 'date',
813
- 'quantity' => 'int_1',
814
- 'price' => array( 'VARCHAR', 255 ),
815
- 'in_stock' => 'bool',
816
- ),
817
- 'upgrade' => array(
818
- array(
819
- 'action' => 'update_fields',
820
- ),
821
- ),
822
- ),
823
- );
824
- }
825
-
826
- /**
827
- * Database
828
- *
829
- * @return array
830
- * @since 1.9.16
831
- */
832
- private static function database_1_9_16() {
833
-
834
- return array(
835
- 'items' => array(
836
- 'field' => array(
837
- 'ID' => 'first++',
838
- 'wishlist_id' => 'int_0',
839
- 'product_id' => 'int_0',
840
- 'variation_id' => 'int_0',
841
- 'formdata' => 'text',
842
- 'author' => 'int_0',
843
- 'date' => 'date',
844
- 'quantity' => 'int_1',
845
- 'price' => array( 'VARCHAR', 255, false, 0 ),
846
- 'in_stock' => 'bool',
847
- ),
848
- 'upgrade' => array(
849
- array(
850
- 'action' => 'update_fields',
851
- ),
852
- ),
853
- ),
854
- );
855
- }
856
-
857
- /**
858
- * Set localisation
859
- */
860
- private static function set_locale() {
861
- $locale = apply_filters( 'plugin_locale', get_locale(), TINVWL_DOMAIN );
862
- $mofile = sprintf( '%1$s-%2$s.mo', TINVWL_DOMAIN, $locale );
863
- $mofiles = array();
864
-
865
- $mofiles[] = WP_LANG_DIR . DIRECTORY_SEPARATOR . basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . $mofile;
866
- $mofiles[] = WP_LANG_DIR . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $mofile;
867
- $mofiles[] = TINVWL_PATH . 'languages' . DIRECTORY_SEPARATOR . $mofile;
868
- foreach ( $mofiles as $mofile ) {
869
- if ( file_exists( $mofile ) && load_textdomain( TINVWL_DOMAIN, $mofile ) ) {
870
- return;
871
- }
872
- }
873
-
874
- load_plugin_textdomain( TINVWL_DOMAIN, false, basename( TINVWL_PATH ) . DIRECTORY_SEPARATOR . 'languages' );
875
- }
876
-
877
- /**
878
- * Load default data
879
- */
880
- public static function load_data() {
881
- self::set_locale();
882
- $settings = tinv_get_option_defaults( 'all' );
883
- foreach ( $settings as $setting => $array ) {
884
- add_option( sprintf( '%s-%s', self::$_name, $setting ), $array );
885
- }
886
- }
887
-
888
- /**
889
- * Upgrade default data
890
- */
891
- public static function upgrade_data() {
892
- self::set_locale();
893
- $settings = tinv_get_option_defaults( 'all' );
894
- foreach ( $settings as $setting => $array ) {
895
- $_array = get_option( sprintf( '%s-%s', self::$_name, $setting ) );
896
- if ( false === $_array ) {
897
- add_option( sprintf( '%s-%s', self::$_name, $setting ), $array );
898
- } else {
899
- $need_upgrade = false;
900
- foreach ( (array) $array as $key => $value ) {
901
- if ( ! array_key_exists( $key, (array) $_array ) ) {
902
- $_array[ $key ] = $value;
903
- $need_upgrade = true;
904
- }
905
- }
906
- if ( $need_upgrade ) {
907
- update_option( sprintf( '%s-%s', self::$_name, $setting ), $_array );
908
- }
909
- }
910
- }
911
- }
912
-
913
- /**
914
- * Unload default data
915
- */
916
- public static function unload_data() {
917
- $settings = array_keys( tinv_get_option_defaults( 'all' ) );
918
- foreach ( $settings as $setting ) {
919
- delete_option( sprintf( '%s-%s', self::$_name, $setting ) );
920
- }
921
- delete_option( self::$_name . '_ver' );
922
- delete_option( self::$_name . '_wizard' );
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.9.18
2
- # This file is distributed under the same license as the WooCommerce Wishlist Plugin - 1.9.18 package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WooCommerce Wishlist Plugin - 1.9.18\n"
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:800
36
  msgid "Save Settings"
37
  msgstr ""
38
 
39
- #: admin/basestyle.helper.php:120, admin/settings/general.class.php:806
40
  msgid "Reset"
41
  msgstr ""
42
 
43
- #: admin/basestyle.helper.php:126, admin/settings/general.class.php:812
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:244
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:251
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:203, admin/settings/general.class.php:220
152
  msgid "Coming soon"
153
  msgstr ""
154
 
155
- #: admin/settings/general.class.php:210, views/wizard/step-page.php:36
156
  msgid "My Wishlist"
157
  msgstr ""
158
 
159
- #: admin/settings/general.class.php:219
160
  msgid "Wishlist Processing Options"
161
  msgstr ""
162
 
163
- #: admin/settings/general.class.php:227
164
  msgid "Automatic removal"
165
  msgstr ""
166
 
167
- #: admin/settings/general.class.php:234
168
  msgid "Remove condition"
169
  msgstr ""
170
 
171
- #: admin/settings/general.class.php:237
172
  msgid "Add to Cart"
173
  msgstr ""
174
 
175
- #: admin/settings/general.class.php:259
176
  msgid "Product page \"Add to Wishlist\" Button Settings"
177
  msgstr ""
178
 
179
- #: admin/settings/general.class.php:265, admin/settings/general.class.php:389, views/wizard/step-button.php:32
180
  msgid "Button position"
181
  msgstr ""
182
 
183
- #: admin/settings/general.class.php:266
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:269, admin/settings/general.class.php:392, includes/wizard.class.php:408
188
  msgid "After \"Add to Cart\" button"
189
  msgstr ""
190
 
191
- #: admin/settings/general.class.php:270, admin/settings/general.class.php:393, includes/wizard.class.php:409
192
  msgid "Before \"Add to Cart\" button"
193
  msgstr ""
194
 
195
- #: admin/settings/general.class.php:271, admin/settings/general.class.php:395, includes/wizard.class.php:410
196
  msgid "Custom position with code"
197
  msgstr ""
198
 
199
- #: admin/settings/general.class.php:277, admin/settings/general.class.php:402
200
  msgid "Button custom CSS class"
201
  msgstr ""
202
 
203
- #: admin/settings/general.class.php:278, admin/settings/general.class.php:403
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:287, admin/settings/general.class.php:412
208
  msgid "\"Add to Wishlist\" Icon"
209
  msgstr ""
210
 
211
- #: admin/settings/general.class.php:288, admin/settings/general.class.php:682
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:291, admin/settings/general.class.php:415, admin/settings/general.class.php:677
216
  msgid "None"
217
  msgstr ""
218
 
219
- #: admin/settings/general.class.php:292, admin/settings/general.class.php:416, admin/settings/general.class.php:678
220
  msgid "Heart"
221
  msgstr ""
222
 
223
- #: admin/settings/general.class.php:293, admin/settings/general.class.php:417, admin/settings/general.class.php:679
224
  msgid "Heart+"
225
  msgstr ""
226
 
227
- #: admin/settings/general.class.php:294, admin/settings/general.class.php:418, admin/settings/general.class.php:680
228
  msgid "Custom"
229
  msgstr ""
230
 
231
- #: admin/settings/general.class.php:311, admin/settings/general.class.php:434, admin/settings/general.class.php:697
232
  msgid "Upload"
233
  msgstr ""
234
 
235
- #: admin/settings/general.class.php:320, admin/settings/general.class.php:443
236
  msgid "\"Add to Wishlist\" Icon Color"
237
  msgstr ""
238
 
239
- #: admin/settings/general.class.php:322, admin/settings/general.class.php:445, admin/settings/general.class.php:657, admin/settings/general.class.php:708
240
  msgid "Use font color"
241
  msgstr ""
242
 
243
- #: admin/settings/general.class.php:323, admin/settings/general.class.php:446, admin/settings/general.class.php:709
244
  msgid "Black"
245
  msgstr ""
246
 
247
- #: admin/settings/general.class.php:324, admin/settings/general.class.php:447, admin/settings/general.class.php:659, admin/settings/general.class.php:710
248
  msgid "White"
249
  msgstr ""
250
 
251
- #: admin/settings/general.class.php:331, admin/settings/general.class.php:454
252
  msgid "Show preloader"
253
  msgstr ""
254
 
255
- #: admin/settings/general.class.php:332, admin/settings/general.class.php:455
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:338, admin/settings/general.class.php:461
260
  msgid "Show button text"
261
  msgstr ""
262
 
263
- #: admin/settings/general.class.php:353
264
  msgid "\"Add to Wishlist\" button Text"
265
  msgstr ""
266
 
267
- #: admin/settings/general.class.php:359, admin/settings/general.class.php:482
268
  msgid "\"Remove from Wishlist\" Button Text"
269
  msgstr ""
270
 
271
- #: admin/settings/general.class.php:367
272
  msgid "Product listing Button Settings"
273
  msgstr ""
274
 
275
- #: admin/settings/general.class.php:368
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:374
280
  msgid "Show in Product Listing"
281
  msgstr ""
282
 
283
- #: admin/settings/general.class.php:394
284
  msgid "Above Thumbnail"
285
  msgstr ""
286
 
287
- #: admin/settings/general.class.php:397
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:476, views/wizard/step-button.php:41
292
  msgid "\"Add to Wishlist\" Text"
293
  msgstr ""
294
 
295
- #: admin/settings/general.class.php:490
296
  msgid "Wishlist Product Settings"
297
  msgstr ""
298
 
299
- #: admin/settings/general.class.php:491
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:497
304
  msgid "Show \"Add to Cart\" button"
305
  msgstr ""
306
 
307
- #: admin/settings/general.class.php:504
308
  msgid "\"Add to Cart\" Text"
309
  msgstr ""
310
 
311
- #: admin/settings/general.class.php:511
312
  msgid "Show Unit price"
313
  msgstr ""
314
 
315
- #: admin/settings/general.class.php:517
316
  msgid "Show Stock status"
317
  msgstr ""
318
 
319
- #: admin/settings/general.class.php:523
320
  msgid "Show Date of addition"
321
  msgstr ""
322
 
323
- #: admin/settings/general.class.php:530
324
  msgid "Wishlist Table Settings"
325
  msgstr ""
326
 
327
- #: admin/settings/general.class.php:531
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:537
332
  msgid "Show Checkboxes"
333
  msgstr ""
334
 
335
- #: admin/settings/general.class.php:549
336
  msgid "Show Actions button"
337
  msgstr ""
338
 
339
- #: admin/settings/general.class.php:550
340
  msgid "Bulk actions drop down at the bottom of wishlist table"
341
  msgstr ""
342
 
343
- #: admin/settings/general.class.php:556
344
  msgid "Show \"Add Selected to Cart\" button"
345
  msgstr ""
346
 
347
- #: admin/settings/general.class.php:563
348
  msgid "\"Add Selected to Cart\" Button Text"
349
  msgstr ""
350
 
351
- #: admin/settings/general.class.php:574
352
  msgid "Show \"Add All to Cart\" button"
353
  msgstr ""
354
 
355
- #: admin/settings/general.class.php:581
356
  msgid "\"Add All to Cart\" Button Text"
357
  msgstr ""
358
 
359
- #: admin/settings/general.class.php:594
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:600
364
  msgid "Social Networks Sharing Options"
365
  msgstr ""
366
 
367
- #: admin/settings/general.class.php:606, views/wizard/step-social.php:26
368
  msgid "Show \"Facebook\" Button"
369
  msgstr ""
370
 
371
- #: admin/settings/general.class.php:612, views/wizard/step-social.php:35
372
  msgid "Show \"Twitter\" Button"
373
  msgstr ""
374
 
375
- #: admin/settings/general.class.php:618, views/wizard/step-social.php:44
376
  msgid "Show \"Pinterest\" Button"
377
  msgstr ""
378
 
379
- #: admin/settings/general.class.php:624, views/wizard/step-social.php:53
380
  msgid "Show \"Google+\" Button"
381
  msgstr ""
382
 
383
- #: admin/settings/general.class.php:630, views/wizard/step-social.php:62
384
  msgid "Show \"WhatsApp\" Button"
385
  msgstr ""
386
 
387
- #: admin/settings/general.class.php:636
388
  msgid "Show \"Copy to clipboard\" Button"
389
  msgstr ""
390
 
391
- #: admin/settings/general.class.php:642, views/wizard/step-social.php:80
392
  msgid "Show \"Share by Email\" Button"
393
  msgstr ""
394
 
395
- #: admin/settings/general.class.php:648
396
  msgid "\"Share on\" Text"
397
  msgstr ""
398
 
399
- #: admin/settings/general.class.php:654
400
  msgid "Social Icons Color"
401
  msgstr ""
402
 
403
- #: admin/settings/general.class.php:658
404
  msgid "Dark"
405
  msgstr ""
406
 
407
- #: admin/settings/general.class.php:667
408
  msgid "Wishlist Product Counter"
409
  msgstr ""
410
 
411
- #: admin/settings/general.class.php:668
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:674
416
  msgid "\"Wishlist\" Counter Icon"
417
  msgstr ""
418
 
419
- #: admin/settings/general.class.php:706
420
  msgid "\"Wishlist\" Counter Icon Color"
421
  msgstr ""
422
 
423
- #: admin/settings/general.class.php:717
424
  msgid "Show \"Wishlist\" Counter Text"
425
  msgstr ""
426
 
427
- #: admin/settings/general.class.php:726
428
  msgid "\"Wishlist\" Counter Text"
429
  msgstr ""
430
 
431
- #: admin/settings/general.class.php:727
432
  msgid "Wishlist - "
433
  msgstr ""
434
 
435
- #: admin/settings/general.class.php:733
436
  msgid "Add counter to menu"
437
  msgstr ""
438
 
439
- #: admin/settings/general.class.php:735
440
  msgid "You can add a wishlist products counter as item to the selected menu."
441
  msgstr ""
442
 
443
- #: admin/settings/general.class.php:744
444
  msgid "Counter position (Menu item order)"
445
  msgstr ""
446
 
447
- #: admin/settings/general.class.php:745
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:756
452
  msgid "Show number of products in counter"
453
  msgstr ""
454
 
455
- #: admin/settings/general.class.php:765
456
  msgid "Hide zero value"
457
  msgstr ""
458
 
459
- #: admin/settings/general.class.php:766
460
  msgid "Do not show the \"0\" value in a counter if wishlist is empty."
461
  msgstr ""
462
 
463
- #: admin/settings/general.class.php:777
464
  msgid "Support chat settings"
465
  msgstr ""
466
 
467
- #: admin/settings/general.class.php:784
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:586
824
  msgid "Wishlist"
825
  msgstr ""
826
 
@@ -864,23 +876,23 @@ msgstr ""
864
  msgid "Login"
865
  msgstr ""
866
 
867
- #: public/tinvwl.class.php:324
868
  msgid "%1$s by %2$s"
869
  msgstr ""
870
 
871
- #: public/tinvwl.class.php:483
872
  msgid "Create New"
873
  msgstr ""
874
 
875
- #: public/tinvwl.class.php:486
876
  msgid "Please select some product options before adding this product to your wishlist."
877
  msgstr ""
878
 
879
- #: public/tinvwl.class.php:487
880
  msgid "No items or actions are selected."
881
  msgstr ""
882
 
883
- #: public/tinvwl.class.php:488
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:72
931
  msgid "Remove"
932
  msgstr ""
933
 
934
- #: public/wishlist/buttons.class.php:495, public/wishlist/view.class.php:360
935
  msgid "&ldquo;%s&rdquo;"
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:370
945
  msgid "%s has been removed from wishlist."
946
  msgstr ""
947
 
948
- #: public/wishlist/view.class.php:372
949
  msgid "%s has not been removed from wishlist."
950
  msgstr ""
951
 
952
- #: public/wishlist/view.class.php:515
953
  msgid "Return to Wishlist"
954
  msgstr ""
955
 
956
- #: public/wishlist/view.class.php:610
957
  msgid "Previous Page"
958
  msgstr ""
959
 
960
- #: public/wishlist/view.class.php:619
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:26, templates/ti-wishlist.php:26
985
  msgid "Select all for bulk action"
986
  msgstr ""
987
 
988
- #: templates/ti-wishlist-user.php:31, templates/ti-wishlist.php:32
989
  msgid "Product Name"
990
  msgstr ""
991
 
992
- #: templates/ti-wishlist-user.php:32, templates/ti-wishlist.php:33
993
  msgid "Product"
994
  msgstr ""
995
 
996
- #: templates/ti-wishlist-user.php:34, templates/ti-wishlist.php:35
997
  msgid "Unit Price"
998
  msgstr ""
999
 
1000
- #: templates/ti-wishlist-user.php:37, templates/ti-wishlist.php:38
1001
  msgid "Date Added"
1002
  msgstr ""
1003
 
1004
- #: templates/ti-wishlist-user.php:40, templates/ti-wishlist.php:41
1005
  msgid "Stock Status"
1006
  msgstr ""
1007
 
1008
- #: templates/ti-wishlist-user.php:63, templates/ti-wishlist.php:64
1009
  msgid "Select for bulk action"
1010
  msgstr ""
1011
 
1012
- #: templates/ti-wishlist-user.php:116, templates/ti-wishlist.php:124, tinv-wishlists-function-integration.php:774, tinv-wishlists-function-integration.php:931, tinv-wishlists-function-integration.php:1093, tinv-wishlists-function-integration.php:1307
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:1652
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 "&ldquo;%s&rdquo;"
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( '%s<i class="ftinvwl ftinvwl-chevron-right"></i>', __( 'Next Page', 'ti-woocommerce-wishlist' ) ), array( 'class' => 'button tinv-next' ) );
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.9.18
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.9.0
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
- <form action="<?php echo esc_url( tinv_url_wishlist() ); ?>" method="post" autocomplete="off">
 
 
 
 
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.9.0
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
- <form action="<?php echo esc_url( tinv_url_wishlist() ); ?>" method="post" autocomplete="off">
 
 
 
 
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.9.18
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.9.18' );
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
- $cart_item = TM_EPO()->add_cart_item_data_helper( array(), $product_id, $post_data );
 
 
 
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 = TM_EPO()->get_item_data_array( array(), $cart_item );
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
- $cart_item = TM_EPO()->add_cart_item_data_helper( array(), $product_id, $wl_product['meta'] );
 
 
 
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', TM_EPO()->get_price_for_cart( $product_price, $cart_item, '' ), $cart_item, '' ), '', $cart_item, $product, $product_id );
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