WooCommerce Wishlist Plugin - Version 1.9.0

Version Description

Release Date - 17 October 2018

  • Fixed no cache issue for WooCommerce versions below 3.2.4
  • Added redirect to a previous page after login when "Require Login" option is enabled
  • Added an option to add the wishlist counter into a menu
  • Improved compatibility with WooCommerce Subscriptions plugin
  • Improved compatibility with WooCommerce Product Bundles plugin
  • Improved compatibility with WooCommerce Composite Products plugin
Download this release

Release Info

Developer templateinvaders
Plugin Icon 128x128 WooCommerce Wishlist Plugin
Version 1.9.0
Comparing to
See all releases

Code changes from version 1.8.17 to 1.9.0

admin/settings/general.class.php CHANGED
@@ -38,6 +38,21 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
38
  );
39
  }
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  /**
42
  * Create sections for this settings
43
  *
@@ -47,11 +62,12 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
47
  add_action( $this->_name . '_section_before', array( $this, 'premium_features' ), 9 );
48
  $lists = get_pages( array( 'number' => 999999 ) ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.get_pages
49
  $page_list = array( '' => '' );
 
50
  foreach ( $lists as $list ) {
51
  $page_list[ $list->ID ] = $list->post_title;
52
  }
53
 
54
- return array(
55
  array(
56
  'id' => 'general',
57
  'title' => __( 'General Settings', 'ti-woocommerce-wishlist' ),
@@ -636,14 +652,14 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
636
  ),
637
  array(
638
  'id' => 'topline',
639
- 'title' => __( 'Wishlist Products Counter', 'ti-woocommerce-wishlist' ),
640
  'desc' => sprintf( __( '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.', 'ti-woocommerce-wishlist' ), esc_url( admin_url( 'widgets.php' ) ) ),
641
  'show_names' => true,
642
  'fields' => array(
643
  array(
644
  'type' => 'select',
645
  'name' => 'icon',
646
- 'text' => __( '"Wishlist" Icon', 'ti-woocommerce-wishlist' ),
647
  'std' => 'heart',
648
  'options' => array(
649
  '' => __( 'None', 'ti-woocommerce-wishlist' ),
@@ -675,7 +691,7 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
675
  'type' => 'select',
676
  'name' => 'icon_style',
677
  'std' => '',
678
- 'text' => __( '"Wishlist" Icon Color', 'ti-woocommerce-wishlist' ),
679
  'options' => array(
680
  '' => __( 'Use font color', 'ti-woocommerce-wishlist' ),
681
  'black' => __( 'Black', 'ti-woocommerce-wishlist' ),
@@ -686,7 +702,7 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
686
  array(
687
  'type' => 'checkboxonoff',
688
  'name' => 'show_text',
689
- 'text' => __( 'Show counter text', 'ti-woocommerce-wishlist' ),
690
  'std' => true,
691
  'extra' => array(
692
  'tiwl-show' => '.tiwl-dropdown-text',
@@ -695,37 +711,87 @@ class TInvWL_Admin_Settings_General extends TInvWL_Admin_BaseSection {
695
  array(
696
  'type' => 'text',
697
  'name' => 'text',
698
- 'text' => __( 'Counter Text', 'ti-woocommerce-wishlist' ),
699
  'std' => __( 'Wishlist - ', 'ti-woocommerce-wishlist' ),
700
  'class' => 'tiwl-dropdown-text',
701
  ),
702
- ),
703
- ),
704
- array(
705
- 'id' => 'save_buttons',
706
- 'class' => 'only-button',
707
- 'noform' => true,
708
- 'fields' => array(
709
  array(
710
- 'type' => 'button_submit',
711
- 'name' => 'setting_save',
712
- 'std' => '<span><i class="ftinvwl ftinvwl-check"></i></span>' . __( 'Save Settings', 'ti-woocommerce-wishlist' ),
713
- 'extra' => array( 'class' => 'tinvwl-btn split status-btn-ok' ),
 
 
 
 
 
714
  ),
715
  array(
716
- 'type' => 'button_submit',
717
- 'name' => 'setting_reset',
718
- 'std' => '<span><i class="ftinvwl ftinvwl-times"></i></span>' . __( 'Reset', 'ti-woocommerce-wishlist' ),
719
- 'extra' => array( 'class' => 'tinvwl-btn split status-btn-ok tinvwl-confirm-reset' ),
 
 
 
 
 
 
720
  ),
721
  array(
722
- 'type' => 'button_submit_quick',
723
- 'name' => 'setting_save_quick',
724
- 'std' => '<span><i class="ftinvwl ftinvwl-floppy-o"></i></span>' . __( 'Save', 'ti-woocommerce-wishlist' ),
 
725
  ),
726
  ),
727
  ),
728
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
729
  }
730
 
731
  /**
38
  );
39
  }
40
 
41
+ /**
42
+ * Get WP menus
43
+ *
44
+ * @return array
45
+ */
46
+ public function get_wp_menus() {
47
+ $menus = array( esc_html__( 'Select Your Menu', 'ti-woocommerce-wishlist' ) );
48
+ $get_menus = get_terms( 'nav_menu', array( 'hide_empty' => true ) );
49
+ foreach ( $get_menus as $menu ) {
50
+ $menus[ $menu->term_id ] = $menu->name;
51
+ }
52
+
53
+ return $menus;
54
+ }
55
+
56
  /**
57
  * Create sections for this settings
58
  *
62
  add_action( $this->_name . '_section_before', array( $this, 'premium_features' ), 9 );
63
  $lists = get_pages( array( 'number' => 999999 ) ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.get_pages
64
  $page_list = array( '' => '' );
65
+ $menus = $this->get_wp_menus();
66
  foreach ( $lists as $list ) {
67
  $page_list[ $list->ID ] = $list->post_title;
68
  }
69
 
70
+ $settings = array(
71
  array(
72
  'id' => 'general',
73
  'title' => __( 'General Settings', 'ti-woocommerce-wishlist' ),
652
  ),
653
  array(
654
  'id' => 'topline',
655
+ 'title' => __( 'Wishlist Product Counter', 'ti-woocommerce-wishlist' ),
656
  'desc' => sprintf( __( '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.', 'ti-woocommerce-wishlist' ), esc_url( admin_url( 'widgets.php' ) ) ),
657
  'show_names' => true,
658
  'fields' => array(
659
  array(
660
  'type' => 'select',
661
  'name' => 'icon',
662
+ 'text' => __( '"Wishlist" Counter Icon', 'ti-woocommerce-wishlist' ),
663
  'std' => 'heart',
664
  'options' => array(
665
  '' => __( 'None', 'ti-woocommerce-wishlist' ),
691
  'type' => 'select',
692
  'name' => 'icon_style',
693
  'std' => '',
694
+ 'text' => __( '"Wishlist" Counter Icon Color', 'ti-woocommerce-wishlist' ),
695
  'options' => array(
696
  '' => __( 'Use font color', 'ti-woocommerce-wishlist' ),
697
  'black' => __( 'Black', 'ti-woocommerce-wishlist' ),
702
  array(
703
  'type' => 'checkboxonoff',
704
  'name' => 'show_text',
705
+ 'text' => __( 'Show "Wishlist" Counter Text', 'ti-woocommerce-wishlist' ),
706
  'std' => true,
707
  'extra' => array(
708
  'tiwl-show' => '.tiwl-dropdown-text',
711
  array(
712
  'type' => 'text',
713
  'name' => 'text',
714
+ 'text' => __( '"Wishlist" Counter Text', 'ti-woocommerce-wishlist' ),
715
  'std' => __( 'Wishlist - ', 'ti-woocommerce-wishlist' ),
716
  'class' => 'tiwl-dropdown-text',
717
  ),
 
 
 
 
 
 
 
718
  array(
719
+ 'type' => 'select',
720
+ 'name' => 'menu',
721
+ 'text' => __( 'Add counter to menu', 'ti-woocommerce-wishlist' ),
722
+ 'options' => $menus,
723
+ 'desc' => __( 'You can add a wishlist products counter as item to the selected menu.', 'ti-woocommerce-wishlist' ),
724
+ 'extra' => array(
725
+ 'tiwl-value' => '0',
726
+ 'tiwl-hide' => '.tiwl-menu-position',
727
+ ),
728
  ),
729
  array(
730
+ 'type' => 'number',
731
+ 'name' => 'menu_order',
732
+ 'text' => __( 'Counter position (Menu item order)', 'ti-woocommerce-wishlist' ),
733
+ 'desc' => __( 'Allows you to add the wishlist counter as a menu item and apply its position.', 'ti-woocommerce-wishlist' ),
734
+ 'std' => 100,
735
+ 'class' => 'tiwl-menu-position',
736
+ 'extra' => array(
737
+ 'step' => '1',
738
+ 'min' => '1',
739
+ ),
740
  ),
741
  array(
742
+ 'type' => 'checkboxonoff',
743
+ 'name' => 'show_counter',
744
+ 'text' => __( 'Show number of products in counter', 'ti-woocommerce-wishlist' ),
745
+ 'std' => true,
746
  ),
747
  ),
748
  ),
749
  );
750
+
751
+ if ( ! empty( $_GET['chat'] ) ) {
752
+ $settings[] = array(
753
+ 'id' => 'chat',
754
+ 'title' => __( 'Support chat settings', 'ti-woocommerce-wishlist' ),
755
+ 'desc' => '',
756
+ 'show_names' => true,
757
+ 'fields' => array(
758
+ array(
759
+ 'type' => 'checkboxonoff',
760
+ 'name' => 'disabled',
761
+ 'text' => __( 'Disable support chat', 'ti-woocommerce-wishlist' ),
762
+ 'std' => false,
763
+ ),
764
+ ),
765
+ );
766
+ }
767
+
768
+ // Buttons.
769
+ $settings[] = array(
770
+ 'id' => 'save_buttons',
771
+ 'class' => 'only-button',
772
+ 'noform' => true,
773
+ 'fields' => array(
774
+ array(
775
+ 'type' => 'button_submit',
776
+ 'name' => 'setting_save',
777
+ 'std' => '<span><i class="ftinvwl ftinvwl-check"></i></span>' . __( 'Save Settings', 'ti-woocommerce-wishlist' ),
778
+ 'extra' => array( 'class' => 'tinvwl-btn split status-btn-ok' ),
779
+ ),
780
+ array(
781
+ 'type' => 'button_submit',
782
+ 'name' => 'setting_reset',
783
+ 'std' => '<span><i class="ftinvwl ftinvwl-times"></i></span>' . __( 'Reset', 'ti-woocommerce-wishlist' ),
784
+ 'extra' => array( 'class' => 'tinvwl-btn split status-btn-ok tinvwl-confirm-reset' ),
785
+ ),
786
+ array(
787
+ 'type' => 'button_submit_quick',
788
+ 'name' => 'setting_save_quick',
789
+ 'std' => '<span><i class="ftinvwl ftinvwl-floppy-o"></i></span>' . __( 'Save', 'ti-woocommerce-wishlist' ),
790
+ ),
791
+ ),
792
+ );
793
+
794
+ return $settings;
795
  }
796
 
797
  /**
admin/tinvwl.class.php CHANGED
@@ -186,13 +186,15 @@ class TInvWL_Admin_TInvWL extends TInvWL_Admin_Base {
186
  ) );
187
  wp_enqueue_script( $this->_name );
188
 
189
- $user_id = get_current_user_id();
190
- $user_info = get_userdata( $user_id );
191
- $current_theme = wp_get_theme();
192
 
193
- $parent_theme = $current_theme->parent();
 
 
194
 
195
- wp_add_inline_script( $this->_name, 'window.intercomSettings = {
 
 
196
  app_id: "zyh6v0pc",
197
  "Website": "' . get_site_url() . '",
198
  "Plugin name": "WooCommerce Wishlist Plugin",
@@ -207,22 +209,23 @@ class TInvWL_Admin_TInvWL extends TInvWL_Admin_Base {
207
  "Parent theme URI":"' . ( ( $parent_theme ) ? $parent_theme->get( 'ThemeURI' ) : '' ) . '",
208
  "Parent theme author":"' . ( ( $parent_theme ) ? $parent_theme->get( 'Author' ) : '' ) . '",
209
  "Parent theme author URI":"' . ( ( $parent_theme ) ? $parent_theme->get( 'AuthorURI' ) : '' ) . '",
210
- };
211
- (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic("reattach_activator");ic("update",intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement("script");s.type="text/javascript";s.async=true;s.src="https://widget.intercom.io/widget/zyh6v0pc";var x=d.getElementsByTagName("script")[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent("onload",l);}else{w.addEventListener("load",l,false);}}})();
212
- Intercom("trackEvent", "wishlist-free-install", {
213
- theme_name:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Name' ) : $current_theme->get( 'Name' ) ) . '",
214
- theme_uri:"' . ( ( $parent_theme ) ? $parent_theme->get( 'ThemeURI' ) : $current_theme->get( 'ThemeURI' ) ) . '",
215
- theme_author:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Author' ) : $current_theme->get( 'Author' ) ) . '",
216
- theme_author_uri:"' . ( ( $parent_theme ) ? $parent_theme->get( 'AuthorURI' ) : $current_theme->get( 'AuthorURI' ) ) . '",
217
- theme_version:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Version' ) : $current_theme->get( 'Version' ) ) . '",
218
- website:"' . get_site_url() . '",
219
- user:"' . $user_info->user_email . '",
220
- user_name:"' . $user_info->user_nicename . '",
221
- plugin_name:"WooCommerce Wishlist Plugin",
222
- plugin_version:"' . TINVWL_FVERSION . '",
223
- partner:"' . TINVWL_UTM_SOURCE . '"
224
- });
225
- ' );
 
226
  }
227
 
228
  /**
186
  ) );
187
  wp_enqueue_script( $this->_name );
188
 
189
+ if ( ! tinv_get_option( 'chat', 'disabled' ) ) {
 
 
190
 
191
+ $user_id = get_current_user_id();
192
+ $user_info = get_userdata( $user_id );
193
+ $current_theme = wp_get_theme();
194
 
195
+ $parent_theme = $current_theme->parent();
196
+
197
+ wp_add_inline_script( $this->_name, 'window.intercomSettings = {
198
  app_id: "zyh6v0pc",
199
  "Website": "' . get_site_url() . '",
200
  "Plugin name": "WooCommerce Wishlist Plugin",
209
  "Parent theme URI":"' . ( ( $parent_theme ) ? $parent_theme->get( 'ThemeURI' ) : '' ) . '",
210
  "Parent theme author":"' . ( ( $parent_theme ) ? $parent_theme->get( 'Author' ) : '' ) . '",
211
  "Parent theme author URI":"' . ( ( $parent_theme ) ? $parent_theme->get( 'AuthorURI' ) : '' ) . '",
212
+ };
213
+ (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic("reattach_activator");ic("update",intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement("script");s.type="text/javascript";s.async=true;s.src="https://widget.intercom.io/widget/zyh6v0pc";var x=d.getElementsByTagName("script")[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent("onload",l);}else{w.addEventListener("load",l,false);}}})();
214
+ Intercom("trackEvent", "wishlist-free-install", {
215
+ theme_name:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Name' ) : $current_theme->get( 'Name' ) ) . '",
216
+ theme_uri:"' . ( ( $parent_theme ) ? $parent_theme->get( 'ThemeURI' ) : $current_theme->get( 'ThemeURI' ) ) . '",
217
+ theme_author:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Author' ) : $current_theme->get( 'Author' ) ) . '",
218
+ theme_author_uri:"' . ( ( $parent_theme ) ? $parent_theme->get( 'AuthorURI' ) : $current_theme->get( 'AuthorURI' ) ) . '",
219
+ theme_version:"' . ( ( $parent_theme ) ? $parent_theme->get( 'Version' ) : $current_theme->get( 'Version' ) ) . '",
220
+ website:"' . get_site_url() . '",
221
+ user:"' . $user_info->user_email . '",
222
+ user_name:"' . $user_info->user_nicename . '",
223
+ plugin_name:"WooCommerce Wishlist Plugin",
224
+ plugin_version:"' . TINVWL_FVERSION . '",
225
+ partner:"' . TINVWL_UTM_SOURCE . '"
226
+ });
227
+ ' );
228
+ }
229
  }
230
 
231
  /**
assets/css/admin-form.min.css CHANGED
@@ -1,14 +1,4 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
- * Copyright (c) 2018;
4
- * Licensed GPLv2+ */
5
-
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
  * Copyright (c) 2018;
14
  * Licensed GPLv2+ */
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
 
 
 
 
 
 
 
 
 
 
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
assets/css/admin-setup.min.css CHANGED
@@ -1,14 +1,4 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
- * Copyright (c) 2018;
4
- * Licensed GPLv2+ */
5
-
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
  * Copyright (c) 2018;
14
  * Licensed GPLv2+ */
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
 
 
 
 
 
 
 
 
 
 
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
assets/css/admin.min.css CHANGED
@@ -1,14 +1,4 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
- * Copyright (c) 2018;
4
- * Licensed GPLv2+ */
5
-
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
  * Copyright (c) 2018;
14
  * Licensed GPLv2+ */
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
 
 
 
 
 
 
 
 
 
 
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
assets/css/public.css CHANGED
@@ -248,7 +248,7 @@ a.wishlist_products_counter {
248
  text-decoration: none;
249
  }
250
 
251
- .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, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart:before {
252
  content: '\e909';
253
  display: inline-block;
254
  font-family: tinvwl-webfont !important;
@@ -265,7 +265,7 @@ a.wishlist_products_counter {
265
  margin-right: 5px;
266
  }
267
 
268
- .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, a.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart-plus:before {
269
  content: '\e906';
270
  display: inline-block;
271
  font-family: tinvwl-webfont !important;
@@ -289,7 +289,7 @@ a.wishlist_products_counter {
289
  vertical-align: sub;
290
  }
291
 
292
- a.wishlist_products_counter.top_wishlist-heart-plus.no-txt {
293
  position: relative;
294
  width: 36px;
295
  height: 36px;
@@ -312,19 +312,19 @@ a.wishlist_products_counter.top_wishlist-heart-plus.no-txt {
312
  content: '\e908';
313
  }
314
 
315
- .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 {
316
  content: '\e908';
317
  }
318
 
319
- .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 {
320
  content: '\e907';
321
  }
322
 
323
- .tinv-wishlist .tinvwl_add_to_wishlist_button.icon-white:before, a.wishlist_products_counter.top_wishlist-white:before {
324
  color: #FFF;
325
  }
326
 
327
- .tinv-wishlist .tinvwl_add_to_wishlist_button.icon-black:before, a.wishlist_products_counter.top_wishlist-black:before {
328
  color: #000;
329
  }
330
 
@@ -341,12 +341,12 @@ a.wishlist_products_counter.top_wishlist-heart-plus.no-txt {
341
  line-height: 1;
342
  }
343
 
344
- a.wishlist_products_counter.top_wishlist-custom.no-txt {
345
  padding: 10px 11px;
346
  line-height: 1;
347
  }
348
 
349
- .tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom img, a.wishlist_products_counter.top_wishlist-custom img {
350
  display: inline-block !important;
351
  vertical-align: baseline;
352
  width: auto !important;
@@ -356,7 +356,7 @@ a.wishlist_products_counter.top_wishlist-custom.no-txt {
356
  margin: 0 6px 0 0 !important;
357
  }
358
 
359
- .tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt img, a.wishlist_products_counter.top_wishlist-custom.no-txt img {
360
  margin-right: 0 !important;
361
  }
362
 
248
  text-decoration: none;
249
  }
250
 
251
+ .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 {
252
  content: '\e909';
253
  display: inline-block;
254
  font-family: tinvwl-webfont !important;
265
  margin-right: 5px;
266
  }
267
 
268
+ .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 {
269
  content: '\e906';
270
  display: inline-block;
271
  font-family: tinvwl-webfont !important;
289
  vertical-align: sub;
290
  }
291
 
292
+ a.wishlist_products_counter.top_wishlist-heart-plus.no-txt, span.wishlist_products_counter.top_wishlist-heart-plus.no-txt {
293
  position: relative;
294
  width: 36px;
295
  height: 36px;
312
  content: '\e908';
313
  }
314
 
315
+ .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 {
316
  content: '\e908';
317
  }
318
 
319
+ .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 {
320
  content: '\e907';
321
  }
322
 
323
+ .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 {
324
  color: #FFF;
325
  }
326
 
327
+ .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 {
328
  color: #000;
329
  }
330
 
341
  line-height: 1;
342
  }
343
 
344
+ a.wishlist_products_counter.top_wishlist-custom.no-txt, span.wishlist_products_counter.top_wishlist-custom.no-txt {
345
  padding: 10px 11px;
346
  line-height: 1;
347
  }
348
 
349
+ .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 {
350
  display: inline-block !important;
351
  vertical-align: baseline;
352
  width: auto !important;
356
  margin: 0 6px 0 0 !important;
357
  }
358
 
359
+ .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 {
360
  margin-right: 0 !important;
361
  }
362
 
assets/css/public.min.css CHANGED
@@ -1,16 +1,6 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
5
 
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
- * Copyright (c) 2018;
14
- * Licensed GPLv2+ */
15
-
16
- @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:400;font-style:normal}.ftinvwl{font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ftinvwl-twitter:before{content:"\f099"}.ftinvwl-facebook:before{content:"\f09a"}.ftinvwl-facebook-f:before{content:"\f09a"}.ftinvwl-google:before{content:"\f0d5"}.ftinvwl-email:before{content:"\f0e0"}.ftinvwl-pinterest:before{content:"\f231"}.ftinvwl-star:before{content:"\e912"}.ftinvwl-shopping-cart:before{content:"\e913"}.ftinvwl-magic:before{content:"\e914"}.ftinvwl-info:before{content:"\e915"}.ftinvwl-graduation-cap:before{content:"\e918"}.ftinvwl-floppy-o:before{content:"\e919"}.ftinvwl-eyedropper:before{content:"\e91a"}.ftinvwl-exclamation-triangle:before{content:"\e91b"}.ftinvwl-check:before{content:"\e91e"}.ftinvwl-arrow-left:before{content:"\e91f"}.ftinvwl-wrench:before{content:"\e920"}.ftinvwl-chevron-down:before{content:"\e900"}.ftinvwl-chevron-right:before{content:"\e901"}.ftinvwl-chevron-left:before{content:"\e902"}.ftinvwl-chevron-up:before{content:"\e903"}.ftinvwl-cancel:before{content:"\e904"}.ftinvwl-times:before{content:"\e905"}.ftinvwl-heart-plus:before{content:"\e906"}.ftinvwl-heart-mark-right:before{content:"\e907"}.ftinvwl-heart2:before{content:"\e908"}.ftinvwl-heart-o:before{content:"\e909"}.ftinvwl-heart-mark-left:before{content:"\e90a"}.ftinvwl-heart-mail:before{content:"\e90b"}.ftinvwl-heart-tinv:before{content:"\e90c"}.ftinvwl-key:before{content:"\e90d"}.ftinvwl-lock:before{content:"\e90e"}.ftinvwl-hearts:before{content:"\e90f"}.ftinvwl-user:before{content:"\e910"}@-webkit-keyframes ftinvwl-pulse{0%{-webkit-transform:scale(1.1);transform:scale(1.1)}50%{-webkit-transform:scale(.8);transform:scale(.8)}100%{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes ftinvwl-pulse{0%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}50%{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}100%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}}.ftinvwl-pulse.ftinvwl-animated::before{-webkit-animation:ftinvwl-pulse 2s linear infinite;animation:ftinvwl-pulse 2s linear infinite}.tinv-wishlist form,.tinv-wishlist p:last-child,.tinv-wishlist table{margin-bottom:0}.tinv-wishlist *{box-sizing:border-box}.tinvwl-wishlist :after,.tinvwl-wishlist :before{box-sizing:border-box}.tinv-wishlist select{width:140px}.tinv-wishlist ul{list-style:none;margin:0;padding:0}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt:before,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt:before{margin-top:-10px;margin-left:-10px}.woocommerce.tinv-wishlist #respond input#submit.alt,.woocommerce.tinv-wishlist a.button.alt,.woocommerce.tinv-wishlist button.button.alt,.woocommerce.tinv-wishlist input.button.alt{text-align:center}.tinv-wishlist .button i,.tinv-wishlist .navigation-button a i{margin-right:6px}.tinv-wishlist input[type=button] i,.tinv-wishlist input[type=reset] i,.tinv-wishlist input[type=submit] i{margin-right:6px}.tinv-wishlist a.tinv-close-modal i{margin-right:0}a.wishlist_products_counter{text-decoration:none}.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.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart:before,a.wishlist_products_counter.top_wishlist-heart:before{content:'\e909';display:inline-block;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;vertical-align:sub;margin-right:5px}.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.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart-plus:before,a.wishlist_products_counter.top_wishlist-heart-plus:before{content:'\e906';display:inline-block;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;vertical-align:sub;margin-right:5px}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt{position:relative;width:36px;height:36px;vertical-align:sub}a.wishlist_products_counter.top_wishlist-heart-plus.no-txt{position:relative;width:36px;height:36px;vertical-align:sub}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt:before,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt:before{position:absolute;top:50%;left:50%;margin-right:0}.tinv-wishlist .tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt,.tinv-wishlist .tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt{padding-left:1em;vertical-align:bottom}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before{content:'\e908'}.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{content:'\e908'}.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{content:'\e907'}.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-white:before,a.wishlist_products_counter.top_wishlist-white:before{color:#fff}.tinv-wishlist .tinvwl_add_to_wishlist_button.icon-black:before,a.wishlist_products_counter.top_wishlist-black:before{color:#000}.tinv-wishlist.tinvwl-before-add-to-cart .tinvwl_add_to_wishlist_button{margin-bottom:15px}.tinv-wishlist.tinvwl-after-add-to-cart .tinvwl_add_to_wishlist_button{margin-top:15px}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt{padding:10px 11px;line-height:1}a.wishlist_products_counter.top_wishlist-custom.no-txt{padding:10px 11px;line-height:1}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom img,a.wishlist_products_counter.top_wishlist-custom img{display:inline-block!important;vertical-align:baseline;width:auto!important;max-width:16px;max-height:16px;margin-bottom:0;margin:0 6px 0 0!important}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt img,a.wishlist_products_counter.top_wishlist-custom.no-txt img{margin-right:0!important}.single-product div.product form.cart .tinvwl-button.tinvwl_add_to_wishlist_button,div.product form.cart .tinvwl_add_to_wishlist_button{float:none}ul.products li.product .tinvwl_add_to_wishlist_button{margin-top:1em}.tinvwl_add_to_wishlist_button{display:inline-block;cursor:pointer}.tinv-wishlist.woocommerce .stock.in-stock:before{content:none}.tinv-wraper.tinv-wishlist{font-size:100%}.tinv-create-list li input[type=radio]{margin-right:10px}.tinv-create-list li+li{margin-top:15px}.tinv-create-list .tinvwl-input-group+ul{margin-top:25px}.tinv-search-list{margin-bottom:36px}.tinv-wishlist .tinv-header{margin-bottom:30px}.tinv-wishlist table{position:relative;table-layout:auto;margin-bottom:30px;z-index:2}.tinv-overlay{top:0;left:0;position:fixed;transition:opacity .3s ease,visibility .3s ease}.tinv-wishlist .tinv-modal{top:0;left:0;position:fixed;transition:opacity .3s ease,visibility .3s ease}.tinv-wishlist table.tinvwl-table-manage-list{margin-bottom:27px;width:100%}.tinv-wishlist table input[type=checkbox]{margin-right:0}.tinv-wishlist table td,.tinv-wishlist table th{padding:1em;vertical-align:middle}.tinv-wishlist .tinvwl-table-manage-list .product-cb{width:35px;text-align:center}.tinv-wishlist .tinvwl-table-manage-list .product-remove{width:46px;text-align:center}.tinv-wishlist .product-remove button{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;margin:0 auto;width:27px;height:27px;border-radius:50%;padding:0;box-shadow:none;border:none;background-color:#f7f7f7;color:#000;font-size:20px;padding-left:3px}.tinv-wishlist .product-thumbnail{min-width:100px;width:100px}.tinv-wishlist .product-thumbnail .wp-post-image{margin-bottom:0}.tinv-wishlist td.product-name a+.variation{margin-top:2px}.tinv-wishlist .product-stock i{margin-right:15px}.tinv-wishlist .product-stock p{display:table}.tinv-wishlist .product-stock span{display:table-cell;vertical-align:middle}.tinv-wishlist .product-action>.button>i,.tinv-wishlist .tinvwl-table-manage-list .product-action button[name=tinvwl-remove],.tinv-wishlist table thead th .tinvwl-mobile{display:none}.tinv-wishlist.woocommerce .product-quantity{width:80px;text-align:center}.tinv-wishlist.woocommerce table .quantity .qty{max-width:100%;width:62px;text-align:left}.tinv-wishlist .product-action{width:135px;text-align:center}.tinv-wishlist .product-action .button{width:100%}.tinv-wishlist .product-action .tinvwl_move_product_button{margin-top:5px}.tinv-wishlist .tinvwl-table-manage-list .product-action>button[name=tinvwl-remove]>i{margin-right:0}.tinv-wishlist .wishlist-cb{width:33px;text-align:center}.tinv-wishlist .wishlist-name .tinvwl-rename-input input{width:100%}.tinv-wishlist .wishlist-name .tinvwl-rename-button{float:right}.tinv-wishlist .wishlist-name .tinvwl-rename-button>i{margin-right:10px}.tinv-wishlist .wishlist-privacy,.tinv-wishlist table:not(.tinvwl-public) .wishlist-date{width:18%}.tinv-wishlist .wishlist-privacy select{width:100%}.tinv-wishlist .wishlist-name{width:45%}.tinv-wishlist .wishlist-action{width:120px;text-align:center}.tinv-wishlist .wishlist-action button[value=manage_remove]>i{display:none;margin-right:0}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list{display:inline-block;vertical-align:middle}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list>a.button{margin-right:0}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:-10px}.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){float:left;width:35%;margin-right:2%}.tinv-wishlist tfoot .tinvwl-to-right{float:left;width:63%;text-align:right}.tinv-wishlist tfoot .tinvwl-to-right>*{margin:10px 0 0;vertical-align:middle}.tinv-wishlist tfoot .tinvwl-to-right>*+*{margin-left:10px}.tinv-wishlist tfoot .tinvwl-to-left:empty+.tinvwl-to-right{width:100%}.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:16px}.tinv-wishlist .navigation-button{margin-top:-10px}.tinv-wishlist .navigation-button>li{float:left}.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{margin-right:30px;margin-top:10px;display:inline-block}.tinv-wishlist .navigation-button>li>.tinv-create-list>a.button,.tinv-wishlist .navigation-button>li>a.button{margin-right:10px}.tinv-wishlist .navigation-button>li:last-child>.tinv-create-list>a,.tinv-wishlist .navigation-button>li:last-child>a{margin-right:0}.tinv-wishlist .social-buttons{float:right}.tinv-wishlist .social-buttons>span,.tinv-wishlist .social-buttons>ul{display:inline-block;vertical-align:middle}.tinv-wishlist .social-buttons>span{margin-right:27px}.tinv-wishlist .social-buttons li{float:left;margin-right:5px;list-style:none}.tinv-wishlist .social-buttons li:last-child{margin-right:0}.tinv-wishlist .social-buttons li a{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:2em;height:2em;border-radius:50%;text-align:center;box-shadow:none;border:0;font-size:20px}.tinv-wishlist .social-buttons li a.white{color:#fff}.tinv-wishlist .social-buttons li a.dark{color:#000}.tinv-wishlist .social-buttons li a i{line-height:2em}.tinv-wishlist .navigation-button .tinv-create-list>a.tinvwl-no-icon>i,.tinv-wishlist .navigation-button li>a.tinvwl-no-icon>i{display:none}.tinv-wishlist .tinv-lists-nav{margin-bottom:35px}.tinv-wishlist .tinv-next{display:inline-block;float:left}.tinv-wishlist .tinv-prev{display:inline-block;float:left;margin-right:35px!important}.tinv-wishlist .tinv-prev i{margin-left:0;margin-right:18px}.tinv-wishlist .tinv-next i{margin-left:18px;margin-right:0}@media only screen and (max-width:1024px){.tinv-wishlist .tinvwl-table-manage-lists:not(.tinvwl-public){margin-top:0}.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:none}.tinv-wishlist .tinvwl-table-manage-list .product-action button[name=tinvwl-remove]{display:inline-block;margin-top:5px}.tinv-wishlist .product-action{width:60px}}@media only screen and (max-width:1024px) and (min-width:641px){.tinv-wishlist .tinvwl-table-manage-list td.product-stock p{display:block;text-align:center}.tinv-wishlist .product-stock span{display:block}.tinv-wishlist .tinvwl-table-manage-list td.product-stock i{margin-right:0}.tinv-wishlist .tinvwl-table-manage-list td.product-stock .tinvwl-txt{display:none}.tinv-wishlist .product-thumbnail{max-width:76px;width:76px}.tinv-wishlist .product-action .button>i{display:inline-block;margin-right:0}.tinv-wishlist .product-action .button .tinvwl-txt{display:none}}@media only screen and (max-width:640px){.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove,.tinv-wishlist table.tinvwl-table-manage-list thead th:not(.product-name){display:none}.tinv-wishlist table.tinvwl-table-manage-lists thead th:not(.wishlist-name){display:none}.tinv-wishlist thead th .tinvwl-full{display:none}.tinv-wishlist table.tinvwl-table-manage-list thead th.product-name,.tinv-wishlist table.tinvwl-table-manage-lists thead th.wishlist-name{display:block;width:100%;text-align:center}.tinv-wishlist table thead th .tinvwl-mobile{display:block}.tinv-wishlist table.tinvwl-table-manage-list tbody td{display:block;width:100%!important;text-align:center}.tinv-wishlist table.tinvwl-table-manage-lists tbody td,.tinv-wishlist table.tinvwl-table-manage-lists.tinvwl-public tbody td{display:block;width:100%!important;text-align:center}.tinv-wishlist table.tinvwl-table-manage-list tbody td:not(:last-child){border-bottom:0}.tinv-wishlist table.tinvwl-table-manage-lists tbody td:not(:last-child),.tinv-wishlist table.tinvwl-table-manage-lists.tinvwl-public tbody td:not(:last-child){border-bottom:0}.tinv-wishlist .product-stock p{margin:0 auto}.tinv-wishlist .product-thumbnail img{margin:0 auto;max-width:80px}.tinv-wishlist.woocommerce table .quantity .qty{text-align:center;width:100%}.tinv-wishlist .product-action .tinvwl_move_product_button{margin-top:10px}.tinv-wishlist table.tinvwl-table-manage-list tfoot td{display:block;width:100%}.tinv-wishlist table.tinvwl-table-manage-lists .wishlist-action button[value=manage_remove]{width:100%}.tinv-wishlist table.tinvwl-table-manage-lists .wishlist-name .tinvwl-rename-button{float:none}}@media only screen and (max-width:1024px){.tinv-wishlist .wishlist-name .tinvwl-rename-button>i,.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){margin-right:0}.tinv-wishlist .wishlist-name .tinvwl-rename-button span{display:none}.tinv-wishlist .wishlist-action{width:60px}.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){float:none;width:auto}.tinv-wishlist tfoot .tinvwl-to-right{float:none;width:auto;text-align:left}}@media only screen and (max-width:1024px) and (min-width:641px){.tinv-wishlist .wishlist-action button[value=manage_remove] span{display:none}.tinv-wishlist .wishlist-action button[value=manage_remove]>i{display:inline-block}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:0}}@media only screen and (max-width:640px){.tinv-wishlist button[value=manage_apply] .tinvwl-mobile,.tinv-wishlist button[value=product_apply] .tinvwl-mobile{display:none}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list{display:block}.tinv-wishlist .tinvwl-table-manage-list tfoot .tinvwl-to-right .button,.tinv-wishlist .tinvwl-table-manage-list tfoot .tinvwl-to-right button{width:100%;margin:10px 0 0}.tinv-wishlist .tinvwl-table-manage-lists tfoot .tinvwl-to-right .button,.tinv-wishlist .tinvwl-table-manage-lists tfoot .tinvwl-to-right button{width:100%;margin:10px 0 0}.tinv-wishlist tfoot .tinvwl-to-right>*{margin:10px 0 0}.tinv-wishlist tfoot .tinvwl-to-right .button:first-child,.tinv-wishlist tfoot .tinvwl-to-right button:first-child{margin-top:0!important}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:20px}}@media only screen and (max-width:1024px){.tinv-wishlist .social-buttons{float:none;width:auto;text-align:left;margin-top:20px}.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:30px}.tinv-wishlist .tinv-login form input[name=login]{min-width:auto}}@media only screen and (max-width:640px){.tinv-wishlist .social-buttons{text-align:center}.tinv-wishlist .navigation-button>li{width:20%;text-align:center}.tinv-wishlist .navigation-button.tinvwl-btns-count-1>li{width:100%}.tinv-wishlist .navigation-button.tinvwl-btns-count-2>li{width:50%}.tinv-wishlist .navigation-button.tinvwl-btns-count-3>li{width:33%}.tinv-wishlist .navigation-button.tinvwl-btns-count-4>li{width:25%}.tinv-wishlist .navigation-button>li+li{width:20%}.tinv-wishlist .navigation-button.tinvwl-btns-count-1>li+li{width:100%}.tinv-wishlist .navigation-button.tinvwl-btns-count-2>li+li{width:50%}.tinv-wishlist .navigation-button.tinvwl-btns-count-3>li+li{width:33%}.tinv-wishlist .navigation-button.tinvwl-btns-count-4>li+li{width:25%}.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{width:calc(100% - 10px);margin-right:0}.tinv-wishlist .navigation-button .tinv-create-list>a .tinvwl-txt,.tinv-wishlist .navigation-button li>a .tinvwl-txt{display:none}.tinv-wishlist .navigation-button .tinv-create-list>a>i,.tinv-wishlist .navigation-button li>a>i{display:inline-block!important;margin-right:0}.tinv-wishlist .social-buttons>span{display:block;margin-top:0;margin-right:0;margin-bottom:5px}}@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%}.tinv-wishlist.woocommerce .tinv-login form .form-row-first{padding:0}.tinv-wishlist.woocommerce .tinv-login form .form-row-last{padding:0;margin-top:10px}.tinv-wishlist.woocommerce .tinv-login form .tinvwl-input-group-btn{display:block;padding:0;width:auto;margin-top:10px}}.tinv-overlay{width:100%;height:100%;visibility:hidden;opacity:0;background:#191919}.tinv-modal.tinv-modal-open .tinv-overlay{visibility:visible;opacity:.5}.admin-bar .tinv-wishlist .tinv-modal{padding-top:32px!important}.tinv-wishlist .tinv-modal{overflow-y:auto;overflow-x:hidden;width:0;height:0;z-index:9999;outline:0!important;-webkit-backface-visibility:hidden;visibility:hidden;opacity:0;text-align:left}.tinv-wishlist .tinv-modal .tinv-modal-inner{position:relative;margin:0 auto;background-color:#fff;max-width:360px;padding:40px}.tinv-wishlist .tinv-modal.tinv-modal-open{visibility:visible;opacity:1;width:100%;height:100%}.tinv-wishlist .tinv-modal .tinv-close-modal{display:inline-block;position:absolute;top:17px;right:14px;width:26px;height:26px;line-height:26px;font-size:12px;text-align:center;border-radius:50%;border-bottom:0;box-shadow:none!important;background-color:#ebe9eb}.tinv-wishlist .tinv-modal .icon_big_heart_check,.tinv-wishlist .tinv-modal .icon_big_times,.tinv-wishlist .tinv-modal img{display:block;margin:0 auto;margin-bottom:25px;opacity:1!important}.tinv-wishlist .tinv-modal ul{overflow:visible;list-style:disc;margin:10px 0 0 20px}.tinv-wishlist .tinv-modal li{list-style:disc!important}.tinv-wishlist .tinv-create-list .tinv-modal ul,.tinv-wishlist.tinv-create-list form ul{list-style:none!important;margin:25px 0 0}.tinv-wishlist .tinv-create-list .tinv-modal li,.tinv-wishlist.tinv-create-list form li{list-style:none!important}.tinv-wishlist .tinv-modal .already-in{margin-bottom:35px}.tinv-wishlist .tinv-modal .delete-notification{margin-bottom:25px}.tinv-wishlist .tinv-modal .already-in ul{overflow:visible;margin:12px 0 27px 17px}.tinv-wishlist .tinv-modal select{width:100%}.tinv-wishlist .tinv-modal button+.button,.tinv-wishlist .tinv-modal button+button{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal input+button{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal label+button,.tinv-wishlist .tinv-modal label+input{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal select+button,.tinv-wishlist .tinv-modal select+input{margin-top:12px;width:100%}@media screen and (max-width:782px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:46px!important}}@media screen and (max-width:600px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:0!important}.tinv-wishlist .tinv-modal .tinv-close-modal{position:static;display:block;margin:0 auto 20px}}.tinv-wishlist .tinv-modal .already-in+label{display:block;margin-top:6px}.tinv-wishlist .tinv-modal label select{margin-top:8px}.tinv-wishlist .tinv-modal .delete-notification+button{width:100%}.tinv-wishlist .tinvwl_added_to_wishlist,.tinv-wishlist .tinvwl_created_wishlist{text-align:center}.tinv-wishlist .tinvwl_added_to_wishlist .tinv-txt{margin-bottom:25px}.tinv-wishlist .tinvwl_created_wishlist .tinv-txt{margin-bottom:25px}.tinv-wishlist .tinvwl_created_wishlist button{margin-top:0;margin-bottom:10px}.woocommerce .tinv-wishlist .tinvwl_added_to_wishlist.tinv-modal button.button{margin-top:0;margin-bottom:10px}.tinv-wishlist .tinv-modal .tinvwl-buttons-group{margin-top:20px}.tinv-wishlist .tinvwl-buttons-group button{width:100%}.tinv-wishlist .tinvwl-buttons-group button+button{margin-top:7px}.tinv-wishlist .tinvwl-buttons-group button i{position:relative}.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-heart-o,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-key,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-times{font-size:20px}.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-heart-o::before,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-key::before,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-times::before{position:relative;top:3px}.tinv-wishlist .tinvwl-buttons-group+button{width:100%;margin-top:7px}.tinv-wishlist .tinv-modal h2{text-align:center;margin:0 0 35px}.tinv-wishlist .tinv-create-list .tinv-modal-inner{max-width:778px;padding:30px}.tinv-wishlist .tinvwl-has-error:not(.tinvwl-input-group),.tinv-wishlist .tinvwl-input-group.tinvwl-has-error .form-control{border:2px solid red}.tinv-wishlist .tinvwl-has-error+.tinvwl-error{padding:5px 0 0 5px;color:red}@media only screen and (max-width:640px){.navigation-button,.social-buttons,.tinv-lists-nav{margin-left:12px;margin-right:12px}}.tinvwl-tooltip{display:none}.tinvwl-input-group{position:relative;display:table;border-collapse:separate}.tinvwl-input-group .form-control{position:relative;z-index:1;float:left;height:38px;width:100%;margin-bottom:0}.tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:15px}.tinv-wishlist .tinvwl-to-left .tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:10px}.tinv-wishlist .tinv-search-form .tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:9px}.tinvwl-input-group .form-control,.tinvwl-input-group-addon,.tinvwl-input-group-btn{display:table-cell}.tinvwl-input-group-addon,.tinvwl-input-group-btn{width:1%;white-space:nowrap;vertical-align:top}@media only screen and (max-width:640px){.tinvwl-input-group{width:100%}}@media only screen and (max-width:667px){.tinvwl-input-group:not(.tinvwl-no-full){display:block}.tinvwl-input-group:not(.tinvwl-no-full) .form-control,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn{display:block}.tinvwl-input-group:not(.tinvwl-no-full) .form-control{float:none}.tinv-wishlist .tinv-search-form .tinvwl-input-group:not(.tinvwl-no-full) .form-control+.tinvwl-input-group-btn{padding-top:10px;padding-left:0}.tinvwl-input-group:not(.tinvwl-no-full) .form-control+.tinvwl-input-group-btn{padding-top:10px;padding-left:0}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon>button,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon>input{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn>button,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn>input{width:100%}}.tinv-table{display:table;width:100%;height:100%}.tinv-cell{display:table-cell;vertical-align:middle}.tinv-wishlist-clear:after,.tinv-wishlist-clear:before{content:" ";display:table}.tinv-wishlist .tinv-wishlist-clear{visibility:visible;width:auto;height:auto}.tinv-wishlist-clear:after{clear:both}.icon_big_heart_check{display:inline-block;width:46px;height:46px;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:60px}.icon_big_times{display:inline-block;width:46px;height:46px;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:60px}.icon_big_times::before{content:"\e904";top:-7px;left:-7px;position:relative}.icon_big_heart_check::before{content:"\e90a";top:-7px;left:-7px;position:relative}.tinvwl_add_to_wishlist_button.disabled-add-wishlist,.tinvwl_add_to_wishlist_button.tinvwl-button.disabled-add-wishlist{opacity:.5!important;cursor:not-allowed}.empty-name-wishlist{border-color:red!important}.tinvwl_remove_from_wishlist-text{display:none}.tinvwl-product-in-list.tinvwl-product-make-remove .tinvwl_remove_from_wishlist-text{display:inline}.tinvwl-product-in-list.tinvwl-product-make-remove .tinvwl_add_to_wishlist-text{display:none}@media only screen and (max-width:1024px){.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:table-cell}}@media only screen and (max-width:640px){.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove{display:block}}
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
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:400;font-style:normal}.ftinvwl{font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ftinvwl-twitter:before{content:"\f099"}.ftinvwl-facebook:before{content:"\f09a"}.ftinvwl-facebook-f:before{content:"\f09a"}.ftinvwl-google:before{content:"\f0d5"}.ftinvwl-email:before{content:"\f0e0"}.ftinvwl-pinterest:before{content:"\f231"}.ftinvwl-star:before{content:"\e912"}.ftinvwl-shopping-cart:before{content:"\e913"}.ftinvwl-magic:before{content:"\e914"}.ftinvwl-info:before{content:"\e915"}.ftinvwl-graduation-cap:before{content:"\e918"}.ftinvwl-floppy-o:before{content:"\e919"}.ftinvwl-eyedropper:before{content:"\e91a"}.ftinvwl-exclamation-triangle:before{content:"\e91b"}.ftinvwl-check:before{content:"\e91e"}.ftinvwl-arrow-left:before{content:"\e91f"}.ftinvwl-wrench:before{content:"\e920"}.ftinvwl-chevron-down:before{content:"\e900"}.ftinvwl-chevron-right:before{content:"\e901"}.ftinvwl-chevron-left:before{content:"\e902"}.ftinvwl-chevron-up:before{content:"\e903"}.ftinvwl-cancel:before{content:"\e904"}.ftinvwl-times:before{content:"\e905"}.ftinvwl-heart-plus:before{content:"\e906"}.ftinvwl-heart-mark-right:before{content:"\e907"}.ftinvwl-heart2:before{content:"\e908"}.ftinvwl-heart-o:before{content:"\e909"}.ftinvwl-heart-mark-left:before{content:"\e90a"}.ftinvwl-heart-mail:before{content:"\e90b"}.ftinvwl-heart-tinv:before{content:"\e90c"}.ftinvwl-key:before{content:"\e90d"}.ftinvwl-lock:before{content:"\e90e"}.ftinvwl-hearts:before{content:"\e90f"}.ftinvwl-user:before{content:"\e910"}@-webkit-keyframes ftinvwl-pulse{0%{-webkit-transform:scale(1.1);transform:scale(1.1)}50%{-webkit-transform:scale(.8);transform:scale(.8)}100%{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes ftinvwl-pulse{0%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}50%{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}100%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}}.ftinvwl-pulse.ftinvwl-animated::before{-webkit-animation:ftinvwl-pulse 2s linear infinite;animation:ftinvwl-pulse 2s linear infinite}.tinv-wishlist form,.tinv-wishlist p:last-child,.tinv-wishlist table{margin-bottom:0}.tinv-wishlist *{box-sizing:border-box}.tinvwl-wishlist :after,.tinvwl-wishlist :before{box-sizing:border-box}.tinv-wishlist select{width:140px}.tinv-wishlist ul{list-style:none;margin:0;padding:0}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt:before,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt:before{margin-top:-10px;margin-left:-10px}.woocommerce.tinv-wishlist #respond input#submit.alt,.woocommerce.tinv-wishlist a.button.alt,.woocommerce.tinv-wishlist button.button.alt,.woocommerce.tinv-wishlist input.button.alt{text-align:center}.tinv-wishlist .button i,.tinv-wishlist .navigation-button a i{margin-right:6px}.tinv-wishlist input[type=button] i,.tinv-wishlist input[type=reset] i,.tinv-wishlist input[type=submit] i{margin-right:6px}.tinv-wishlist a.tinv-close-modal i{margin-right:0}a.wishlist_products_counter{text-decoration:none}.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.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart:before,a.wishlist_products_counter.top_wishlist-heart:before,span.wishlist_products_counter.top_wishlist-heart:before{content:'\e909';display:inline-block;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;vertical-align:sub;margin-right:5px}.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.sidr-class-wishlist_products_counter.sidr-class-top_wishlist-heart-plus:before,a.wishlist_products_counter.top_wishlist-heart-plus:before,span.wishlist_products_counter.top_wishlist-heart-plus:before{content:'\e906';display:inline-block;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:20px;vertical-align:sub;margin-right:5px}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt{position:relative;width:36px;height:36px;vertical-align:sub}a.wishlist_products_counter.top_wishlist-heart-plus.no-txt,span.wishlist_products_counter.top_wishlist-heart-plus.no-txt{position:relative;width:36px;height:36px;vertical-align:sub}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt:before,.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt:before{position:absolute;top:50%;left:50%;margin-right:0}.tinv-wishlist .tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart-plus.no-txt,.tinv-wishlist .tinvwl-button.tinvwl_add_to_wishlist_button.tinvwl-icon-heart.no-txt{padding-left:1em;vertical-align:bottom}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-heart.tinvwl-product-in-list:before{content:'\e908'}.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{content:'\e908'}.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{content:'\e907'}.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{color:#fff}.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{color:#000}.tinv-wishlist.tinvwl-before-add-to-cart .tinvwl_add_to_wishlist_button{margin-bottom:15px}.tinv-wishlist.tinvwl-after-add-to-cart .tinvwl_add_to_wishlist_button{margin-top:15px}.tinv-wishlist .tinvwl_add_to_wishlist_button.tinvwl-icon-custom.no-txt{padding:10px 11px;line-height:1}a.wishlist_products_counter.top_wishlist-custom.no-txt,span.wishlist_products_counter.top_wishlist-custom.no-txt{padding:10px 11px;line-height:1}.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{display:inline-block!important;vertical-align:baseline;width:auto!important;max-width:16px;max-height:16px;margin-bottom:0;margin:0 6px 0 0!important}.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{margin-right:0!important}.single-product div.product form.cart .tinvwl-button.tinvwl_add_to_wishlist_button,div.product form.cart .tinvwl_add_to_wishlist_button{float:none}ul.products li.product .tinvwl_add_to_wishlist_button{margin-top:1em}.tinvwl_add_to_wishlist_button{display:inline-block;cursor:pointer}.tinv-wishlist.woocommerce .stock.in-stock:before{content:none}.tinv-wraper.tinv-wishlist{font-size:100%}.tinv-create-list li input[type=radio]{margin-right:10px}.tinv-create-list li+li{margin-top:15px}.tinv-create-list .tinvwl-input-group+ul{margin-top:25px}.tinv-search-list{margin-bottom:36px}.tinv-wishlist .tinv-header{margin-bottom:30px}.tinv-wishlist table{position:relative;table-layout:auto;margin-bottom:30px;z-index:2}.tinv-overlay{top:0;left:0;position:fixed;transition:opacity .3s ease,visibility .3s ease}.tinv-wishlist .tinv-modal{top:0;left:0;position:fixed;transition:opacity .3s ease,visibility .3s ease}.tinv-wishlist table.tinvwl-table-manage-list{margin-bottom:27px;width:100%}.tinv-wishlist table input[type=checkbox]{margin-right:0}.tinv-wishlist table td,.tinv-wishlist table th{padding:1em;vertical-align:middle}.tinv-wishlist .tinvwl-table-manage-list .product-cb{width:35px;text-align:center}.tinv-wishlist .tinvwl-table-manage-list .product-remove{width:46px;text-align:center}.tinv-wishlist .product-remove button{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;margin:0 auto;width:27px;height:27px;border-radius:50%;padding:0;box-shadow:none;border:none;background-color:#f7f7f7;color:#000;font-size:20px;padding-left:3px}.tinv-wishlist .product-thumbnail{min-width:100px;width:100px}.tinv-wishlist .product-thumbnail .wp-post-image{margin-bottom:0}.tinv-wishlist td.product-name a+.variation{margin-top:2px}.tinv-wishlist .product-stock i{margin-right:15px}.tinv-wishlist .product-stock p{display:table}.tinv-wishlist .product-stock span{display:table-cell;vertical-align:middle}.tinv-wishlist .product-action>.button>i,.tinv-wishlist .tinvwl-table-manage-list .product-action button[name=tinvwl-remove],.tinv-wishlist table thead th .tinvwl-mobile{display:none}.tinv-wishlist.woocommerce .product-quantity{width:80px;text-align:center}.tinv-wishlist.woocommerce table .quantity .qty{max-width:100%;width:62px;text-align:left}.tinv-wishlist .product-action{width:135px;text-align:center}.tinv-wishlist .product-action .button{width:100%}.tinv-wishlist .product-action .tinvwl_move_product_button{margin-top:5px}.tinv-wishlist .tinvwl-table-manage-list .product-action>button[name=tinvwl-remove]>i{margin-right:0}.tinv-wishlist .wishlist-cb{width:33px;text-align:center}.tinv-wishlist .wishlist-name .tinvwl-rename-input input{width:100%}.tinv-wishlist .wishlist-name .tinvwl-rename-button{float:right}.tinv-wishlist .wishlist-name .tinvwl-rename-button>i{margin-right:10px}.tinv-wishlist .wishlist-privacy,.tinv-wishlist table:not(.tinvwl-public) .wishlist-date{width:18%}.tinv-wishlist .wishlist-privacy select{width:100%}.tinv-wishlist .wishlist-name{width:45%}.tinv-wishlist .wishlist-action{width:120px;text-align:center}.tinv-wishlist .wishlist-action button[value=manage_remove]>i{display:none;margin-right:0}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list{display:inline-block;vertical-align:middle}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list>a.button{margin-right:0}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:-10px}.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){float:left;width:35%;margin-right:2%}.tinv-wishlist tfoot .tinvwl-to-right{float:left;width:63%;text-align:right}.tinv-wishlist tfoot .tinvwl-to-right>*{margin:10px 0 0;vertical-align:middle}.tinv-wishlist tfoot .tinvwl-to-right>*+*{margin-left:10px}.tinv-wishlist tfoot .tinvwl-to-left:empty+.tinvwl-to-right{width:100%}.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:16px}.tinv-wishlist .navigation-button{margin-top:-10px}.tinv-wishlist .navigation-button>li{float:left}.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{margin-right:30px;margin-top:10px;display:inline-block}.tinv-wishlist .navigation-button>li>.tinv-create-list>a.button,.tinv-wishlist .navigation-button>li>a.button{margin-right:10px}.tinv-wishlist .navigation-button>li:last-child>.tinv-create-list>a,.tinv-wishlist .navigation-button>li:last-child>a{margin-right:0}.tinv-wishlist .social-buttons{float:right}.tinv-wishlist .social-buttons>span,.tinv-wishlist .social-buttons>ul{display:inline-block;vertical-align:middle}.tinv-wishlist .social-buttons>span{margin-right:27px}.tinv-wishlist .social-buttons li{float:left;margin-right:5px;list-style:none}.tinv-wishlist .social-buttons li:last-child{margin-right:0}.tinv-wishlist .social-buttons li a{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:2em;height:2em;border-radius:50%;text-align:center;box-shadow:none;border:0;font-size:20px}.tinv-wishlist .social-buttons li a.white{color:#fff}.tinv-wishlist .social-buttons li a.dark{color:#000}.tinv-wishlist .social-buttons li a i{line-height:2em}.tinv-wishlist .navigation-button .tinv-create-list>a.tinvwl-no-icon>i,.tinv-wishlist .navigation-button li>a.tinvwl-no-icon>i{display:none}.tinv-wishlist .tinv-lists-nav{margin-bottom:35px}.tinv-wishlist .tinv-next{display:inline-block;float:left}.tinv-wishlist .tinv-prev{display:inline-block;float:left;margin-right:35px!important}.tinv-wishlist .tinv-prev i{margin-left:0;margin-right:18px}.tinv-wishlist .tinv-next i{margin-left:18px;margin-right:0}@media only screen and (max-width:1024px){.tinv-wishlist .tinvwl-table-manage-lists:not(.tinvwl-public){margin-top:0}.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:none}.tinv-wishlist .tinvwl-table-manage-list .product-action button[name=tinvwl-remove]{display:inline-block;margin-top:5px}.tinv-wishlist .product-action{width:60px}}@media only screen and (max-width:1024px) and (min-width:641px){.tinv-wishlist .tinvwl-table-manage-list td.product-stock p{display:block;text-align:center}.tinv-wishlist .product-stock span{display:block}.tinv-wishlist .tinvwl-table-manage-list td.product-stock i{margin-right:0}.tinv-wishlist .tinvwl-table-manage-list td.product-stock .tinvwl-txt{display:none}.tinv-wishlist .product-thumbnail{max-width:76px;width:76px}.tinv-wishlist .product-action .button>i{display:inline-block;margin-right:0}.tinv-wishlist .product-action .button .tinvwl-txt{display:none}}@media only screen and (max-width:640px){.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove,.tinv-wishlist table.tinvwl-table-manage-list thead th:not(.product-name){display:none}.tinv-wishlist table.tinvwl-table-manage-lists thead th:not(.wishlist-name){display:none}.tinv-wishlist thead th .tinvwl-full{display:none}.tinv-wishlist table.tinvwl-table-manage-list thead th.product-name,.tinv-wishlist table.tinvwl-table-manage-lists thead th.wishlist-name{display:block;width:100%;text-align:center}.tinv-wishlist table thead th .tinvwl-mobile{display:block}.tinv-wishlist table.tinvwl-table-manage-list tbody td{display:block;width:100%!important;text-align:center}.tinv-wishlist table.tinvwl-table-manage-lists tbody td,.tinv-wishlist table.tinvwl-table-manage-lists.tinvwl-public tbody td{display:block;width:100%!important;text-align:center}.tinv-wishlist table.tinvwl-table-manage-list tbody td:not(:last-child){border-bottom:0}.tinv-wishlist table.tinvwl-table-manage-lists tbody td:not(:last-child),.tinv-wishlist table.tinvwl-table-manage-lists.tinvwl-public tbody td:not(:last-child){border-bottom:0}.tinv-wishlist .product-stock p{margin:0 auto}.tinv-wishlist .product-thumbnail img{margin:0 auto;max-width:80px}.tinv-wishlist.woocommerce table .quantity .qty{text-align:center;width:100%}.tinv-wishlist .product-action .tinvwl_move_product_button{margin-top:10px}.tinv-wishlist table.tinvwl-table-manage-list tfoot td{display:block;width:100%}.tinv-wishlist table.tinvwl-table-manage-lists .wishlist-action button[value=manage_remove]{width:100%}.tinv-wishlist table.tinvwl-table-manage-lists .wishlist-name .tinvwl-rename-button{float:none}}@media only screen and (max-width:1024px){.tinv-wishlist .wishlist-name .tinvwl-rename-button>i,.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){margin-right:0}.tinv-wishlist .wishlist-name .tinvwl-rename-button span{display:none}.tinv-wishlist .wishlist-action{width:60px}.tinv-wishlist tfoot .tinvwl-to-left:not(:empty){float:none;width:auto}.tinv-wishlist tfoot .tinvwl-to-right{float:none;width:auto;text-align:left}}@media only screen and (max-width:1024px) and (min-width:641px){.tinv-wishlist .wishlist-action button[value=manage_remove] span{display:none}.tinv-wishlist .wishlist-action button[value=manage_remove]>i{display:inline-block}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:0}}@media only screen and (max-width:640px){.tinv-wishlist button[value=manage_apply] .tinvwl-mobile,.tinv-wishlist button[value=product_apply] .tinvwl-mobile{display:none}.tinv-wishlist tfoot .tinvwl-to-right .tinv-create-list{display:block}.tinv-wishlist .tinvwl-table-manage-list tfoot .tinvwl-to-right .button,.tinv-wishlist .tinvwl-table-manage-list tfoot .tinvwl-to-right button{width:100%;margin:10px 0 0}.tinv-wishlist .tinvwl-table-manage-lists tfoot .tinvwl-to-right .button,.tinv-wishlist .tinvwl-table-manage-lists tfoot .tinvwl-to-right button{width:100%;margin:10px 0 0}.tinv-wishlist tfoot .tinvwl-to-right>*{margin:10px 0 0}.tinv-wishlist tfoot .tinvwl-to-right .button:first-child,.tinv-wishlist tfoot .tinvwl-to-right button:first-child{margin-top:0!important}.tinv-wishlist tfoot .tinvwl-to-left+.tinvwl-to-right{margin-top:20px}}@media only screen and (max-width:1024px){.tinv-wishlist .social-buttons{float:none;width:auto;text-align:left;margin-top:20px}.tinv-wishlist .social-buttons+.tinv-wishlist-clear+.navigation-button{margin-top:30px}.tinv-wishlist .tinv-login form input[name=login]{min-width:auto}}@media only screen and (max-width:640px){.tinv-wishlist .social-buttons{text-align:center}.tinv-wishlist .navigation-button>li{width:20%;text-align:center}.tinv-wishlist .navigation-button.tinvwl-btns-count-1>li{width:100%}.tinv-wishlist .navigation-button.tinvwl-btns-count-2>li{width:50%}.tinv-wishlist .navigation-button.tinvwl-btns-count-3>li{width:33%}.tinv-wishlist .navigation-button.tinvwl-btns-count-4>li{width:25%}.tinv-wishlist .navigation-button>li+li{width:20%}.tinv-wishlist .navigation-button.tinvwl-btns-count-1>li+li{width:100%}.tinv-wishlist .navigation-button.tinvwl-btns-count-2>li+li{width:50%}.tinv-wishlist .navigation-button.tinvwl-btns-count-3>li+li{width:33%}.tinv-wishlist .navigation-button.tinvwl-btns-count-4>li+li{width:25%}.tinv-wishlist .navigation-button>li>.tinv-create-list>a,.tinv-wishlist .navigation-button>li>a{width:calc(100% - 10px);margin-right:0}.tinv-wishlist .navigation-button .tinv-create-list>a .tinvwl-txt,.tinv-wishlist .navigation-button li>a .tinvwl-txt{display:none}.tinv-wishlist .navigation-button .tinv-create-list>a>i,.tinv-wishlist .navigation-button li>a>i{display:inline-block!important;margin-right:0}.tinv-wishlist .social-buttons>span{display:block;margin-top:0;margin-right:0;margin-bottom:5px}}@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%}.tinv-wishlist.woocommerce .tinv-login form .form-row-first{padding:0}.tinv-wishlist.woocommerce .tinv-login form .form-row-last{padding:0;margin-top:10px}.tinv-wishlist.woocommerce .tinv-login form .tinvwl-input-group-btn{display:block;padding:0;width:auto;margin-top:10px}}.tinv-overlay{width:100%;height:100%;visibility:hidden;opacity:0;background:#191919}.tinv-modal.tinv-modal-open .tinv-overlay{visibility:visible;opacity:.5}.admin-bar .tinv-wishlist .tinv-modal{padding-top:32px!important}.tinv-wishlist .tinv-modal{overflow-y:auto;overflow-x:hidden;width:0;height:0;z-index:9999;outline:0!important;-webkit-backface-visibility:hidden;visibility:hidden;opacity:0;text-align:left}.tinv-wishlist .tinv-modal .tinv-modal-inner{position:relative;margin:0 auto;background-color:#fff;max-width:360px;padding:40px}.tinv-wishlist .tinv-modal.tinv-modal-open{visibility:visible;opacity:1;width:100%;height:100%}.tinv-wishlist .tinv-modal .tinv-close-modal{display:inline-block;position:absolute;top:17px;right:14px;width:26px;height:26px;line-height:26px;font-size:12px;text-align:center;border-radius:50%;border-bottom:0;box-shadow:none!important;background-color:#ebe9eb}.tinv-wishlist .tinv-modal .icon_big_heart_check,.tinv-wishlist .tinv-modal .icon_big_times,.tinv-wishlist .tinv-modal img{display:block;margin:0 auto;margin-bottom:25px;opacity:1!important}.tinv-wishlist .tinv-modal ul{overflow:visible;list-style:disc;margin:10px 0 0 20px}.tinv-wishlist .tinv-modal li{list-style:disc!important}.tinv-wishlist .tinv-create-list .tinv-modal ul,.tinv-wishlist.tinv-create-list form ul{list-style:none!important;margin:25px 0 0}.tinv-wishlist .tinv-create-list .tinv-modal li,.tinv-wishlist.tinv-create-list form li{list-style:none!important}.tinv-wishlist .tinv-modal .already-in{margin-bottom:35px}.tinv-wishlist .tinv-modal .delete-notification{margin-bottom:25px}.tinv-wishlist .tinv-modal .already-in ul{overflow:visible;margin:12px 0 27px 17px}.tinv-wishlist .tinv-modal select{width:100%}.tinv-wishlist .tinv-modal button+.button,.tinv-wishlist .tinv-modal button+button{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal input+button{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal label+button,.tinv-wishlist .tinv-modal label+input{margin-top:12px;width:100%}.tinv-wishlist .tinv-modal select+button,.tinv-wishlist .tinv-modal select+input{margin-top:12px;width:100%}@media screen and (max-width:782px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:46px!important}}@media screen and (max-width:600px){.admin-bar .tinv-wishlist .tinv-modal{padding-top:0!important}.tinv-wishlist .tinv-modal .tinv-close-modal{position:static;display:block;margin:0 auto 20px}}.tinv-wishlist .tinv-modal .already-in+label{display:block;margin-top:6px}.tinv-wishlist .tinv-modal label select{margin-top:8px}.tinv-wishlist .tinv-modal .delete-notification+button{width:100%}.tinv-wishlist .tinvwl_added_to_wishlist,.tinv-wishlist .tinvwl_created_wishlist{text-align:center}.tinv-wishlist .tinvwl_added_to_wishlist .tinv-txt{margin-bottom:25px}.tinv-wishlist .tinvwl_created_wishlist .tinv-txt{margin-bottom:25px}.tinv-wishlist .tinvwl_created_wishlist button{margin-top:0;margin-bottom:10px}.woocommerce .tinv-wishlist .tinvwl_added_to_wishlist.tinv-modal button.button{margin-top:0;margin-bottom:10px}.tinv-wishlist .tinv-modal .tinvwl-buttons-group{margin-top:20px}.tinv-wishlist .tinvwl-buttons-group button{width:100%}.tinv-wishlist .tinvwl-buttons-group button+button{margin-top:7px}.tinv-wishlist .tinvwl-buttons-group button i{position:relative}.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-heart-o,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-key,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-times{font-size:20px}.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-heart-o::before,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-key::before,.tinv-wishlist .tinvwl-buttons-group button i.ftinvwl-times::before{position:relative;top:3px}.tinv-wishlist .tinvwl-buttons-group+button{width:100%;margin-top:7px}.tinv-wishlist .tinv-modal h2{text-align:center;margin:0 0 35px}.tinv-wishlist .tinv-create-list .tinv-modal-inner{max-width:778px;padding:30px}.tinv-wishlist .tinvwl-has-error:not(.tinvwl-input-group),.tinv-wishlist .tinvwl-input-group.tinvwl-has-error .form-control{border:2px solid red}.tinv-wishlist .tinvwl-has-error+.tinvwl-error{padding:5px 0 0 5px;color:red}@media only screen and (max-width:640px){.navigation-button,.social-buttons,.tinv-lists-nav{margin-left:12px;margin-right:12px}}.tinvwl-tooltip{display:none}.tinvwl-input-group{position:relative;display:table;border-collapse:separate}.tinvwl-input-group .form-control{position:relative;z-index:1;float:left;height:38px;width:100%;margin-bottom:0}.tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:15px}.tinv-wishlist .tinvwl-to-left .tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:10px}.tinv-wishlist .tinv-search-form .tinvwl-input-group .form-control+.tinvwl-input-group-btn{padding-left:9px}.tinvwl-input-group .form-control,.tinvwl-input-group-addon,.tinvwl-input-group-btn{display:table-cell}.tinvwl-input-group-addon,.tinvwl-input-group-btn{width:1%;white-space:nowrap;vertical-align:top}@media only screen and (max-width:640px){.tinvwl-input-group{width:100%}}@media only screen and (max-width:667px){.tinvwl-input-group:not(.tinvwl-no-full){display:block}.tinvwl-input-group:not(.tinvwl-no-full) .form-control,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn{display:block}.tinvwl-input-group:not(.tinvwl-no-full) .form-control{float:none}.tinv-wishlist .tinv-search-form .tinvwl-input-group:not(.tinvwl-no-full) .form-control+.tinvwl-input-group-btn{padding-top:10px;padding-left:0}.tinvwl-input-group:not(.tinvwl-no-full) .form-control+.tinvwl-input-group-btn{padding-top:10px;padding-left:0}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon>button,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-addon>input{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn{width:100%}.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn>button,.tinvwl-input-group:not(.tinvwl-no-full) .tinvwl-input-group-btn>input{width:100%}}.tinv-table{display:table;width:100%;height:100%}.tinv-cell{display:table-cell;vertical-align:middle}.tinv-wishlist-clear:after,.tinv-wishlist-clear:before{content:" ";display:table}.tinv-wishlist .tinv-wishlist-clear{visibility:visible;width:auto;height:auto}.tinv-wishlist-clear:after{clear:both}.icon_big_heart_check{display:inline-block;width:46px;height:46px;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:60px}.icon_big_times{display:inline-block;width:46px;height:46px;font-family:tinvwl-webfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:60px}.icon_big_times::before{content:"\e904";top:-7px;left:-7px;position:relative}.icon_big_heart_check::before{content:"\e90a";top:-7px;left:-7px;position:relative}.tinvwl_add_to_wishlist_button.disabled-add-wishlist,.tinvwl_add_to_wishlist_button.tinvwl-button.disabled-add-wishlist{opacity:.5!important;cursor:not-allowed}.empty-name-wishlist{border-color:red!important}.tinvwl_remove_from_wishlist-text{display:none}.tinvwl-product-in-list.tinvwl-product-make-remove .tinvwl_remove_from_wishlist-text{display:inline}.tinvwl-product-in-list.tinvwl-product-make-remove .tinvwl_add_to_wishlist-text{display:none}@media only screen and (max-width:1024px){.tinv-wishlist .tinvwl-table-manage-list .product-remove{display:table-cell}}@media only screen and (max-width:640px){.tinv-wishlist table.tinvwl-table-manage-list tbody td.product-remove{display:block}}
 
 
 
 
 
 
 
 
 
 
assets/css/theme.min.css CHANGED
@@ -1,14 +1,4 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
- * Copyright (c) 2018;
4
- * Licensed GPLv2+ */
5
-
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
  * Copyright (c) 2018;
14
  * Licensed GPLv2+ */
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
 
 
 
 
 
 
 
 
 
 
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
assets/img/upgrade_to_pro.jpg CHANGED
Binary file
assets/js/admin.min.js CHANGED
@@ -1,14 +1,4 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
- * Copyright (c) 2018;
4
- * Licensed GPLv2+ */
5
-
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
  * Copyright (c) 2018;
14
  * Licensed GPLv2+ */
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
 
 
 
 
 
 
 
 
 
 
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
assets/js/public.js CHANGED
@@ -208,7 +208,8 @@
208
  product_type: $(this).attr('data-tinv-wl-producttype'),
209
  product_id: $(this).attr('data-tinv-wl-product') || 0,
210
  product_variation: $(this).attr('data-tinv-wl-productvariation') || 0,
211
- product_action: $(this).attr('data-tinv-wl-action') || 'addto'
 
212
  },
213
  a = this;
214
  $(a).closest('form.cart[method=post], .tinvwl-loop-button-wrapper').find('input, select, textarea').each(function () {
208
  product_type: $(this).attr('data-tinv-wl-producttype'),
209
  product_id: $(this).attr('data-tinv-wl-product') || 0,
210
  product_variation: $(this).attr('data-tinv-wl-productvariation') || 0,
211
+ product_action: $(this).attr('data-tinv-wl-action') || 'addto',
212
+ redirect: window.location.href
213
  },
214
  a = this;
215
  $(a).closest('form.cart[method=post], .tinvwl-loop-button-wrapper').find('input, select, textarea').each(function () {
assets/js/public.min.js CHANGED
@@ -1,16 +1,6 @@
1
- /*! WooCommerce Wishlist Plugin - version 1.8.17
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
5
 
6
- /*! WooCommerce Wishlist Plugin - version 1.8.17
7
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
8
- * Copyright (c) 2018;
9
- * Licensed GPLv2+ */
10
-
11
- /*! WooCommerce Wishlist Plugin - version 1.8.17
12
- * https://wordpress.org/plugins/ti-woocommerce-wishlist/
13
- * Copyright (c) 2018;
14
- * Licensed GPLv2+ */
15
-
16
- 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;cart_hash_key=wc_cart_fragments_params.cart_hash_key,localStorage.setItem(cart_hash_key,localStorage.getItem(cart_hash_key)+(new Date).getTime()),sessionStorage.setItem(cart_hash_key,sessionStorage.getItem(cart_hash_key)+(new Date).getTime()),jQuery(document.body).off("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist")})}!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):a.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){var i=parseInt(n);return 0<=t.in.indexOf(i)}return t.in})},onMultiProductAlreadyIn:function(t){t=t||[];t=a.onPrepareList.call(t)||t,t=a.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(a.text_already_in+" ").append(e))},onAction:{redirect:function(t){a.redirectTimer&&clearTimeout(a.redirectTimer),a.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(),a.redirectTimer&&clearTimeout(a.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",a=sessionStorage.getItem(n),o=Cookies.get("woocommerce_cart_hash"),l=sessionStorage.getItem("wc_cart_created");if(null!=a&&""!==a||(a=""),null!=o&&""!==o||(o=""),a&&(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"]||a!==o)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"},e=this;r(e).closest("form.cart[method=post], .tinvwl-loop-button-wrapper").find("input, select, textarea").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val(),n=10,a=function(t,i){if("object"==typeof i){for(var e in void 0===t&&(t={}),i)if(""===e){var n=-1;for(n in t)n=n;t[n=parseInt(n)+1]=a(t[e],i[e])}else t[e]=a(t[e],i[e]);return t}return i};if("button"!==i&&void 0!==t&&"attribute_"!=t.substr(0,10)){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<n;){var o=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===o.length){var l={};l[o[2]]=e,e=l}t=o[1],n--}"checkbox"===i||"radio"===i?r(this).is(":checked")&&(e.length||"object"==typeof e||(e=!0),s.form[t]=a(s.form[t],e)):s.form[t]=a(s.form[t],e)}}),s=a.onPrepareDataAction.call(e,s)||s,r.post(a.api_url,s,function(t){if(a.onDialogHide.call(e.tinvwl_dialog,e),"object"==typeof t)for(var i in t)"function"==typeof a.onAction[i]&&a.onAction[i].call(e,t[i]);else"function"==typeof a.onAction.msg&&a.onAction.msg.call(e,t)})}},a=r.extend(!0,{},i,t);return r(this).each(function(){if(!r(this).attr("data-tinv-wl-list"))return!1;if(a.dialogbox&&a.dialogbox.length&&(this.tinvwl_dialog=a.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=a.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=r(this).nextAll(a.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){a.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=r(this).find(a.class.select).eq(0);r(this).find(a.class.newtitle).hide().val(""),e.html(""),r.each(t,function(t,i){a.onCreateWishList.call(e,i)}),a.text_create&&a.onCreateWishList.call(e,{ID:"",title:a.text_create,in:!1}),a.onMultiProductAlreadyIn.call(e,t),a.onSelectWishList.call(e,t),r(this).find(a.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=a.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),a.onDialogShow.call(this.tinvwl_dialog,this)):a.onActionProduct.call(this)});var n=this;r(this.tinvwl_dialog).find(a.class.dialogbutton).off("click").on("click",function(){var t,i=r(n.tinvwl_dialog).find(a.class.select),e=r(n.tinvwl_dialog).find(a.class.newtitle);i.val()||e.val()?a.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",a.onClick),a.onInited.call(this,a)})},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(".variations_form").each(function(){var t=r(this),s=t.find(".tinvwl_add_to_wishlist_button");s.length&&t.on("hide_variation",function(t){t.preventDefault(),s.addClass("disabled-add-wishlist")}).on("show_variation",function(t,i,e){var n=JSON.parse(s.attr("data-tinv-wl-list")),a=!1,o="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var l in n)n[l].hasOwnProperty("in")&&Array.isArray(n[l].in)&&-1<(n[l].in||[]).indexOf(i.variation_id)&&(a=!0);s.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&o).attr("data-tinv-wl-action",a&&o?"remove":"addto"),t.preventDefault(),s.removeClass("disabled-add-wishlist")})})})}(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),function(e){e(document).ready(function(){e("#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">'),e(".tinv-lists-nav").each(function(){e.trim(e(this).html()).length||e(this).remove()}),e("body").on("click",".social-buttons .social[title!=email]",function(t){var i=window.open(e(this).attr("href"),e(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),e("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),e(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),e("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){e(this).data("url")&&(t.preventDefault(),window.location=e(this).data("url"))});var t=e(".tinv-wishlist .navigation-button");t.length&&t.each(function(){var t=e(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),e(".tinv-login .showlogin").unbind("click").on("click",function(t){t.preventDefault(),e(this).closest(".tinv-login").find(".login").toggle()}),e(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){e(this).toggle(!!e(this).children().not(".look_in").length||!!e(this).children(".look_in").children().length)})}),e(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){e(".wishlist_products_counter").toggleClass("wishlist-counter-with-products","0"!=e(".wishlist_products_counter_number").html())}),update_cart_hash()}(jQuery);
1
+ /*! WooCommerce Wishlist Plugin - version 1.9.0
2
  * https://wordpress.org/plugins/ti-woocommerce-wishlist/
3
  * Copyright (c) 2018;
4
  * Licensed GPLv2+ */
5
 
6
+ 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;cart_hash_key=wc_cart_fragments_params.cart_hash_key,localStorage.setItem(cart_hash_key,localStorage.getItem(cart_hash_key)+(new Date).getTime()),sessionStorage.setItem(cart_hash_key,sessionStorage.getItem(cart_hash_key)+(new Date).getTime()),jQuery(document.body).off("wc_fragments_loaded.wishlist wc_fragments_refreshed.wishlist")})}!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):a.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=a.onPrepareList.call(t)||t,t=a.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(a.text_already_in+" ").append(e))},onAction:{redirect:function(t){a.redirectTimer&&clearTimeout(a.redirectTimer),a.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(),a.redirectTimer&&clearTimeout(a.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",a=sessionStorage.getItem(n),o=Cookies.get("woocommerce_cart_hash"),l=sessionStorage.getItem("wc_cart_created");if(null!=a&&""!==a||(a=""),null!=o&&""!==o||(o=""),a&&(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"]||a!==o)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, select, textarea").each(function(){var t=r(this).attr("name"),i=r(this).attr("type"),e=r(this).val(),n=10,a=function(t,i){if("object"!=typeof i)return i;for(var e in void 0===t&&(t={}),i)if(""===e){var n=-1;for(n in t)n=n;t[n=parseInt(n)+1]=a(t[e],i[e])}else t[e]=a(t[e],i[e]);return t};if("button"!==i&&void 0!==t&&"attribute_"!=t.substr(0,10)){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<n;){var o=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===o.length){var l={};l[o[2]]=e,e=l}t=o[1],n--}"checkbox"===i||"radio"===i?r(this).is(":checked")&&(e.length||"object"==typeof e||(e=!0),s.form[t]=a(s.form[t],e)):s.form[t]=a(s.form[t],e)}}),s=a.onPrepareDataAction.call(e,s)||s,r.post(a.api_url,s,function(t){if(a.onDialogHide.call(e.tinvwl_dialog,e),"object"==typeof t)for(var i in t)"function"==typeof a.onAction[i]&&a.onAction[i].call(e,t[i]);else"function"==typeof a.onAction.msg&&a.onAction.msg.call(e,t)})}},a=r.extend(!0,{},i,t);return r(this).each(function(){if(!r(this).attr("data-tinv-wl-list"))return!1;if(a.dialogbox&&a.dialogbox.length&&(this.tinvwl_dialog=a.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=a.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=r(this).nextAll(a.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){a.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=r(this).find(a.class.select).eq(0);r(this).find(a.class.newtitle).hide().val(""),e.html(""),r.each(t,function(t,i){a.onCreateWishList.call(e,i)}),a.text_create&&a.onCreateWishList.call(e,{ID:"",title:a.text_create,in:!1}),a.onMultiProductAlreadyIn.call(e,t),a.onSelectWishList.call(e,t),r(this).find(a.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=a.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),a.onDialogShow.call(this.tinvwl_dialog,this)):a.onActionProduct.call(this)});var n=this;r(this.tinvwl_dialog).find(a.class.dialogbutton).off("click").on("click",function(){var t,i=r(n.tinvwl_dialog).find(a.class.select),e=r(n.tinvwl_dialog).find(a.class.newtitle);i.val()||e.val()?a.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",a.onClick),a.onInited.call(this,a)})},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(".variations_form").each(function(){var t=r(this),s=t.find(".tinvwl_add_to_wishlist_button");s.length&&t.on("hide_variation",function(t){t.preventDefault(),s.addClass("disabled-add-wishlist")}).on("show_variation",function(t,i,e){var n=JSON.parse(s.attr("data-tinv-wl-list")),a=!1,o="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var l in n)n[l].hasOwnProperty("in")&&Array.isArray(n[l].in)&&-1<(n[l].in||[]).indexOf(i.variation_id)&&(a=!0);s.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&o).attr("data-tinv-wl-action",a&&o?"remove":"addto"),t.preventDefault(),s.removeClass("disabled-add-wishlist")})})})}(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),function(e){e(document).ready(function(){e("#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">'),e(".tinv-lists-nav").each(function(){e.trim(e(this).html()).length||e(this).remove()}),e("body").on("click",".social-buttons .social[title!=email]",function(t){var i=window.open(e(this).attr("href"),e(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),e("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),e(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),e("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){e(this).data("url")&&(t.preventDefault(),window.location=e(this).data("url"))});var t=e(".tinv-wishlist .navigation-button");t.length&&t.each(function(){var t=e(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),e(".tinv-login .showlogin").unbind("click").on("click",function(t){t.preventDefault(),e(this).closest(".tinv-login").find(".login").toggle()}),e(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){e(this).toggle(!!e(this).children().not(".look_in").length||!!e(this).children(".look_in").children().length)})}),e(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){e(".wishlist_products_counter").toggleClass("wishlist-counter-with-products","0"!=e(".wishlist_products_counter_number").html())}),update_cart_hash()}(jQuery);
 
 
 
 
 
 
 
 
 
 
includes/form.helper.php CHANGED
@@ -50,22 +50,23 @@ class TInvWL_Form {
50
  * Call method for returm or output
51
  *
52
  * @param string $name Name function.
53
- * @param array $arg Parameter function.
 
54
  * @return mixed
55
  */
56
  public function __call( $name, $arg ) {
57
  $_arg = array(
58
- 0 => null,
59
- 1 => null,
60
- 2 => null,
61
- 3 => null,
62
  );
63
  foreach ( $_arg as $key => $value ) {
64
  $_arg[ $key ] = array_shift( $arg );
65
  }
66
- $arg = $_arg;
67
- $glue = '_';
68
- $method = sprintf( '%s%s', $glue, $name );
69
  if ( false === strpos( $name, $glue ) ) {
70
  if ( method_exists( __CLASS__, $method ) ) {
71
  $data = call_user_func( array( __CLASS__, $method ), $arg[0], $arg[1], $arg[2], $arg[3] );
@@ -76,6 +77,7 @@ class TInvWL_Form {
76
  return call_user_func( array( __CLASS__, $name ), $arg[0], $arg[1], $arg[2], $arg[3] );
77
  }
78
  }
 
79
  return '';
80
  }
81
 
@@ -83,7 +85,8 @@ class TInvWL_Form {
83
  * Call method for returm or output
84
  *
85
  * @param string $name Name function.
86
- * @param array $arg Parameter function.
 
87
  * @return mixed
88
  */
89
  public static function __callStatic( $name, $arg ) {
@@ -91,17 +94,17 @@ class TInvWL_Form {
91
  self::$_name = TINVWL_PREFIX;
92
  }
93
  $_arg = array(
94
- 0 => null,
95
- 1 => null,
96
- 2 => null,
97
- 3 => null,
98
  );
99
  foreach ( $_arg as $key => $value ) {
100
  $_arg[ $key ] = array_shift( $arg );
101
  }
102
- $arg = $_arg;
103
- $glue = '_';
104
- $method = sprintf( '%s%s', $glue, $name );
105
  if ( false === strpos( $name, $glue ) ) {
106
  if ( method_exists( __CLASS__, $method ) ) {
107
  $data = call_user_func( array( __CLASS__, $method ), $arg[0], $arg[1], $arg[2], $arg[3] );
@@ -112,15 +115,17 @@ class TInvWL_Form {
112
  return call_user_func( array( __CLASS__, $name ), $arg[0], $arg[1], $arg[2], $arg[3] );
113
  }
114
  }
 
115
  return '';
116
  }
117
 
118
  /**
119
  * Create input html element
120
  *
121
- * @param mixed $data Name field or array attributes.
122
  * @param string $value Value.
123
- * @param mixed $extra Styling or Custom variable.
 
124
  * @return string
125
  */
126
  public static function _text( $data, $value = '', $extra = '' ) {
@@ -132,22 +137,24 @@ class TInvWL_Form {
132
  }
133
  }
134
  if ( $load ) {
135
- $value = self::getvalue( (is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
136
  }
137
  $defaults = array(
138
- 'type' => 'text',
139
- 'name' => is_array( $data ) ? '' : $data,
140
- 'value' => $value,
141
  );
 
142
  return sprintf( '<input %s%s />', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
143
  }
144
 
145
  /**
146
  * Create input html element with type number
147
  *
148
- * @param mixed $data Name field or array attributes.
149
  * @param integer|float $value Value.
150
- * @param mixed $extra Styling or Custom variable.
 
151
  * @return string
152
  */
153
  public static function _number( $data, $value = 0, $extra = '' ) {
@@ -161,6 +168,11 @@ class TInvWL_Form {
161
  } else {
162
  $extra .= sprintf( ' class="%s" ', $class );
163
  }
 
 
 
 
 
164
  return self::_text( $data, $value, $extra );
165
  }
166
 
@@ -168,14 +180,16 @@ class TInvWL_Form {
168
  * Create color picker
169
  *
170
  * @see colorpicker
171
- * @param mixed $data Name field or array attributes.
 
172
  * @param string $value Value.
173
- * @param mixed $extra Styling or Custom variable.
 
174
  * @return string
175
  */
176
  public static function _color( $data = '', $value = '', $extra = '' ) {
177
  $class = sprintf( ' %s-form-color', self::$_name );
178
- $load = true;
179
  if ( is_array( $extra ) ) {
180
  if ( isset( $extra['class'] ) ) {
181
  $extra['class'] .= $class;
@@ -190,13 +204,14 @@ class TInvWL_Form {
190
  $extra .= sprintf( ' class="%s" ', $class );
191
  }
192
  if ( $load ) {
193
- $value = self::getvalue( (is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
194
  }
195
  $defaults = array(
196
- 'type' => 'text',
197
- 'name' => is_array( $data ) ? '' : $data,
198
- 'value' => $value,
199
  );
 
200
  return sprintf( '<div class="tinvwl-color-picker"><div class="tinvwl-input-group tinvwl-no-full"><input %s%s /><div class="tinvwl-input-group-btn"><div class="tinvwl-eyedropper"><a href="javascript:void(0);"><i class="ftinvwl ftinvwl-eyedropper"></i></a></div></div></div></div>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
201
  }
202
 
@@ -204,18 +219,20 @@ class TInvWL_Form {
204
  * Create date input
205
  *
206
  * @see jquery-ui-datepicker
207
- * @param mixed $data Name field or array attributes.
 
208
  * @param string $value Value.
209
- * @param mixed $extra Styling or Custom variable.
 
210
  * @return string
211
  */
212
  public static function _date( $data = '', $value = '', $extra = '' ) {
213
  if ( ! is_array( $data ) ) {
214
  $data = array( 'name' => $data );
215
  }
216
- $extra_js = '';
217
- $value = self::getvalue( $data['name'], $value );
218
- $class = sprintf( ' %s-date', self::$_name );
219
  if ( is_array( $extra ) ) {
220
  if ( isset( $extra['class'] ) ) {
221
  $extra['class'] .= $class;
@@ -233,15 +250,17 @@ class TInvWL_Form {
233
  }
234
 
235
  $data['id'] = self::__createid( $data['name'] );
 
236
  return sprintf( "%s<script type=\"text/javascript\">jQuery(document).ready(function($){ $('#%s').datepicker({%s})});</script>", self::_text( $data, $value, $extra ), $data['id'], self::__atrtostrjs( $extra_js ) );
237
  }
238
 
239
  /**
240
  * Create select html element with time period
241
  *
242
- * @param mixed $data Name field or array attributes.
243
  * @param intger $value Value.
244
- * @param mixed $extra Styling or Custom variable.
 
245
  * @return string
246
  */
247
  public static function _time( $data = '', $value = '', $extra = '' ) {
@@ -256,54 +275,58 @@ class TInvWL_Form {
256
  $extra .= sprintf( ' class="%s"', $class );
257
  }
258
  $options = array();
259
- for ( $i = 0; $i < 24; $i++ ) {
260
  $options[ $i ] = sprintf( '%02d:00', $i );
261
  }
 
262
  return self::_select( $data, intval( $value ), $extra, $options );
263
  }
264
 
265
  /**
266
  * Create textarea html element
267
  *
268
- * @param mixed $data Name field or array attributes.
269
  * @param string $value Value.
270
- * @param mixed $extra Styling or Custom variable.
 
271
  * @return string
272
  */
273
  public static function _textarea( $data = '', $value = '', $extra = '' ) {
274
- $value = self::getvalue( (is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
275
- $defaults = array(
276
- 'name' => is_array( $data ) ? '' : $data,
277
- 'cols' => '40',
278
- 'rows' => '20',
279
  );
 
280
  return sprintf( '<textarea %s%s>%s</textarea>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ), esc_textarea( $value ) );
281
  }
282
 
283
  /**
284
  * Output wysiwyg editor
285
  *
286
- * @param mixed $data Name field or array attributes.
287
  * @param string $value Value.
288
- * @param array $extra Styling or Custom variable.
289
  */
290
  public static function editor( $data = '', $value = '', $extra = array() ) {
291
  if ( ! is_array( $data ) ) {
292
  $data = array( 'name' => $data );
293
  }
294
- $value = self::getvalue( $data['name'], $value );
295
- $data['id'] = self::__createid( $data['name'] );
296
- $extra['textarea_name'] = $data['name'];
297
  wp_editor( $value, $data['id'], $extra );
298
  }
299
 
300
  /**
301
  * Create input html element with type checkbox
302
  *
303
- * @param mixed $data Name field or array attributes.
304
  * @param boolean $checked Value.
305
- * @param mixed $extra Styling or Custom variable.
306
- * @param string $value Value for form.
 
307
  * @return string
308
  */
309
  public static function _checkbox( $data = '', $checked = false, $extra = '', $value = '' ) {
@@ -315,20 +338,20 @@ class TInvWL_Form {
315
  }
316
  }
317
  if ( $load ) {
318
- $checked = self::getvalue( (is_array( $data ) ? @$data['name'] : $data ), $checked ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
319
- $value = self::getoption( (is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
320
  }
321
  if ( is_array( $value ) ) {
322
  $value = array_shift( $value );
323
  }
324
  if ( ! is_bool( $checked ) ) {
325
- $checked = ($checked == $value) ? true : false; // WPCS: loose comparison ok.
326
  }
327
 
328
  $defaults = array(
329
- 'type' => 'checkbox',
330
- 'name' => ( ! is_array( $data ) ? $data : '' ),
331
- 'value' => esc_html( $value ),
332
  );
333
  if ( is_array( $data ) && array_key_exists( 'checked', $data ) ) {
334
  $checked = $data['checked'];
@@ -344,16 +367,18 @@ class TInvWL_Form {
344
  } else {
345
  unset( $defaults['checked'] );
346
  }
 
347
  return sprintf( '<input %s%s />', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
348
  }
349
 
350
  /**
351
  * Create input html element with type radio
352
  *
353
- * @param mixed $data Name field or array attributes.
354
  * @param boolean $checked Value.
355
- * @param mixed $extra Styling or Custom variable.
356
- * @param string $value Value for form.
 
357
  * @return string
358
  */
359
  public static function _radio( $data = '', $checked = false, $extra = '', $value = '' ) {
@@ -361,6 +386,7 @@ class TInvWL_Form {
361
  $data = array( 'name' => $data );
362
  }
363
  $data['type'] = 'radio';
 
364
  return self::_checkbox( $data, $checked, $extra, $value );
365
  }
366
 
@@ -371,13 +397,14 @@ class TInvWL_Form {
371
  * @param mixed $value Value.
372
  * @param mixed $extra Styling or Custom variable.
373
  * @param array $options Options for form.
 
374
  * @return string
375
  */
376
  public static function _select( $data = '', $value = array(), $extra = '', $options = array() ) {
377
  $defaults = array();
378
  if ( ! is_array( $data ) ) {
379
- $data = array( 'name' => $data );
380
- $defaults = array( 'name' => $data );
381
  }
382
  $load = true;
383
  if ( is_array( $extra ) ) {
@@ -397,9 +424,9 @@ class TInvWL_Form {
397
  $options = array( $options );
398
  }
399
 
400
- $extra = self::__atrtostr( $extra );
401
- $multiple = (count( $value ) > 1 && false === stripos( $extra, 'multiple' )) ? ' multiple="multiple"' : '';
402
- $form = '';
403
  foreach ( $options as $key => $val ) {
404
  $key = (string) $key;
405
  if ( is_array( $val ) ) {
@@ -413,7 +440,7 @@ class TInvWL_Form {
413
  }
414
  $form .= sprintf( '<optgroup label="%s" >%s</optgroup>', esc_attr( $key ), esc_html( $opt ) );
415
  } else {
416
- $sel = in_array( $key, $value ) ? ' selected="selected"' : ''; // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
417
  $form .= sprintf( '<option value="%s"%s>%s</option>', esc_attr( $key ), $sel, esc_html( $val ) );
418
  }
419
  }
@@ -424,21 +451,22 @@ class TInvWL_Form {
424
  /**
425
  * Create select html element
426
  *
427
- * @param mixed $data Name field or array attributes.
428
  * @param string $value Value.
429
- * @param mixed $extra Styling or Custom variable.
430
- * @param array $options Options for form.
 
431
  * @return string
432
  */
433
  public static function _previewselect( $data = '', $value = '', $extra = '', $options = array() ) {
434
  if ( ! is_array( $data ) ) {
435
  $data = array( 'name' => $data );
436
  }
437
- $class = sprintf( ' %s-form-preview-select', self::$_name );
438
- $extra_select = array( 'class' => 'form-control' );
439
- $extra_button = array();
440
- $extra_url = '';
441
- $load = true;
442
  if ( is_array( $extra ) ) {
443
  if ( isset( $extra['load'] ) ) {
444
  $load = (bool) $extra['load'];
@@ -472,10 +500,11 @@ class TInvWL_Form {
472
  }
473
  if ( is_array( $extra_button ) ) {
474
  $extra_button['class'] = 'tinvwl-btn smaller';
475
- $extra_button['href'] = sprintf( $extra_url, $value );
476
  } else {
477
  $extra_button .= ' class="tinvwl-btn smaller" href="' . sprintf( $extra_url, $value );
478
  }
 
479
  return sprintf( '<div class="tinvwl-input-group %s">%s<div class="tinvwl-input-group-btn">%s</div></div>', $class, self::_select( $data, $value, $extra_select, $options ), self::_button( $data, __( 'Preview', 'ti-woocommerce-wishlist' ), $extra_button ) );
480
  }
481
 
@@ -484,18 +513,19 @@ class TInvWL_Form {
484
  *
485
  * @param string $data Name field or array attributes.
486
  * @param string $value Value.
487
- * @param mixed $extra Styling or Custom variable.
 
488
  * @return string
489
  */
490
  public static function _uploadfile( $data = '', $value = '', $extra = '' ) {
491
  if ( ! is_array( $data ) ) {
492
  $data = array( 'name' => $data );
493
  }
494
- $value = self::getvalue( $data['name'], $value );
495
- $extra_field = '';
496
- $extra_button = '';
497
- $value_button = '';
498
- $mimefiles = '';
499
  if ( is_array( $extra ) ) {
500
  if ( isset( $extra['type'] ) ) {
501
  $mimefiles = $extra['type'];
@@ -533,20 +563,21 @@ class TInvWL_Form {
533
  $extra_button .= self::__atrtostr( $extra );
534
  }
535
  } else {
536
- $extra_button = $extra_field = $extra;
537
  } // End if().
538
  if ( ! is_array( $mimefiles ) ) {
539
  $mimefiles = array( $mimefiles );
540
  }
541
- $mimefiles = array_filter( $mimefiles );
542
- $mimefiles = wp_json_encode( $mimefiles );
543
 
544
  wp_enqueue_media();
545
- return sprintf( "<div class='tinvwl-input-group'>%s%s<div class='tinvwl-input-group-btn'>%s</div></div><script type=\"text/javascript\">jQuery(document).ready(function($){var nn='%s';" . ( empty( $value ) ? "$('.' + nn + '-preview').hide();" : "") . "$('input[name=\"'+nn+'-btn\"]').click(function(e){e.preventDefault();var i=wp.media({multiple:false, library:{type:{$mimefiles}}}).open().on('select',function(e){var u=i.state().get('selection').first();var iu=u.toJSON().url;$('input[name=\"'+nn+'\"]').val(iu);$('.' + nn + '-preview').show();$('.' + nn + '-preview span img').attr('src', iu);});});});</script>", // @codingStandardsIgnoreLine Squiz.Strings.DoubleQuoteUsage.NotRequired
546
- '<div class="' . $data['name'] . '-preview tinvwl-input-group-btn"><div class="tinvwl-icon-preview"><span>' . ( ! empty( $value ) ? '<img src="' . $value . '" />' : '') . '</span></div></div>', self::_text( $data, $value, $extra_field ), self::_text( array(
547
- 'name' => $data['name'] . '-btn',
548
- 'type' => 'button',
549
- 'class' => 'tinvwl-btn white smaller',
 
550
  ), $value_button, $extra_button ),
551
  $data['name']
552
  );
@@ -559,6 +590,7 @@ class TInvWL_Form {
559
  * @param mixed $value Value.
560
  * @param mixed $extra Styling or Custom variable.
561
  * @param array $options Options for form.
 
562
  * @return string
563
  */
564
  public static function _multiselect( $data = '', $value = array(), $extra = '', $options = array() ) {
@@ -566,6 +598,7 @@ class TInvWL_Form {
566
  if ( stripos( $extra, 'multiple' ) === false ) {
567
  $extra .= ' multiple="multiple"';
568
  }
 
569
  return self::_select( $data, $value, $extra, $options );
570
  }
571
 
@@ -576,6 +609,7 @@ class TInvWL_Form {
576
  * @param mixed $value Value.
577
  * @param mixed $extra Styling or Custom variable.
578
  * @param array $options Options for form.
 
579
  * @return string
580
  */
581
  public static function _multicheckbox( $data = '', $value = array(), $extra = '', $options = array() ) {
@@ -593,7 +627,7 @@ class TInvWL_Form {
593
  if ( ! is_array( $data ) ) {
594
  $data = array( 'name' => $data );
595
  }
596
- $value = self::getvalue( $data['name'], $value );
597
  $options = self::getoption( $data['name'], $options );
598
  if ( ! is_array( $value ) ) {
599
  $value = array( $value );
@@ -602,8 +636,8 @@ class TInvWL_Form {
602
  if ( ! is_array( $options ) ) {
603
  $options = array( $options );
604
  }
605
- $before = '';
606
- $after = '';
607
  if ( is_array( $extra ) ) {
608
  if ( isset( $extra['before'] ) ) {
609
  $before = sprintf( '<div class="%s-before">%s</div>', self::$_name, $extra['before'] );
@@ -614,18 +648,19 @@ class TInvWL_Form {
614
  unset( $extra['after'] );
615
  }
616
  }
617
- $i = 0;
618
- $name = $data['name'];
619
  foreach ( $options as $key => $_data ) {
620
- $data['name'] = $name . '[' . $i . ']';
621
- $i++;
622
- $data['id'] = self::__createid( $data['name'] . $key );
623
- $_form = self::_checkbox( $data, in_array( $key, $value ), array( 'load' => false ), esc_html( $key ) ); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
624
- $options [ $key ] = self::_label( $data['id'], $_data, array(
625
  'before' => $_form,
626
  ) );
627
  }
628
  $glue = '</li><li>';
 
629
  return sprintf( '<div %s >%s<ul class="list"><li>%s</li></ul>%s</div>', self::__atrtostr( $extra ), $before, implode( $glue, $options ), $after );
630
  }
631
 
@@ -636,13 +671,14 @@ class TInvWL_Form {
636
  * @param mixed $value Value.
637
  * @param mixed $extra Styling or Custom variable.
638
  * @param array $options Options for form.
 
639
  * @return string
640
  */
641
  public static function _multiradio( $data = '', $value = '', $extra = '', $options = array() ) {
642
  if ( ! is_array( $data ) ) {
643
  $data = array( 'name' => $data );
644
  }
645
- $value = self::getvalue( $data['name'], $value );
646
  $options = self::getoption( $data['name'], $options );
647
  if ( ! is_array( $value ) ) {
648
  $value = array( $value );
@@ -663,13 +699,14 @@ class TInvWL_Form {
663
  }
664
  $form = '';
665
  foreach ( $options as $key => $_data ) {
666
- $data['id'] = self::__createid( $data['name'] . $key );
667
- $_form = self::_radio( $data, in_array( $key, $value ), $extra, esc_html( $key ) ); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
668
- $form .= self::_label( $data['id'], $_data, array(
669
  'before' => $_form,
670
  ) );
671
- $form .= $separator;
672
  }
 
673
  return $form;
674
  }
675
 
@@ -679,16 +716,17 @@ class TInvWL_Form {
679
  * @param mixed $data Name field or array attributes.
680
  * @param array $value Value.
681
  * @param array $extra Styling or Custom variable.
 
682
  * @return string
683
  */
684
  public static function _timeperiod( $data = '', $value = array(), $extra = array() ) {
685
  if ( ! is_array( $data ) ) {
686
  $data = array( 'name' => $data );
687
  }
688
- $label = array( '', '' );
689
  $label_extra = array( '', '' );
690
- $value = (array) self::getvalue( $data['name'], $value );
691
- $separator = ' ';
692
  if ( is_array( $extra ) ) {
693
  if ( isset( $extra['separator'] ) ) {
694
  $separator = $extra['separator'];
@@ -697,7 +735,7 @@ class TInvWL_Form {
697
  if ( isset( $extra['label'] ) ) {
698
  $label_extra = $extra['label'];
699
  unset( $extra['label'] );
700
- for ( $i = 0; $i < count( $label ); $i++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
701
  if ( isset( $label_extra[ $i ]['text'] ) ) {
702
  $label[ $i ] = $label_extra[ $i ]['text'];
703
  unset( $label_extra[ $i ]['text'] );
@@ -709,13 +747,14 @@ class TInvWL_Form {
709
  $extra = array( 'load' => false );
710
  }
711
  $form = array();
712
- for ( $i = 0; $i < count( $label ); $i++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
713
- $_data = $data;
714
- $_data['name'] .= "[$i]";
715
- $label_extra[ $i ]['after'] = self::_time( $_data, (isset( $value[ $i ] ) ? $value[ $i ] : '' ), $extra );
716
- $form[] = self::_label( $_data['name'], $label[ $i ], $label_extra[ $i ] );
717
  }
718
  $form = sprintf( '<div class="%s-timeperiod">%s</div>', self::$_name, implode( $separator, $form ) );
 
719
  return $form;
720
  }
721
 
@@ -725,16 +764,17 @@ class TInvWL_Form {
725
  * @param mixed $data Name field or array attributes.
726
  * @param array $value Value.
727
  * @param array $extra Styling or Custom variable.
 
728
  * @return string
729
  */
730
  public static function _dateperiod( $data = '', $value = array(), $extra = array() ) {
731
  if ( ! is_array( $data ) ) {
732
  $data = array( 'name' => $data );
733
  }
734
- $label = array( '', '' );
735
  $label_extra = array( '', '' );
736
- $value = (array) self::getvalue( $data['name'], $value );
737
- $separator = ' ';
738
  if ( is_array( $extra ) ) {
739
  if ( isset( $extra['separator'] ) ) {
740
  $separator = $extra['separator'];
@@ -743,7 +783,7 @@ class TInvWL_Form {
743
  if ( isset( $extra['label'] ) ) {
744
  $label_extra = $extra['label'];
745
  unset( $extra['label'] );
746
- for ( $i = 0; $i < count( $label ); $i++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
747
  if ( isset( $label_extra[ $i ]['text'] ) ) {
748
  $label[ $i ] = $label_extra[ $i ]['text'];
749
  unset( $label_extra[ $i ]['text'] );
@@ -755,15 +795,16 @@ class TInvWL_Form {
755
  $extra = array( 'load' => false );
756
  }
757
  $form = array();
758
- for ( $i = 0; $i < count( $label ); $i++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
759
- $_data = $data;
760
- $_data['name'] .= "[$i]";
761
- $_data['id'] = self::__createid( $data['name'] . '[' . ($i ? 0 : 1) . ']' );
762
- $extra['date']['onClose'] = sprintf( "function(selectedDate){ $('#%s').datepicker('option','%sDate',selectedDate);}", $_data['id'], ($i ? 'max' : 'min' ) );
763
- $label_extra[ $i ]['after'] = self::_date( $_data, (isset( $value[ $i ] ) ? $value[ $i ] : '' ), $extra );
764
- $form[] = self::_label( $_data['name'], $label[ $i ], $label_extra[ $i ] );
765
  }
766
  $form = sprintf( '<div class="%s-dateperiod">%s</div>', self::$_name, implode( $separator, $form ) );
 
767
  return $form;
768
  }
769
 
@@ -772,7 +813,8 @@ class TInvWL_Form {
772
  *
773
  * @param string $data Name field or array attributes.
774
  * @param string $html HTML text.
775
- * @param mixed $extra Styling or Custom variable.
 
776
  * @return string
777
  */
778
  public static function _html( $data = '', $html = '', $extra = '' ) {
@@ -781,32 +823,36 @@ class TInvWL_Form {
781
  $html = str_replace( '{' . $key . '}', (string) $value, $html );
782
  }
783
  }
 
784
  return $html;
785
  }
786
 
787
  /**
788
  * Create button html element
789
  *
790
- * @param mixed $data Name field or array attributes.
791
  * @param string $value Value.
792
- * @param mixed $extra Styling or Custom variable.
 
793
  * @return type
794
  */
795
  public static function _button( $data = '', $value = '', $extra = '' ) {
796
  $defaults = array(
797
- 'type' => 'button',
798
- 'name' => is_array( $data ) ? '' : $data,
799
- 'value' => esc_attr( $value ),
800
  );
 
801
  return sprintf( '<button %s%s>%s</button>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ), $value );
802
  }
803
 
804
  /**
805
  * Create quick submit button html element
806
  *
807
- * @param mixed $data Name field or array attributes.
808
  * @param string $value Value.
809
- * @param mixed $extra Styling or Custom variable.
 
810
  * @return type
811
  */
812
  public static function _button_submit_quick( $data = '', $value = '', $extra = '' ) {
@@ -816,9 +862,10 @@ class TInvWL_Form {
816
  /**
817
  * Create submit button html element
818
  *
819
- * @param mixed $data Name field or array attributes.
820
  * @param string $value Value.
821
- * @param mixed $extra Styling or Custom variable.
 
822
  * @return type
823
  */
824
  public static function _button_submit( $data = '', $value = '', $extra = '' ) {
@@ -826,6 +873,7 @@ class TInvWL_Form {
826
  $data = array( 'name' => $data );
827
  }
828
  $data['type'] = 'submit';
 
829
  return self::_button( $data, $value, $extra );
830
  }
831
 
@@ -834,7 +882,8 @@ class TInvWL_Form {
834
  *
835
  * @param string $data Name field or array attributes.
836
  * @param string $value Value.
837
- * @param array $extra Styling or Custom variable.
 
838
  * @return string
839
  */
840
  public static function _label( $data = '', $value = '', $extra = array() ) {
@@ -860,6 +909,7 @@ class TInvWL_Form {
860
  $attr .= sprintf( ' %s="%s"', $key, $val );
861
  }
862
  }
 
863
  return sprintf( '<label %s>%s%s%s</label>', $attr, $before, $value, $after );
864
  }
865
 
@@ -868,6 +918,7 @@ class TInvWL_Form {
868
  *
869
  * @param string $name Name field.
870
  * @param string $separator Separator name.
 
871
  * @return string
872
  */
873
  private static function __createid( $name = '', $separator = '_' ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
@@ -875,6 +926,7 @@ class TInvWL_Form {
875
  if ( false === strpos( $name, self::$_name ) ) {
876
  $name = self::$_name . $separator . $name;
877
  }
 
878
  return $name;
879
  }
880
 
@@ -884,6 +936,7 @@ class TInvWL_Form {
884
  *
885
  * @param mixed $attributes New attributes for element.
886
  * @param array $default Default attributes for element.
 
887
  * @return string
888
  */
889
  private static function __parseatr( $attributes, $default ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
@@ -913,6 +966,7 @@ class TInvWL_Form {
913
  }
914
  $att .= sprintf( '%s="%s" ', $key, $val );
915
  }
 
916
  return $att;
917
  }
918
 
@@ -921,6 +975,7 @@ class TInvWL_Form {
921
  * Create attribute string for html element
922
  *
923
  * @param mixed $attributes New attributes for element.
 
924
  * @return string
925
  */
926
  static function __atrtostr( $attributes ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
@@ -941,8 +996,10 @@ class TInvWL_Form {
941
  }
942
  $atts .= sprintf( '%s="%s" ', $key, $val );
943
  }
 
944
  return $atts;
945
  }
 
946
  return '';
947
  }
948
 
@@ -951,6 +1008,7 @@ class TInvWL_Form {
951
  * Create attribute string for javascript object.
952
  *
953
  * @param mixed $attributes New attributes for element.
 
954
  * @return string
955
  */
956
  static function __atrtostrjs( $attributes ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
@@ -971,8 +1029,10 @@ class TInvWL_Form {
971
  }
972
  $atts .= sprintf( '%s: %s,', $key, $val );
973
  }
 
974
  return $atts;
975
  }
 
976
  return '';
977
  }
978
 
@@ -982,12 +1042,13 @@ class TInvWL_Form {
982
  * @return string
983
  */
984
  private static function __rndmane() { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
985
- $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
986
- $data = '';
987
- $length = rand( 4, 10 );
988
- for ( $i = 0; $i < $length; $i++ ) {
989
  $data .= $characters[ rand( 0, strlen( $characters ) - 1 ) ];
990
  }
 
991
  return $data;
992
  }
993
 
@@ -995,7 +1056,8 @@ class TInvWL_Form {
995
  * Using for get value for element
996
  *
997
  * @param string $data Name value or array values.
998
- * @param mixed $value Value.
 
999
  * @return mixed
1000
  */
1001
  static function getvalue( $data, $value = '' ) {
@@ -1015,7 +1077,8 @@ class TInvWL_Form {
1015
  * Set value for form element
1016
  *
1017
  * @param string $data Name value or array values.
1018
- * @param mixed $value Value.
 
1019
  * @return mixed
1020
  */
1021
  public static function setvalue( $data, $value = '' ) {
@@ -1033,6 +1096,7 @@ class TInvWL_Form {
1033
  } else {
1034
  self::$value[ $data ] = $value;
1035
  }
 
1036
  return $_value;
1037
  }
1038
 
@@ -1040,7 +1104,8 @@ class TInvWL_Form {
1040
  * Remove value for element
1041
  *
1042
  * @param string $data Name value or array values.
1043
- * @param void $value Value.
 
1044
  * @return mixed
1045
  */
1046
  public static function removevalue( $data, $value = '' ) {
@@ -1053,6 +1118,7 @@ class TInvWL_Form {
1053
  } else {
1054
  unset( self::$value[ $data ] );
1055
  }
 
1056
  return $value;
1057
  }
1058
 
@@ -1060,13 +1126,15 @@ class TInvWL_Form {
1060
  * Using for get options for element
1061
  *
1062
  * @param string $data Name value or array values.
1063
- * @param array $option Value.
 
1064
  * @return array
1065
  */
1066
  static function getoption( $data, $option = array() ) {
1067
  if ( isset( self::$option[ $data ] ) ) {
1068
  return self::$option[ $data ];
1069
  }
 
1070
  return $option;
1071
  }
1072
 
@@ -1074,7 +1142,8 @@ class TInvWL_Form {
1074
  * Set options for form element
1075
  *
1076
  * @param string $data Name value or array values.
1077
- * @param array $option Value.
 
1078
  * @return array
1079
  */
1080
  public static function setoptions( $data, $option = array() ) {
@@ -1092,6 +1161,7 @@ class TInvWL_Form {
1092
  } else {
1093
  self::$option[ $data ] = $option;
1094
  }
 
1095
  return $_option;
1096
  }
1097
 
@@ -1099,7 +1169,8 @@ class TInvWL_Form {
1099
  * Remove options for element
1100
  *
1101
  * @param string $data Name value or array values.
1102
- * @param void $option Value.
 
1103
  * @return mixed
1104
  */
1105
  public static function removeoptions( $data, $option = array() ) {
@@ -1112,16 +1183,18 @@ class TInvWL_Form {
1112
  } else {
1113
  unset( self::$option[ $data ] );
1114
  }
 
1115
  return $option;
1116
  }
1117
 
1118
  /**
1119
  * Create input html element with type checkbox and class on/off
1120
  *
1121
- * @param mixed $data Name field or array attributes.
1122
  * @param boolean $checked Value.
1123
- * @param mixed $extra Styling or Custom variable.
1124
- * @param string $value Value for form.
 
1125
  * @return string
1126
  */
1127
  public static function _checkboxonoff( $data = '', $checked = false, $extra = '', $value = 'on' ) {
@@ -1135,6 +1208,7 @@ class TInvWL_Form {
1135
  } else {
1136
  $extra .= sprintf( ' class="%s" ', $class );
1137
  }
 
1138
  return self::_checkbox( $data, $checked, $extra, $value );
1139
  }
1140
 
@@ -1145,6 +1219,7 @@ class TInvWL_Form {
1145
  * @param mixed $value Value.
1146
  * @param mixed $extra Styling or Custom variable.
1147
  * @param array $options Options for form.
 
1148
  * @return string
1149
  */
1150
  public static function _multiradiobox( $data = '', $value = '', $extra = '', $options = array() ) {
@@ -1152,7 +1227,7 @@ class TInvWL_Form {
1152
  $data = array( 'name' => $data );
1153
  }
1154
  $extra_input = '';
1155
- $class = sprintf( ' %s-form-multirbox', self::$_name );
1156
  if ( is_array( $extra ) ) {
1157
  if ( isset( $extra['class'] ) ) {
1158
  $extra['class'] .= $class;
@@ -1166,23 +1241,25 @@ class TInvWL_Form {
1166
  } else {
1167
  $extra .= sprintf( ' class="%s" ', $class );
1168
  }
 
1169
  return sprintf( '<div id="%s" %s >%s</div>', self::__createid( $data['name'] ), self::__atrtostr( $extra ), self::_multiradio( $data, $value, $extra_input, $options ) );
1170
  }
1171
 
1172
  /**
1173
  * Create input html element with type range
1174
  *
1175
- * @param mixed $data Name field or array attributes.
1176
  * @param integer|float $value Value.
1177
- * @param mixed $extra Styling or Custom variable.
 
1178
  * @return string
1179
  */
1180
  public static function _numberrange( $data = '', $value = 0, $extra = array() ) {
1181
  if ( ! is_array( $data ) ) {
1182
  $data = array( 'name' => $data );
1183
  }
1184
- $data['type'] = 'range';
1185
- $class = sprintf( ' %s-form-range', self::$_name );
1186
  if ( is_array( $extra ) ) {
1187
  if ( isset( $extra['class'] ) ) {
1188
  $extra['class'] = $class;
@@ -1192,6 +1269,7 @@ class TInvWL_Form {
1192
  } else {
1193
  $extra .= sprintf( ' class="%s" ', $class );
1194
  }
 
1195
  return self::_text( $data, $value, $extra );
1196
  }
1197
  }
50
  * Call method for returm or output
51
  *
52
  * @param string $name Name function.
53
+ * @param array $arg Parameter function.
54
+ *
55
  * @return mixed
56
  */
57
  public function __call( $name, $arg ) {
58
  $_arg = array(
59
+ 0 => null,
60
+ 1 => null,
61
+ 2 => null,
62
+ 3 => null,
63
  );
64
  foreach ( $_arg as $key => $value ) {
65
  $_arg[ $key ] = array_shift( $arg );
66
  }
67
+ $arg = $_arg;
68
+ $glue = '_';
69
+ $method = sprintf( '%s%s', $glue, $name );
70
  if ( false === strpos( $name, $glue ) ) {
71
  if ( method_exists( __CLASS__, $method ) ) {
72
  $data = call_user_func( array( __CLASS__, $method ), $arg[0], $arg[1], $arg[2], $arg[3] );
77
  return call_user_func( array( __CLASS__, $name ), $arg[0], $arg[1], $arg[2], $arg[3] );
78
  }
79
  }
80
+
81
  return '';
82
  }
83
 
85
  * Call method for returm or output
86
  *
87
  * @param string $name Name function.
88
+ * @param array $arg Parameter function.
89
+ *
90
  * @return mixed
91
  */
92
  public static function __callStatic( $name, $arg ) {
94
  self::$_name = TINVWL_PREFIX;
95
  }
96
  $_arg = array(
97
+ 0 => null,
98
+ 1 => null,
99
+ 2 => null,
100
+ 3 => null,
101
  );
102
  foreach ( $_arg as $key => $value ) {
103
  $_arg[ $key ] = array_shift( $arg );
104
  }
105
+ $arg = $_arg;
106
+ $glue = '_';
107
+ $method = sprintf( '%s%s', $glue, $name );
108
  if ( false === strpos( $name, $glue ) ) {
109
  if ( method_exists( __CLASS__, $method ) ) {
110
  $data = call_user_func( array( __CLASS__, $method ), $arg[0], $arg[1], $arg[2], $arg[3] );
115
  return call_user_func( array( __CLASS__, $name ), $arg[0], $arg[1], $arg[2], $arg[3] );
116
  }
117
  }
118
+
119
  return '';
120
  }
121
 
122
  /**
123
  * Create input html element
124
  *
125
+ * @param mixed $data Name field or array attributes.
126
  * @param string $value Value.
127
+ * @param mixed $extra Styling or Custom variable.
128
+ *
129
  * @return string
130
  */
131
  public static function _text( $data, $value = '', $extra = '' ) {
137
  }
138
  }
139
  if ( $load ) {
140
+ $value = self::getvalue( ( is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
141
  }
142
  $defaults = array(
143
+ 'type' => is_array( $data ) ? @$data['type'] : 'text',
144
+ 'name' => is_array( $data ) ? @$data['name'] : $data,
145
+ 'value' => $value,
146
  );
147
+
148
  return sprintf( '<input %s%s />', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
149
  }
150
 
151
  /**
152
  * Create input html element with type number
153
  *
154
+ * @param mixed $data Name field or array attributes.
155
  * @param integer|float $value Value.
156
+ * @param mixed $extra Styling or Custom variable.
157
+ *
158
  * @return string
159
  */
160
  public static function _number( $data, $value = 0, $extra = '' ) {
168
  } else {
169
  $extra .= sprintf( ' class="%s" ', $class );
170
  }
171
+ if ( ! is_array( $data ) ) {
172
+ $data = array( 'name' => $data );
173
+ }
174
+ $data['type'] = 'number';
175
+
176
  return self::_text( $data, $value, $extra );
177
  }
178
 
180
  * Create color picker
181
  *
182
  * @see colorpicker
183
+ *
184
+ * @param mixed $data Name field or array attributes.
185
  * @param string $value Value.
186
+ * @param mixed $extra Styling or Custom variable.
187
+ *
188
  * @return string
189
  */
190
  public static function _color( $data = '', $value = '', $extra = '' ) {
191
  $class = sprintf( ' %s-form-color', self::$_name );
192
+ $load = true;
193
  if ( is_array( $extra ) ) {
194
  if ( isset( $extra['class'] ) ) {
195
  $extra['class'] .= $class;
204
  $extra .= sprintf( ' class="%s" ', $class );
205
  }
206
  if ( $load ) {
207
+ $value = self::getvalue( ( is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
208
  }
209
  $defaults = array(
210
+ 'type' => 'text',
211
+ 'name' => is_array( $data ) ? '' : $data,
212
+ 'value' => $value,
213
  );
214
+
215
  return sprintf( '<div class="tinvwl-color-picker"><div class="tinvwl-input-group tinvwl-no-full"><input %s%s /><div class="tinvwl-input-group-btn"><div class="tinvwl-eyedropper"><a href="javascript:void(0);"><i class="ftinvwl ftinvwl-eyedropper"></i></a></div></div></div></div>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
216
  }
217
 
219
  * Create date input
220
  *
221
  * @see jquery-ui-datepicker
222
+ *
223
+ * @param mixed $data Name field or array attributes.
224
  * @param string $value Value.
225
+ * @param mixed $extra Styling or Custom variable.
226
+ *
227
  * @return string
228
  */
229
  public static function _date( $data = '', $value = '', $extra = '' ) {
230
  if ( ! is_array( $data ) ) {
231
  $data = array( 'name' => $data );
232
  }
233
+ $extra_js = '';
234
+ $value = self::getvalue( $data['name'], $value );
235
+ $class = sprintf( ' %s-date', self::$_name );
236
  if ( is_array( $extra ) ) {
237
  if ( isset( $extra['class'] ) ) {
238
  $extra['class'] .= $class;
250
  }
251
 
252
  $data['id'] = self::__createid( $data['name'] );
253
+
254
  return sprintf( "%s<script type=\"text/javascript\">jQuery(document).ready(function($){ $('#%s').datepicker({%s})});</script>", self::_text( $data, $value, $extra ), $data['id'], self::__atrtostrjs( $extra_js ) );
255
  }
256
 
257
  /**
258
  * Create select html element with time period
259
  *
260
+ * @param mixed $data Name field or array attributes.
261
  * @param intger $value Value.
262
+ * @param mixed $extra Styling or Custom variable.
263
+ *
264
  * @return string
265
  */
266
  public static function _time( $data = '', $value = '', $extra = '' ) {
275
  $extra .= sprintf( ' class="%s"', $class );
276
  }
277
  $options = array();
278
+ for ( $i = 0; $i < 24; $i ++ ) {
279
  $options[ $i ] = sprintf( '%02d:00', $i );
280
  }
281
+
282
  return self::_select( $data, intval( $value ), $extra, $options );
283
  }
284
 
285
  /**
286
  * Create textarea html element
287
  *
288
+ * @param mixed $data Name field or array attributes.
289
  * @param string $value Value.
290
+ * @param mixed $extra Styling or Custom variable.
291
+ *
292
  * @return string
293
  */
294
  public static function _textarea( $data = '', $value = '', $extra = '' ) {
295
+ $value = self::getvalue( ( is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
296
+ $defaults = array(
297
+ 'name' => is_array( $data ) ? '' : $data,
298
+ 'cols' => '40',
299
+ 'rows' => '20',
300
  );
301
+
302
  return sprintf( '<textarea %s%s>%s</textarea>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ), esc_textarea( $value ) );
303
  }
304
 
305
  /**
306
  * Output wysiwyg editor
307
  *
308
+ * @param mixed $data Name field or array attributes.
309
  * @param string $value Value.
310
+ * @param array $extra Styling or Custom variable.
311
  */
312
  public static function editor( $data = '', $value = '', $extra = array() ) {
313
  if ( ! is_array( $data ) ) {
314
  $data = array( 'name' => $data );
315
  }
316
+ $value = self::getvalue( $data['name'], $value );
317
+ $data['id'] = self::__createid( $data['name'] );
318
+ $extra['textarea_name'] = $data['name'];
319
  wp_editor( $value, $data['id'], $extra );
320
  }
321
 
322
  /**
323
  * Create input html element with type checkbox
324
  *
325
+ * @param mixed $data Name field or array attributes.
326
  * @param boolean $checked Value.
327
+ * @param mixed $extra Styling or Custom variable.
328
+ * @param string $value Value for form.
329
+ *
330
  * @return string
331
  */
332
  public static function _checkbox( $data = '', $checked = false, $extra = '', $value = '' ) {
338
  }
339
  }
340
  if ( $load ) {
341
+ $checked = self::getvalue( ( is_array( $data ) ? @$data['name'] : $data ), $checked ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
342
+ $value = self::getoption( ( is_array( $data ) ? @$data['name'] : $data ), $value ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
343
  }
344
  if ( is_array( $value ) ) {
345
  $value = array_shift( $value );
346
  }
347
  if ( ! is_bool( $checked ) ) {
348
+ $checked = ( $checked == $value ) ? true : false; // WPCS: loose comparison ok.
349
  }
350
 
351
  $defaults = array(
352
+ 'type' => 'checkbox',
353
+ 'name' => ( ! is_array( $data ) ? $data : '' ),
354
+ 'value' => esc_html( $value ),
355
  );
356
  if ( is_array( $data ) && array_key_exists( 'checked', $data ) ) {
357
  $checked = $data['checked'];
367
  } else {
368
  unset( $defaults['checked'] );
369
  }
370
+
371
  return sprintf( '<input %s%s />', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ) );
372
  }
373
 
374
  /**
375
  * Create input html element with type radio
376
  *
377
+ * @param mixed $data Name field or array attributes.
378
  * @param boolean $checked Value.
379
+ * @param mixed $extra Styling or Custom variable.
380
+ * @param string $value Value for form.
381
+ *
382
  * @return string
383
  */
384
  public static function _radio( $data = '', $checked = false, $extra = '', $value = '' ) {
386
  $data = array( 'name' => $data );
387
  }
388
  $data['type'] = 'radio';
389
+
390
  return self::_checkbox( $data, $checked, $extra, $value );
391
  }
392
 
397
  * @param mixed $value Value.
398
  * @param mixed $extra Styling or Custom variable.
399
  * @param array $options Options for form.
400
+ *
401
  * @return string
402
  */
403
  public static function _select( $data = '', $value = array(), $extra = '', $options = array() ) {
404
  $defaults = array();
405
  if ( ! is_array( $data ) ) {
406
+ $data = array( 'name' => $data );
407
+ $defaults = array( 'name' => $data );
408
  }
409
  $load = true;
410
  if ( is_array( $extra ) ) {
424
  $options = array( $options );
425
  }
426
 
427
+ $extra = self::__atrtostr( $extra );
428
+ $multiple = ( count( $value ) > 1 && false === stripos( $extra, 'multiple' ) ) ? ' multiple="multiple"' : '';
429
+ $form = '';
430
  foreach ( $options as $key => $val ) {
431
  $key = (string) $key;
432
  if ( is_array( $val ) ) {
440
  }
441
  $form .= sprintf( '<optgroup label="%s" >%s</optgroup>', esc_attr( $key ), esc_html( $opt ) );
442
  } else {
443
+ $sel = in_array( $key, $value ) ? ' selected="selected"' : ''; // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
444
  $form .= sprintf( '<option value="%s"%s>%s</option>', esc_attr( $key ), $sel, esc_html( $val ) );
445
  }
446
  }
451
  /**
452
  * Create select html element
453
  *
454
+ * @param mixed $data Name field or array attributes.
455
  * @param string $value Value.
456
+ * @param mixed $extra Styling or Custom variable.
457
+ * @param array $options Options for form.
458
+ *
459
  * @return string
460
  */
461
  public static function _previewselect( $data = '', $value = '', $extra = '', $options = array() ) {
462
  if ( ! is_array( $data ) ) {
463
  $data = array( 'name' => $data );
464
  }
465
+ $class = sprintf( ' %s-form-preview-select', self::$_name );
466
+ $extra_select = array( 'class' => 'form-control' );
467
+ $extra_button = array();
468
+ $extra_url = '';
469
+ $load = true;
470
  if ( is_array( $extra ) ) {
471
  if ( isset( $extra['load'] ) ) {
472
  $load = (bool) $extra['load'];
500
  }
501
  if ( is_array( $extra_button ) ) {
502
  $extra_button['class'] = 'tinvwl-btn smaller';
503
+ $extra_button['href'] = sprintf( $extra_url, $value );
504
  } else {
505
  $extra_button .= ' class="tinvwl-btn smaller" href="' . sprintf( $extra_url, $value );
506
  }
507
+
508
  return sprintf( '<div class="tinvwl-input-group %s">%s<div class="tinvwl-input-group-btn">%s</div></div>', $class, self::_select( $data, $value, $extra_select, $options ), self::_button( $data, __( 'Preview', 'ti-woocommerce-wishlist' ), $extra_button ) );
509
  }
510
 
513
  *
514
  * @param string $data Name field or array attributes.
515
  * @param string $value Value.
516
+ * @param mixed $extra Styling or Custom variable.
517
+ *
518
  * @return string
519
  */
520
  public static function _uploadfile( $data = '', $value = '', $extra = '' ) {
521
  if ( ! is_array( $data ) ) {
522
  $data = array( 'name' => $data );
523
  }
524
+ $value = self::getvalue( $data['name'], $value );
525
+ $extra_field = '';
526
+ $extra_button = '';
527
+ $value_button = '';
528
+ $mimefiles = '';
529
  if ( is_array( $extra ) ) {
530
  if ( isset( $extra['type'] ) ) {
531
  $mimefiles = $extra['type'];
563
  $extra_button .= self::__atrtostr( $extra );
564
  }
565
  } else {
566
+ $extra_button = $extra_field = $extra;
567
  } // End if().
568
  if ( ! is_array( $mimefiles ) ) {
569
  $mimefiles = array( $mimefiles );
570
  }
571
+ $mimefiles = array_filter( $mimefiles );
572
+ $mimefiles = wp_json_encode( $mimefiles );
573
 
574
  wp_enqueue_media();
575
+
576
+ return sprintf( "<div class='tinvwl-input-group'>%s%s<div class='tinvwl-input-group-btn'>%s</div></div><script type=\"text/javascript\">jQuery(document).ready(function($){var nn='%s';" . ( empty( $value ) ? "$('.' + nn + '-preview').hide();" : "" ) . "$('input[name=\"'+nn+'-btn\"]').click(function(e){e.preventDefault();var i=wp.media({multiple:false, library:{type:{$mimefiles}}}).open().on('select',function(e){var u=i.state().get('selection').first();var iu=u.toJSON().url;$('input[name=\"'+nn+'\"]').val(iu);$('.' + nn + '-preview').show();$('.' + nn + '-preview span img').attr('src', iu);});});});</script>", // @codingStandardsIgnoreLine Squiz.Strings.DoubleQuoteUsage.NotRequired
577
+ '<div class="' . $data['name'] . '-preview tinvwl-input-group-btn"><div class="tinvwl-icon-preview"><span>' . ( ! empty( $value ) ? '<img src="' . $value . '" />' : '' ) . '</span></div></div>', self::_text( $data, $value, $extra_field ), self::_text( array(
578
+ 'name' => $data['name'] . '-btn',
579
+ 'type' => 'button',
580
+ 'class' => 'tinvwl-btn white smaller',
581
  ), $value_button, $extra_button ),
582
  $data['name']
583
  );
590
  * @param mixed $value Value.
591
  * @param mixed $extra Styling or Custom variable.
592
  * @param array $options Options for form.
593
+ *
594
  * @return string
595
  */
596
  public static function _multiselect( $data = '', $value = array(), $extra = '', $options = array() ) {
598
  if ( stripos( $extra, 'multiple' ) === false ) {
599
  $extra .= ' multiple="multiple"';
600
  }
601
+
602
  return self::_select( $data, $value, $extra, $options );
603
  }
604
 
609
  * @param mixed $value Value.
610
  * @param mixed $extra Styling or Custom variable.
611
  * @param array $options Options for form.
612
+ *
613
  * @return string
614
  */
615
  public static function _multicheckbox( $data = '', $value = array(), $extra = '', $options = array() ) {
627
  if ( ! is_array( $data ) ) {
628
  $data = array( 'name' => $data );
629
  }
630
+ $value = self::getvalue( $data['name'], $value );
631
  $options = self::getoption( $data['name'], $options );
632
  if ( ! is_array( $value ) ) {
633
  $value = array( $value );
636
  if ( ! is_array( $options ) ) {
637
  $options = array( $options );
638
  }
639
+ $before = '';
640
+ $after = '';
641
  if ( is_array( $extra ) ) {
642
  if ( isset( $extra['before'] ) ) {
643
  $before = sprintf( '<div class="%s-before">%s</div>', self::$_name, $extra['before'] );
648
  unset( $extra['after'] );
649
  }
650
  }
651
+ $i = 0;
652
+ $name = $data['name'];
653
  foreach ( $options as $key => $_data ) {
654
+ $data['name'] = $name . '[' . $i . ']';
655
+ $i ++;
656
+ $data['id'] = self::__createid( $data['name'] . $key );
657
+ $_form = self::_checkbox( $data, in_array( $key, $value ), array( 'load' => false ), esc_html( $key ) ); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
658
+ $options [ $key ] = self::_label( $data['id'], $_data, array(
659
  'before' => $_form,
660
  ) );
661
  }
662
  $glue = '</li><li>';
663
+
664
  return sprintf( '<div %s >%s<ul class="list"><li>%s</li></ul>%s</div>', self::__atrtostr( $extra ), $before, implode( $glue, $options ), $after );
665
  }
666
 
671
  * @param mixed $value Value.
672
  * @param mixed $extra Styling or Custom variable.
673
  * @param array $options Options for form.
674
+ *
675
  * @return string
676
  */
677
  public static function _multiradio( $data = '', $value = '', $extra = '', $options = array() ) {
678
  if ( ! is_array( $data ) ) {
679
  $data = array( 'name' => $data );
680
  }
681
+ $value = self::getvalue( $data['name'], $value );
682
  $options = self::getoption( $data['name'], $options );
683
  if ( ! is_array( $value ) ) {
684
  $value = array( $value );
699
  }
700
  $form = '';
701
  foreach ( $options as $key => $_data ) {
702
+ $data['id'] = self::__createid( $data['name'] . $key );
703
+ $_form = self::_radio( $data, in_array( $key, $value ), $extra, esc_html( $key ) ); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
704
+ $form .= self::_label( $data['id'], $_data, array(
705
  'before' => $_form,
706
  ) );
707
+ $form .= $separator;
708
  }
709
+
710
  return $form;
711
  }
712
 
716
  * @param mixed $data Name field or array attributes.
717
  * @param array $value Value.
718
  * @param array $extra Styling or Custom variable.
719
+ *
720
  * @return string
721
  */
722
  public static function _timeperiod( $data = '', $value = array(), $extra = array() ) {
723
  if ( ! is_array( $data ) ) {
724
  $data = array( 'name' => $data );
725
  }
726
+ $label = array( '', '' );
727
  $label_extra = array( '', '' );
728
+ $value = (array) self::getvalue( $data['name'], $value );
729
+ $separator = ' ';
730
  if ( is_array( $extra ) ) {
731
  if ( isset( $extra['separator'] ) ) {
732
  $separator = $extra['separator'];
735
  if ( isset( $extra['label'] ) ) {
736
  $label_extra = $extra['label'];
737
  unset( $extra['label'] );
738
+ for ( $i = 0; $i < count( $label ); $i ++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
739
  if ( isset( $label_extra[ $i ]['text'] ) ) {
740
  $label[ $i ] = $label_extra[ $i ]['text'];
741
  unset( $label_extra[ $i ]['text'] );
747
  $extra = array( 'load' => false );
748
  }
749
  $form = array();
750
+ for ( $i = 0; $i < count( $label ); $i ++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
751
+ $_data = $data;
752
+ $_data['name'] .= "[$i]";
753
+ $label_extra[ $i ]['after'] = self::_time( $_data, ( isset( $value[ $i ] ) ? $value[ $i ] : '' ), $extra );
754
+ $form[] = self::_label( $_data['name'], $label[ $i ], $label_extra[ $i ] );
755
  }
756
  $form = sprintf( '<div class="%s-timeperiod">%s</div>', self::$_name, implode( $separator, $form ) );
757
+
758
  return $form;
759
  }
760
 
764
  * @param mixed $data Name field or array attributes.
765
  * @param array $value Value.
766
  * @param array $extra Styling or Custom variable.
767
+ *
768
  * @return string
769
  */
770
  public static function _dateperiod( $data = '', $value = array(), $extra = array() ) {
771
  if ( ! is_array( $data ) ) {
772
  $data = array( 'name' => $data );
773
  }
774
+ $label = array( '', '' );
775
  $label_extra = array( '', '' );
776
+ $value = (array) self::getvalue( $data['name'], $value );
777
+ $separator = ' ';
778
  if ( is_array( $extra ) ) {
779
  if ( isset( $extra['separator'] ) ) {
780
  $separator = $extra['separator'];
783
  if ( isset( $extra['label'] ) ) {
784
  $label_extra = $extra['label'];
785
  unset( $extra['label'] );
786
+ for ( $i = 0; $i < count( $label ); $i ++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
787
  if ( isset( $label_extra[ $i ]['text'] ) ) {
788
  $label[ $i ] = $label_extra[ $i ]['text'];
789
  unset( $label_extra[ $i ]['text'] );
795
  $extra = array( 'load' => false );
796
  }
797
  $form = array();
798
+ for ( $i = 0; $i < count( $label ); $i ++ ) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
799
+ $_data = $data;
800
+ $_data['name'] .= "[$i]";
801
+ $_data['id'] = self::__createid( $data['name'] . '[' . ( $i ? 0 : 1 ) . ']' );
802
+ $extra['date']['onClose'] = sprintf( "function(selectedDate){ $('#%s').datepicker('option','%sDate',selectedDate);}", $_data['id'], ( $i ? 'max' : 'min' ) );
803
+ $label_extra[ $i ]['after'] = self::_date( $_data, ( isset( $value[ $i ] ) ? $value[ $i ] : '' ), $extra );
804
+ $form[] = self::_label( $_data['name'], $label[ $i ], $label_extra[ $i ] );
805
  }
806
  $form = sprintf( '<div class="%s-dateperiod">%s</div>', self::$_name, implode( $separator, $form ) );
807
+
808
  return $form;
809
  }
810
 
813
  *
814
  * @param string $data Name field or array attributes.
815
  * @param string $html HTML text.
816
+ * @param mixed $extra Styling or Custom variable.
817
+ *
818
  * @return string
819
  */
820
  public static function _html( $data = '', $html = '', $extra = '' ) {
823
  $html = str_replace( '{' . $key . '}', (string) $value, $html );
824
  }
825
  }
826
+
827
  return $html;
828
  }
829
 
830
  /**
831
  * Create button html element
832
  *
833
+ * @param mixed $data Name field or array attributes.
834
  * @param string $value Value.
835
+ * @param mixed $extra Styling or Custom variable.
836
+ *
837
  * @return type
838
  */
839
  public static function _button( $data = '', $value = '', $extra = '' ) {
840
  $defaults = array(
841
+ 'type' => 'button',
842
+ 'name' => is_array( $data ) ? '' : $data,
843
+ 'value' => esc_attr( $value ),
844
  );
845
+
846
  return sprintf( '<button %s%s>%s</button>', self::__parseatr( $data, $defaults ), self::__atrtostr( $extra ), $value );
847
  }
848
 
849
  /**
850
  * Create quick submit button html element
851
  *
852
+ * @param mixed $data Name field or array attributes.
853
  * @param string $value Value.
854
+ * @param mixed $extra Styling or Custom variable.
855
+ *
856
  * @return type
857
  */
858
  public static function _button_submit_quick( $data = '', $value = '', $extra = '' ) {
862
  /**
863
  * Create submit button html element
864
  *
865
+ * @param mixed $data Name field or array attributes.
866
  * @param string $value Value.
867
+ * @param mixed $extra Styling or Custom variable.
868
+ *
869
  * @return type
870
  */
871
  public static function _button_submit( $data = '', $value = '', $extra = '' ) {
873
  $data = array( 'name' => $data );
874
  }
875
  $data['type'] = 'submit';
876
+
877
  return self::_button( $data, $value, $extra );
878
  }
879
 
882
  *
883
  * @param string $data Name field or array attributes.
884
  * @param string $value Value.
885
+ * @param array $extra Styling or Custom variable.
886
+ *
887
  * @return string
888
  */
889
  public static function _label( $data = '', $value = '', $extra = array() ) {
909
  $attr .= sprintf( ' %s="%s"', $key, $val );
910
  }
911
  }
912
+
913
  return sprintf( '<label %s>%s%s%s</label>', $attr, $before, $value, $after );
914
  }
915
 
918
  *
919
  * @param string $name Name field.
920
  * @param string $separator Separator name.
921
+ *
922
  * @return string
923
  */
924
  private static function __createid( $name = '', $separator = '_' ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
926
  if ( false === strpos( $name, self::$_name ) ) {
927
  $name = self::$_name . $separator . $name;
928
  }
929
+
930
  return $name;
931
  }
932
 
936
  *
937
  * @param mixed $attributes New attributes for element.
938
  * @param array $default Default attributes for element.
939
+ *
940
  * @return string
941
  */
942
  private static function __parseatr( $attributes, $default ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
966
  }
967
  $att .= sprintf( '%s="%s" ', $key, $val );
968
  }
969
+
970
  return $att;
971
  }
972
 
975
  * Create attribute string for html element
976
  *
977
  * @param mixed $attributes New attributes for element.
978
+ *
979
  * @return string
980
  */
981
  static function __atrtostr( $attributes ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
996
  }
997
  $atts .= sprintf( '%s="%s" ', $key, $val );
998
  }
999
+
1000
  return $atts;
1001
  }
1002
+
1003
  return '';
1004
  }
1005
 
1008
  * Create attribute string for javascript object.
1009
  *
1010
  * @param mixed $attributes New attributes for element.
1011
+ *
1012
  * @return string
1013
  */
1014
  static function __atrtostrjs( $attributes ) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
1029
  }
1030
  $atts .= sprintf( '%s: %s,', $key, $val );
1031
  }
1032
+
1033
  return $atts;
1034
  }
1035
+
1036
  return '';
1037
  }
1038
 
1042
  * @return string
1043
  */
1044
  private static function __rndmane() { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore
1045
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
1046
+ $data = '';
1047
+ $length = rand( 4, 10 );
1048
+ for ( $i = 0; $i < $length; $i ++ ) {
1049
  $data .= $characters[ rand( 0, strlen( $characters ) - 1 ) ];
1050
  }
1051
+
1052
  return $data;
1053
  }
1054
 
1056
  * Using for get value for element
1057
  *
1058
  * @param string $data Name value or array values.
1059
+ * @param mixed $value Value.
1060
+ *
1061
  * @return mixed
1062
  */
1063
  static function getvalue( $data, $value = '' ) {
1077
  * Set value for form element
1078
  *
1079
  * @param string $data Name value or array values.
1080
+ * @param mixed $value Value.
1081
+ *
1082
  * @return mixed
1083
  */
1084
  public static function setvalue( $data, $value = '' ) {
1096
  } else {
1097
  self::$value[ $data ] = $value;
1098
  }
1099
+
1100
  return $_value;
1101
  }
1102
 
1104
  * Remove value for element
1105
  *
1106
  * @param string $data Name value or array values.
1107
+ * @param void $value Value.
1108
+ *
1109
  * @return mixed
1110
  */
1111
  public static function removevalue( $data, $value = '' ) {
1118
  } else {
1119
  unset( self::$value[ $data ] );
1120
  }
1121
+
1122
  return $value;
1123
  }
1124
 
1126
  * Using for get options for element
1127
  *
1128
  * @param string $data Name value or array values.
1129
+ * @param array $option Value.
1130
+ *
1131
  * @return array
1132
  */
1133
  static function getoption( $data, $option = array() ) {
1134
  if ( isset( self::$option[ $data ] ) ) {
1135
  return self::$option[ $data ];
1136
  }
1137
+
1138
  return $option;
1139
  }
1140
 
1142
  * Set options for form element
1143
  *
1144
  * @param string $data Name value or array values.
1145
+ * @param array $option Value.
1146
+ *
1147
  * @return array
1148
  */
1149
  public static function setoptions( $data, $option = array() ) {
1161
  } else {
1162
  self::$option[ $data ] = $option;
1163
  }
1164
+
1165
  return $_option;
1166
  }
1167
 
1169
  * Remove options for element
1170
  *
1171
  * @param string $data Name value or array values.
1172
+ * @param void $option Value.
1173
+ *
1174
  * @return mixed
1175
  */
1176
  public static function removeoptions( $data, $option = array() ) {
1183
  } else {
1184
  unset( self::$option[ $data ] );
1185
  }
1186
+
1187
  return $option;
1188
  }
1189
 
1190
  /**
1191
  * Create input html element with type checkbox and class on/off
1192
  *
1193
+ * @param mixed $data Name field or array attributes.
1194
  * @param boolean $checked Value.
1195
+ * @param mixed $extra Styling or Custom variable.
1196
+ * @param string $value Value for form.
1197
+ *
1198
  * @return string
1199
  */
1200
  public static function _checkboxonoff( $data = '', $checked = false, $extra = '', $value = 'on' ) {
1208
  } else {
1209
  $extra .= sprintf( ' class="%s" ', $class );
1210
  }
1211
+
1212
  return self::_checkbox( $data, $checked, $extra, $value );
1213
  }
1214
 
1219
  * @param mixed $value Value.
1220
  * @param mixed $extra Styling or Custom variable.
1221
  * @param array $options Options for form.
1222
+ *
1223
  * @return string
1224
  */
1225
  public static function _multiradiobox( $data = '', $value = '', $extra = '', $options = array() ) {
1227
  $data = array( 'name' => $data );
1228
  }
1229
  $extra_input = '';
1230
+ $class = sprintf( ' %s-form-multirbox', self::$_name );
1231
  if ( is_array( $extra ) ) {
1232
  if ( isset( $extra['class'] ) ) {
1233
  $extra['class'] .= $class;
1241
  } else {
1242
  $extra .= sprintf( ' class="%s" ', $class );
1243
  }
1244
+
1245
  return sprintf( '<div id="%s" %s >%s</div>', self::__createid( $data['name'] ), self::__atrtostr( $extra ), self::_multiradio( $data, $value, $extra_input, $options ) );
1246
  }
1247
 
1248
  /**
1249
  * Create input html element with type range
1250
  *
1251
+ * @param mixed $data Name field or array attributes.
1252
  * @param integer|float $value Value.
1253
+ * @param mixed $extra Styling or Custom variable.
1254
+ *
1255
  * @return string
1256
  */
1257
  public static function _numberrange( $data = '', $value = 0, $extra = array() ) {
1258
  if ( ! is_array( $data ) ) {
1259
  $data = array( 'name' => $data );
1260
  }
1261
+ $data['type'] = 'range';
1262
+ $class = sprintf( ' %s-form-range', self::$_name );
1263
  if ( is_array( $extra ) ) {
1264
  if ( isset( $extra['class'] ) ) {
1265
  $extra['class'] = $class;
1269
  } else {
1270
  $extra .= sprintf( ' class="%s" ', $class );
1271
  }
1272
+
1273
  return self::_text( $data, $value, $extra );
1274
  }
1275
  }
languages/ti-woocommerce-wishlist.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: WooCommerce Wishlist Plugin {{ VERSION }}\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/ti-woocommerce-wishlist\n"
8
- "POT-Creation-Date: 2018-09-16 14:55:48+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -41,296 +41,300 @@ msgstr ""
41
  msgid "Template Custom CSS"
42
  msgstr ""
43
 
44
- #: admin/basestyle.helper.php:114 admin/settings/general.class.php:712
45
  msgid "Save Settings"
46
  msgstr ""
47
 
48
- #: admin/basestyle.helper.php:120 admin/settings/general.class.php:718
49
  msgid "Reset"
50
  msgstr ""
51
 
52
- #: admin/basestyle.helper.php:126 admin/settings/general.class.php:724
53
  msgid "Save"
54
  msgstr ""
55
 
56
- #: admin/settings/general.class.php:34 admin/settings/general.class.php:57
57
  msgid "General Settings"
58
  msgstr ""
59
 
60
- #: admin/settings/general.class.php:58
 
 
 
 
61
  msgid ""
62
  "Wishlist page needs to be selected so the plugin knows where it is. This "
63
  "page should be created upon installation of the plugin, if not you will "
64
  "need to create it manually."
65
  msgstr ""
66
 
67
- #: admin/settings/general.class.php:64 views/wizard/step-page.php:27
68
  msgid "Default Wishlist Name"
69
  msgstr ""
70
 
71
- #: admin/settings/general.class.php:70
72
  msgid "Wishlist Page"
73
  msgstr ""
74
 
75
- #: admin/settings/general.class.php:78
76
  msgid "Require Login"
77
  msgstr ""
78
 
79
- #: admin/settings/general.class.php:79
80
  msgid "Disallows guests to use Wishlist functionality until they sign-in."
81
  msgstr ""
82
 
83
- #: admin/settings/general.class.php:88
84
  msgid "Redirect to Login Page"
85
  msgstr ""
86
 
87
- #: admin/settings/general.class.php:89
88
  msgid ""
89
  "Currently this option could not be changed because \"Show successful notice "
90
  "in popup\" is disabled. Guests will be redirected automatically to a login "
91
  "page."
92
  msgstr ""
93
 
94
- #: admin/settings/general.class.php:89
95
  msgid ""
96
  "If enabled, guests will be redirected to a login page once clicking the "
97
  "\"Add to Wishlist\" button or \"Wishlist Products Counter\" link. Otherwise "
98
  "a popup with login required notice will appear."
99
  msgstr ""
100
 
101
- #: admin/settings/general.class.php:96
102
  msgid "Show Link to Wishlist in my account"
103
  msgstr ""
104
 
105
- #: admin/settings/general.class.php:102
106
  msgid "Remove Product from Wishlist if added to cart"
107
  msgstr ""
108
 
109
- #: admin/settings/general.class.php:109 admin/settings/general.class.php:228
110
  msgid "Redirect to the checkout page from Wishlist if added to cart"
111
  msgstr ""
112
 
113
- #: admin/settings/general.class.php:115 admin/settings/general.class.php:235
114
  msgid "Remove by anyone"
115
  msgstr ""
116
 
117
- #: admin/settings/general.class.php:122
118
  msgid "Remove product from Wishlist on second click"
119
  msgstr ""
120
 
121
- #: admin/settings/general.class.php:136
122
  msgid "Show successful notice in popup"
123
  msgstr ""
124
 
125
- #: admin/settings/general.class.php:137
126
  msgid ""
127
  "This option allows to show/hide a popup with successful or error notices "
128
  "after addition or removing products from a Wishlist."
129
  msgstr ""
130
 
131
- #: admin/settings/general.class.php:147
132
  msgid "\"View Wishlist\" button Text"
133
  msgstr ""
134
 
135
- #: admin/settings/general.class.php:154
136
  msgid "Redirect to Wishlist"
137
  msgstr ""
138
 
139
- #: admin/settings/general.class.php:155
140
  msgid ""
141
  "If enabled, user will be redirected to wishlist page after 5 sec from "
142
  "adding product to wishlist."
143
  msgstr ""
144
 
145
- #: admin/settings/general.class.php:162
146
  msgid "\"Product added to Wishlist\" Text"
147
  msgstr ""
148
 
149
- #: admin/settings/general.class.php:169
150
  msgid "\"Product already in Wishlist\" Text"
151
  msgstr ""
152
 
153
- #: admin/settings/general.class.php:170
154
  msgid ""
155
  "This notification will be shown if user will try to add a product that is "
156
  "already in the wishlist."
157
  msgstr ""
158
 
159
- #: admin/settings/general.class.php:177
160
  msgid "\"Product removed from Wishlist\" Text"
161
  msgstr ""
162
 
163
- #: admin/settings/general.class.php:178
164
  msgid ""
165
  "This notification will be shown once the product is removed from Wishlist "
166
  "on a single or a catalog page."
167
  msgstr ""
168
 
169
- #: admin/settings/general.class.php:186
170
  msgid "Wishlist Page Options"
171
  msgstr ""
172
 
173
- #: admin/settings/general.class.php:187 admin/settings/general.class.php:204
174
  msgid "Coming soon"
175
  msgstr ""
176
 
177
- #: admin/settings/general.class.php:194 views/wizard/step-page.php:36
178
  msgid "My Wishlist"
179
  msgstr ""
180
 
181
- #: admin/settings/general.class.php:203
182
  msgid "Wishlist Processing Options"
183
  msgstr ""
184
 
185
- #: admin/settings/general.class.php:211
186
  msgid "Automatic removal"
187
  msgstr ""
188
 
189
- #: admin/settings/general.class.php:218
190
  msgid "Remove condition"
191
  msgstr ""
192
 
193
- #: admin/settings/general.class.php:221
194
  msgid "Add to Cart"
195
  msgstr ""
196
 
197
- #: admin/settings/general.class.php:243
198
  msgid "Product page \"Add to Wishlist\" Button Settings"
199
  msgstr ""
200
 
201
- #: admin/settings/general.class.php:249 admin/settings/general.class.php:373
202
  #: views/wizard/step-button.php:32
203
  msgid "Button position"
204
  msgstr ""
205
 
206
- #: admin/settings/general.class.php:250
207
  msgid ""
208
  "Add this shortcode <code>[ti_wishlists_addtowishlist]</code> anywhere on "
209
  "product page, if you have chosen custom position for product button. You "
210
  "will have to do this for each product."
211
  msgstr ""
212
 
213
- #: admin/settings/general.class.php:253 admin/settings/general.class.php:376
214
  #: includes/wizard.class.php:406
215
  msgid "After \"Add to Cart\" button"
216
  msgstr ""
217
 
218
- #: admin/settings/general.class.php:254 admin/settings/general.class.php:377
219
  #: includes/wizard.class.php:407
220
  msgid "Before \"Add to Cart\" button"
221
  msgstr ""
222
 
223
- #: admin/settings/general.class.php:255 admin/settings/general.class.php:379
224
  #: includes/wizard.class.php:408
225
  msgid "Custom position with code"
226
  msgstr ""
227
 
228
- #: admin/settings/general.class.php:261 admin/settings/general.class.php:386
229
  msgid "Button custom CSS class"
230
  msgstr ""
231
 
232
- #: admin/settings/general.class.php:262 admin/settings/general.class.php:387
233
  msgid ""
234
  "You can add custom CSS classes to button markup separated by spaces. Most "
235
  "of themes using <code>button</code> class for this type of buttons."
236
  msgstr ""
237
 
238
- #: admin/settings/general.class.php:271 admin/settings/general.class.php:396
239
  msgid "\"Add to Wishlist\" Icon"
240
  msgstr ""
241
 
242
- #: admin/settings/general.class.php:272 admin/settings/general.class.php:654
243
  msgid ""
244
  "You can choose from our predefined icons or upload your custom icon. Custom "
245
  "icon size is limited to 16x16 px."
246
  msgstr ""
247
 
248
- #: admin/settings/general.class.php:275 admin/settings/general.class.php:399
249
- #: admin/settings/general.class.php:649
250
  msgid "None"
251
  msgstr ""
252
 
253
- #: admin/settings/general.class.php:276 admin/settings/general.class.php:400
254
- #: admin/settings/general.class.php:650
255
  msgid "Heart"
256
  msgstr ""
257
 
258
- #: admin/settings/general.class.php:277 admin/settings/general.class.php:401
259
- #: admin/settings/general.class.php:651
260
  msgid "Heart+"
261
  msgstr ""
262
 
263
- #: admin/settings/general.class.php:278 admin/settings/general.class.php:402
264
- #: admin/settings/general.class.php:652
265
  msgid "Custom"
266
  msgstr ""
267
 
268
- #: admin/settings/general.class.php:295 admin/settings/general.class.php:418
269
- #: admin/settings/general.class.php:669
270
  msgid "Upload"
271
  msgstr ""
272
 
273
- #: admin/settings/general.class.php:304 admin/settings/general.class.php:427
274
  msgid "\"Add to Wishlist\" Icon Color"
275
  msgstr ""
276
 
277
- #: admin/settings/general.class.php:306 admin/settings/general.class.php:429
278
- #: admin/settings/general.class.php:629 admin/settings/general.class.php:680
279
  msgid "Use font color"
280
  msgstr ""
281
 
282
- #: admin/settings/general.class.php:307 admin/settings/general.class.php:430
283
- #: admin/settings/general.class.php:681
284
  msgid "Black"
285
  msgstr ""
286
 
287
- #: admin/settings/general.class.php:308 admin/settings/general.class.php:431
288
- #: admin/settings/general.class.php:631 admin/settings/general.class.php:682
289
  msgid "White"
290
  msgstr ""
291
 
292
- #: admin/settings/general.class.php:315 admin/settings/general.class.php:438
293
  msgid "Show preloader"
294
  msgstr ""
295
 
296
- #: admin/settings/general.class.php:316 admin/settings/general.class.php:439
297
  msgid ""
298
  "If enabled, applies animation for the button icon until product adding or "
299
  "removing processed. (Usable for servers with slow connection mostly.)"
300
  msgstr ""
301
 
302
- #: admin/settings/general.class.php:322 admin/settings/general.class.php:445
303
  msgid "Show button text"
304
  msgstr ""
305
 
306
- #: admin/settings/general.class.php:337
307
  msgid "\"Add to Wishlist\" button Text"
308
  msgstr ""
309
 
310
- #: admin/settings/general.class.php:343 admin/settings/general.class.php:466
311
  msgid "\"Remove from Wishlist\" Button Text"
312
  msgstr ""
313
 
314
- #: admin/settings/general.class.php:351
315
  msgid "Product listing Button Settings"
316
  msgstr ""
317
 
318
- #: admin/settings/general.class.php:352
319
  msgid ""
320
  "These are separate settings for the \"Add to Wishlist\" button on a product "
321
  "listing (Shop page, categories, etc.). You can also adjust button and text "
322
  "colors, size, etc. in a <code>TI Wishlist > Style Options.</code>"
323
  msgstr ""
324
 
325
- #: admin/settings/general.class.php:358
326
  msgid "Show in Product Listing"
327
  msgstr ""
328
 
329
- #: admin/settings/general.class.php:378
330
  msgid "Above Thumbnail"
331
  msgstr ""
332
 
333
- #: admin/settings/general.class.php:381
334
  msgid ""
335
  "Note: if \"Custom position with code\" option is applied, the \"Add to "
336
  "Wishlist\" button should be added into template using "
@@ -338,79 +342,79 @@ msgid ""
338
  "/><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
339
  msgstr ""
340
 
341
- #: admin/settings/general.class.php:460 views/wizard/step-button.php:41
342
  msgid "\"Add to Wishlist\" Text"
343
  msgstr ""
344
 
345
- #: admin/settings/general.class.php:474
346
  msgid "Wishlist Product Settings"
347
  msgstr ""
348
 
349
- #: admin/settings/general.class.php:475
350
  msgid ""
351
  "Following options allows you to choose what information/functionality to "
352
  "show/enable in wishlist table on wishlist page."
353
  msgstr ""
354
 
355
- #: admin/settings/general.class.php:481
356
  msgid "Show \"Add to Cart\" button"
357
  msgstr ""
358
 
359
- #: admin/settings/general.class.php:488
360
  msgid "\"Add to Cart\" Text"
361
  msgstr ""
362
 
363
- #: admin/settings/general.class.php:495
364
  msgid "Show Unit price"
365
  msgstr ""
366
 
367
- #: admin/settings/general.class.php:501
368
  msgid "Show Stock status"
369
  msgstr ""
370
 
371
- #: admin/settings/general.class.php:507
372
  msgid "Show Date of addition"
373
  msgstr ""
374
 
375
- #: admin/settings/general.class.php:514
376
  msgid "Wishlist Table Settings"
377
  msgstr ""
378
 
379
- #: admin/settings/general.class.php:515
380
  msgid ""
381
  "Following options will help user to manage and add products to cart from "
382
  "wishlist table in bulk."
383
  msgstr ""
384
 
385
- #: admin/settings/general.class.php:521
386
  msgid "Show Checkboxes"
387
  msgstr ""
388
 
389
- #: admin/settings/general.class.php:533
390
  msgid "Show Actions button"
391
  msgstr ""
392
 
393
- #: admin/settings/general.class.php:534
394
  msgid "Bulk actions drop down at the bottom of wishlist table"
395
  msgstr ""
396
 
397
- #: admin/settings/general.class.php:540
398
  msgid "Show \"Add Selected to Cart\" button"
399
  msgstr ""
400
 
401
- #: admin/settings/general.class.php:547
402
  msgid "\"Add Selected to Cart\" Button Text"
403
  msgstr ""
404
 
405
- #: admin/settings/general.class.php:558
406
  msgid "Show \"Add All to Cart\" button"
407
  msgstr ""
408
 
409
- #: admin/settings/general.class.php:565
410
  msgid "\"Add All to Cart\" Button Text"
411
  msgstr ""
412
 
413
- #: admin/settings/general.class.php:578
414
  msgid ""
415
  "Following options enable/disable Social share icons below wishlist table on "
416
  "wishlist page. Wishlist owner can easily share their wishlists using this "
@@ -418,47 +422,47 @@ msgid ""
418
  "shared status, private wishlists can't be shared."
419
  msgstr ""
420
 
421
- #: admin/settings/general.class.php:584
422
  msgid "Social Networks Sharing Options"
423
  msgstr ""
424
 
425
- #: admin/settings/general.class.php:590 views/wizard/step-social.php:26
426
  msgid "Show \"Facebook\" Button"
427
  msgstr ""
428
 
429
- #: admin/settings/general.class.php:596 views/wizard/step-social.php:35
430
  msgid "Show \"Twitter\" Button"
431
  msgstr ""
432
 
433
- #: admin/settings/general.class.php:602 views/wizard/step-social.php:44
434
  msgid "Show \"Pinterest\" Button"
435
  msgstr ""
436
 
437
- #: admin/settings/general.class.php:608 views/wizard/step-social.php:53
438
  msgid "Show \"Google+\" Button"
439
  msgstr ""
440
 
441
- #: admin/settings/general.class.php:614 views/wizard/step-social.php:62
442
  msgid "Show \"Share by Email\" Button"
443
  msgstr ""
444
 
445
- #: admin/settings/general.class.php:620
446
  msgid "\"Share on\" Text"
447
  msgstr ""
448
 
449
- #: admin/settings/general.class.php:626
450
  msgid "Social Icons Color"
451
  msgstr ""
452
 
453
- #: admin/settings/general.class.php:630
454
  msgid "Dark"
455
  msgstr ""
456
 
457
- #: admin/settings/general.class.php:639
458
- msgid "Wishlist Products Counter"
459
  msgstr ""
460
 
461
- #: admin/settings/general.class.php:640
462
  msgid ""
463
  "Add this shortcode <code>[ti_wishlist_products_counter]</code> anywhere "
464
  "into a page content to show Wishlist Counter.<br/><br/>It can be also added "
@@ -466,26 +470,56 @@ msgid ""
466
  "href=\"%s\">Appearance -> Widgets</a> section."
467
  msgstr ""
468
 
469
- #: admin/settings/general.class.php:646
470
- msgid "\"Wishlist\" Icon"
471
  msgstr ""
472
 
473
- #: admin/settings/general.class.php:678
474
- msgid "\"Wishlist\" Icon Color"
475
  msgstr ""
476
 
477
- #: admin/settings/general.class.php:689 public/widget/topwishlist.class.php:36
478
- msgid "Show counter text"
479
  msgstr ""
480
 
481
- #: admin/settings/general.class.php:698 public/widget/topwishlist.class.php:41
482
- msgid "Counter Text"
483
  msgstr ""
484
 
485
- #: admin/settings/general.class.php:699
486
  msgid "Wishlist - "
487
  msgstr ""
488
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
  #: admin/settings/style.class.php:34
490
  msgid "Style Options"
491
  msgstr ""
@@ -702,7 +736,7 @@ msgstr ""
702
  msgid "Normal Buttons Text Hover Color"
703
  msgstr ""
704
 
705
- #: admin/settings/upgrade.class.php:34 admin/tinvwl.class.php:250
706
  #: views/wizard/finish.php:31
707
  msgid "Upgrade to Premium"
708
  msgstr ""
@@ -763,13 +797,13 @@ msgstr ""
763
  msgid "Are you sure you want to reset the settings?"
764
  msgstr ""
765
 
766
- #: admin/tinvwl.class.php:289
767
  msgid ""
768
  "<code>%1$s</code> version <strong style=\"color:red\">%2$s</strong> is out "
769
  "of date. The core version is <strong style=\"color:red\">%3$s</strong>"
770
  msgstr ""
771
 
772
- #: admin/tinvwl.class.php:315
773
  msgid ""
774
  "<strong>Your theme (%1$s) contains outdated copies of some WooCommerce "
775
  "Wishlist Plugin template files.</strong><br> These files may need updating "
@@ -810,7 +844,7 @@ msgstr ""
810
  msgid "Register now &raquo;"
811
  msgstr ""
812
 
813
- #: includes/form.helper.php:479
814
  msgid "Preview"
815
  msgstr ""
816
 
@@ -917,11 +951,11 @@ msgstr ""
917
  msgid "Ready!"
918
  msgstr ""
919
 
920
- #: public/addtowishlist.class.php:171
921
  msgid "Please, login to add products to Wishlist"
922
  msgstr ""
923
 
924
- #: public/addtowishlist.class.php:173
925
  msgid "Login"
926
  msgstr ""
927
 
@@ -955,6 +989,14 @@ msgstr ""
955
  msgid "Show counter icon"
956
  msgstr ""
957
 
 
 
 
 
 
 
 
 
958
  #: public/wishlist/buttons.class.php:60
959
  msgid "Apply %s"
960
  msgstr ""
@@ -963,7 +1005,7 @@ msgstr ""
963
  msgid "Action"
964
  msgstr ""
965
 
966
- #: public/wishlist/buttons.class.php:305 public/wishlist/buttons.class.php:430
967
  msgid ""
968
  "Product %s could not be added to cart because some options are not "
969
  "specified. Please, select some product options before adding the products "
@@ -975,41 +1017,41 @@ msgid_plural ""
975
  msgstr[0] ""
976
  msgstr[1] ""
977
 
978
- #: public/wishlist/buttons.class.php:333
979
  msgid "Actions"
980
  msgstr ""
981
 
982
- #: public/wishlist/buttons.class.php:342
983
  msgid "Remove"
984
  msgstr ""
985
 
986
- #: public/wishlist/buttons.class.php:484 public/wishlist/view.class.php:327
987
  msgid "&ldquo;%s&rdquo;"
988
  msgstr ""
989
 
990
- #: public/wishlist/buttons.class.php:497
991
  msgid "%s has been successfully removed from wishlist."
992
  msgid_plural "%s have been successfully removed from wishlist."
993
  msgstr[0] ""
994
  msgstr[1] ""
995
 
996
- #: public/wishlist/view.class.php:337
997
  msgid "%s has been removed from wishlist."
998
  msgstr ""
999
 
1000
- #: public/wishlist/view.class.php:339
1001
  msgid "%s has not been removed from wishlist."
1002
  msgstr ""
1003
 
1004
- #: public/wishlist/view.class.php:480
1005
  msgid "Return to Wishlist"
1006
  msgstr ""
1007
 
1008
- #: public/wishlist/view.class.php:575
1009
  msgid "Previous Page"
1010
  msgstr ""
1011
 
1012
- #: public/wishlist/view.class.php:584
1013
  msgid "Next Page"
1014
  msgstr ""
1015
 
@@ -1033,31 +1075,39 @@ msgstr ""
1033
  msgid "Wishlist is not found!"
1034
  msgstr ""
1035
 
1036
- #: templates/ti-wishlist-user.php:29 templates/ti-wishlist.php:30
 
 
 
 
1037
  msgid "Product Name"
1038
  msgstr ""
1039
 
1040
- #: templates/ti-wishlist-user.php:30 templates/ti-wishlist.php:31
1041
  msgid "Product"
1042
  msgstr ""
1043
 
1044
- #: templates/ti-wishlist-user.php:32 templates/ti-wishlist.php:33
1045
  msgid "Unit Price"
1046
  msgstr ""
1047
 
1048
- #: templates/ti-wishlist-user.php:35 templates/ti-wishlist.php:36
1049
  msgid "Date Added"
1050
  msgstr ""
1051
 
1052
- #: templates/ti-wishlist-user.php:38 templates/ti-wishlist.php:39
1053
  msgid "Stock Status"
1054
  msgstr ""
1055
 
1056
- #: templates/ti-wishlist-user.php:114 templates/ti-wishlist.php:120
 
 
 
 
1057
  #: tinv-wishlists-function-integration.php:753
1058
- #: tinv-wishlists-function-integration.php:905
1059
- #: tinv-wishlists-function-integration.php:1052
1060
- #: tinv-wishlists-function-integration.php:1266
1061
  msgid "In stock"
1062
  msgstr ""
1063
 
@@ -1085,11 +1135,11 @@ msgstr ""
1085
  msgid "Reload existing Gift Card"
1086
  msgstr ""
1087
 
1088
- #: tinv-wishlists-function-integration.php:1205
1089
  msgid "Out of stock"
1090
  msgstr ""
1091
 
1092
- #: tinv-wishlists-function-integration.php:1611
1093
  msgid "Base price"
1094
  msgstr ""
1095
 
@@ -1339,7 +1389,7 @@ msgstr ""
1339
  msgid "https://templateinvaders.com/"
1340
  msgstr ""
1341
 
1342
- #: public/wishlist/buttons.class.php:302 public/wishlist/buttons.class.php:427
1343
  msgctxt "Item name in quotes"
1344
  msgid "&ldquo;%s&rdquo;"
1345
  msgstr ""
5
  "Project-Id-Version: WooCommerce Wishlist Plugin {{ VERSION }}\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/ti-woocommerce-wishlist\n"
8
+ "POT-Creation-Date: 2018-10-17 16:23:30+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
41
  msgid "Template Custom CSS"
42
  msgstr ""
43
 
44
+ #: admin/basestyle.helper.php:114 admin/settings/general.class.php:777
45
  msgid "Save Settings"
46
  msgstr ""
47
 
48
+ #: admin/basestyle.helper.php:120 admin/settings/general.class.php:783
49
  msgid "Reset"
50
  msgstr ""
51
 
52
+ #: admin/basestyle.helper.php:126 admin/settings/general.class.php:789
53
  msgid "Save"
54
  msgstr ""
55
 
56
+ #: admin/settings/general.class.php:34 admin/settings/general.class.php:73
57
  msgid "General Settings"
58
  msgstr ""
59
 
60
+ #: admin/settings/general.class.php:47
61
+ msgid "Select Your Menu"
62
+ msgstr ""
63
+
64
+ #: admin/settings/general.class.php:74
65
  msgid ""
66
  "Wishlist page needs to be selected so the plugin knows where it is. This "
67
  "page should be created upon installation of the plugin, if not you will "
68
  "need to create it manually."
69
  msgstr ""
70
 
71
+ #: admin/settings/general.class.php:80 views/wizard/step-page.php:27
72
  msgid "Default Wishlist Name"
73
  msgstr ""
74
 
75
+ #: admin/settings/general.class.php:86
76
  msgid "Wishlist Page"
77
  msgstr ""
78
 
79
+ #: admin/settings/general.class.php:94
80
  msgid "Require Login"
81
  msgstr ""
82
 
83
+ #: admin/settings/general.class.php:95
84
  msgid "Disallows guests to use Wishlist functionality until they sign-in."
85
  msgstr ""
86
 
87
+ #: admin/settings/general.class.php:104
88
  msgid "Redirect to Login Page"
89
  msgstr ""
90
 
91
+ #: admin/settings/general.class.php:105
92
  msgid ""
93
  "Currently this option could not be changed because \"Show successful notice "
94
  "in popup\" is disabled. Guests will be redirected automatically to a login "
95
  "page."
96
  msgstr ""
97
 
98
+ #: admin/settings/general.class.php:105
99
  msgid ""
100
  "If enabled, guests will be redirected to a login page once clicking the "
101
  "\"Add to Wishlist\" button or \"Wishlist Products Counter\" link. Otherwise "
102
  "a popup with login required notice will appear."
103
  msgstr ""
104
 
105
+ #: admin/settings/general.class.php:112
106
  msgid "Show Link to Wishlist in my account"
107
  msgstr ""
108
 
109
+ #: admin/settings/general.class.php:118
110
  msgid "Remove Product from Wishlist if added to cart"
111
  msgstr ""
112
 
113
+ #: admin/settings/general.class.php:125 admin/settings/general.class.php:244
114
  msgid "Redirect to the checkout page from Wishlist if added to cart"
115
  msgstr ""
116
 
117
+ #: admin/settings/general.class.php:131 admin/settings/general.class.php:251
118
  msgid "Remove by anyone"
119
  msgstr ""
120
 
121
+ #: admin/settings/general.class.php:138
122
  msgid "Remove product from Wishlist on second click"
123
  msgstr ""
124
 
125
+ #: admin/settings/general.class.php:152
126
  msgid "Show successful notice in popup"
127
  msgstr ""
128
 
129
+ #: admin/settings/general.class.php:153
130
  msgid ""
131
  "This option allows to show/hide a popup with successful or error notices "
132
  "after addition or removing products from a Wishlist."
133
  msgstr ""
134
 
135
+ #: admin/settings/general.class.php:163
136
  msgid "\"View Wishlist\" button Text"
137
  msgstr ""
138
 
139
+ #: admin/settings/general.class.php:170
140
  msgid "Redirect to Wishlist"
141
  msgstr ""
142
 
143
+ #: admin/settings/general.class.php:171
144
  msgid ""
145
  "If enabled, user will be redirected to wishlist page after 5 sec from "
146
  "adding product to wishlist."
147
  msgstr ""
148
 
149
+ #: admin/settings/general.class.php:178
150
  msgid "\"Product added to Wishlist\" Text"
151
  msgstr ""
152
 
153
+ #: admin/settings/general.class.php:185
154
  msgid "\"Product already in Wishlist\" Text"
155
  msgstr ""
156
 
157
+ #: admin/settings/general.class.php:186
158
  msgid ""
159
  "This notification will be shown if user will try to add a product that is "
160
  "already in the wishlist."
161
  msgstr ""
162
 
163
+ #: admin/settings/general.class.php:193
164
  msgid "\"Product removed from Wishlist\" Text"
165
  msgstr ""
166
 
167
+ #: admin/settings/general.class.php:194
168
  msgid ""
169
  "This notification will be shown once the product is removed from Wishlist "
170
  "on a single or a catalog page."
171
  msgstr ""
172
 
173
+ #: admin/settings/general.class.php:202
174
  msgid "Wishlist Page Options"
175
  msgstr ""
176
 
177
+ #: admin/settings/general.class.php:203 admin/settings/general.class.php:220
178
  msgid "Coming soon"
179
  msgstr ""
180
 
181
+ #: admin/settings/general.class.php:210 views/wizard/step-page.php:36
182
  msgid "My Wishlist"
183
  msgstr ""
184
 
185
+ #: admin/settings/general.class.php:219
186
  msgid "Wishlist Processing Options"
187
  msgstr ""
188
 
189
+ #: admin/settings/general.class.php:227
190
  msgid "Automatic removal"
191
  msgstr ""
192
 
193
+ #: admin/settings/general.class.php:234
194
  msgid "Remove condition"
195
  msgstr ""
196
 
197
+ #: admin/settings/general.class.php:237
198
  msgid "Add to Cart"
199
  msgstr ""
200
 
201
+ #: admin/settings/general.class.php:259
202
  msgid "Product page \"Add to Wishlist\" Button Settings"
203
  msgstr ""
204
 
205
+ #: admin/settings/general.class.php:265 admin/settings/general.class.php:389
206
  #: views/wizard/step-button.php:32
207
  msgid "Button position"
208
  msgstr ""
209
 
210
+ #: admin/settings/general.class.php:266
211
  msgid ""
212
  "Add this shortcode <code>[ti_wishlists_addtowishlist]</code> anywhere on "
213
  "product page, if you have chosen custom position for product button. You "
214
  "will have to do this for each product."
215
  msgstr ""
216
 
217
+ #: admin/settings/general.class.php:269 admin/settings/general.class.php:392
218
  #: includes/wizard.class.php:406
219
  msgid "After \"Add to Cart\" button"
220
  msgstr ""
221
 
222
+ #: admin/settings/general.class.php:270 admin/settings/general.class.php:393
223
  #: includes/wizard.class.php:407
224
  msgid "Before \"Add to Cart\" button"
225
  msgstr ""
226
 
227
+ #: admin/settings/general.class.php:271 admin/settings/general.class.php:395
228
  #: includes/wizard.class.php:408
229
  msgid "Custom position with code"
230
  msgstr ""
231
 
232
+ #: admin/settings/general.class.php:277 admin/settings/general.class.php:402
233
  msgid "Button custom CSS class"
234
  msgstr ""
235
 
236
+ #: admin/settings/general.class.php:278 admin/settings/general.class.php:403
237
  msgid ""
238
  "You can add custom CSS classes to button markup separated by spaces. Most "
239
  "of themes using <code>button</code> class for this type of buttons."
240
  msgstr ""
241
 
242
+ #: admin/settings/general.class.php:287 admin/settings/general.class.php:412
243
  msgid "\"Add to Wishlist\" Icon"
244
  msgstr ""
245
 
246
+ #: admin/settings/general.class.php:288 admin/settings/general.class.php:670
247
  msgid ""
248
  "You can choose from our predefined icons or upload your custom icon. Custom "
249
  "icon size is limited to 16x16 px."
250
  msgstr ""
251
 
252
+ #: admin/settings/general.class.php:291 admin/settings/general.class.php:415
253
+ #: admin/settings/general.class.php:665
254
  msgid "None"
255
  msgstr ""
256
 
257
+ #: admin/settings/general.class.php:292 admin/settings/general.class.php:416
258
+ #: admin/settings/general.class.php:666
259
  msgid "Heart"
260
  msgstr ""
261
 
262
+ #: admin/settings/general.class.php:293 admin/settings/general.class.php:417
263
+ #: admin/settings/general.class.php:667
264
  msgid "Heart+"
265
  msgstr ""
266
 
267
+ #: admin/settings/general.class.php:294 admin/settings/general.class.php:418
268
+ #: admin/settings/general.class.php:668
269
  msgid "Custom"
270
  msgstr ""
271
 
272
+ #: admin/settings/general.class.php:311 admin/settings/general.class.php:434
273
+ #: admin/settings/general.class.php:685
274
  msgid "Upload"
275
  msgstr ""
276
 
277
+ #: admin/settings/general.class.php:320 admin/settings/general.class.php:443
278
  msgid "\"Add to Wishlist\" Icon Color"
279
  msgstr ""
280
 
281
+ #: admin/settings/general.class.php:322 admin/settings/general.class.php:445
282
+ #: admin/settings/general.class.php:645 admin/settings/general.class.php:696
283
  msgid "Use font color"
284
  msgstr ""
285
 
286
+ #: admin/settings/general.class.php:323 admin/settings/general.class.php:446
287
+ #: admin/settings/general.class.php:697
288
  msgid "Black"
289
  msgstr ""
290
 
291
+ #: admin/settings/general.class.php:324 admin/settings/general.class.php:447
292
+ #: admin/settings/general.class.php:647 admin/settings/general.class.php:698
293
  msgid "White"
294
  msgstr ""
295
 
296
+ #: admin/settings/general.class.php:331 admin/settings/general.class.php:454
297
  msgid "Show preloader"
298
  msgstr ""
299
 
300
+ #: admin/settings/general.class.php:332 admin/settings/general.class.php:455
301
  msgid ""
302
  "If enabled, applies animation for the button icon until product adding or "
303
  "removing processed. (Usable for servers with slow connection mostly.)"
304
  msgstr ""
305
 
306
+ #: admin/settings/general.class.php:338 admin/settings/general.class.php:461
307
  msgid "Show button text"
308
  msgstr ""
309
 
310
+ #: admin/settings/general.class.php:353
311
  msgid "\"Add to Wishlist\" button Text"
312
  msgstr ""
313
 
314
+ #: admin/settings/general.class.php:359 admin/settings/general.class.php:482
315
  msgid "\"Remove from Wishlist\" Button Text"
316
  msgstr ""
317
 
318
+ #: admin/settings/general.class.php:367
319
  msgid "Product listing Button Settings"
320
  msgstr ""
321
 
322
+ #: admin/settings/general.class.php:368
323
  msgid ""
324
  "These are separate settings for the \"Add to Wishlist\" button on a product "
325
  "listing (Shop page, categories, etc.). You can also adjust button and text "
326
  "colors, size, etc. in a <code>TI Wishlist > Style Options.</code>"
327
  msgstr ""
328
 
329
+ #: admin/settings/general.class.php:374
330
  msgid "Show in Product Listing"
331
  msgstr ""
332
 
333
+ #: admin/settings/general.class.php:394
334
  msgid "Above Thumbnail"
335
  msgstr ""
336
 
337
+ #: admin/settings/general.class.php:397
338
  msgid ""
339
  "Note: if \"Custom position with code\" option is applied, the \"Add to "
340
  "Wishlist\" button should be added into template using "
342
  "/><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
343
  msgstr ""
344
 
345
+ #: admin/settings/general.class.php:476 views/wizard/step-button.php:41
346
  msgid "\"Add to Wishlist\" Text"
347
  msgstr ""
348
 
349
+ #: admin/settings/general.class.php:490
350
  msgid "Wishlist Product Settings"
351
  msgstr ""
352
 
353
+ #: admin/settings/general.class.php:491
354
  msgid ""
355
  "Following options allows you to choose what information/functionality to "
356
  "show/enable in wishlist table on wishlist page."
357
  msgstr ""
358
 
359
+ #: admin/settings/general.class.php:497
360
  msgid "Show \"Add to Cart\" button"
361
  msgstr ""
362
 
363
+ #: admin/settings/general.class.php:504
364
  msgid "\"Add to Cart\" Text"
365
  msgstr ""
366
 
367
+ #: admin/settings/general.class.php:511
368
  msgid "Show Unit price"
369
  msgstr ""
370
 
371
+ #: admin/settings/general.class.php:517
372
  msgid "Show Stock status"
373
  msgstr ""
374
 
375
+ #: admin/settings/general.class.php:523
376
  msgid "Show Date of addition"
377
  msgstr ""
378
 
379
+ #: admin/settings/general.class.php:530
380
  msgid "Wishlist Table Settings"
381
  msgstr ""
382
 
383
+ #: admin/settings/general.class.php:531
384
  msgid ""
385
  "Following options will help user to manage and add products to cart from "
386
  "wishlist table in bulk."
387
  msgstr ""
388
 
389
+ #: admin/settings/general.class.php:537
390
  msgid "Show Checkboxes"
391
  msgstr ""
392
 
393
+ #: admin/settings/general.class.php:549
394
  msgid "Show Actions button"
395
  msgstr ""
396
 
397
+ #: admin/settings/general.class.php:550
398
  msgid "Bulk actions drop down at the bottom of wishlist table"
399
  msgstr ""
400
 
401
+ #: admin/settings/general.class.php:556
402
  msgid "Show \"Add Selected to Cart\" button"
403
  msgstr ""
404
 
405
+ #: admin/settings/general.class.php:563
406
  msgid "\"Add Selected to Cart\" Button Text"
407
  msgstr ""
408
 
409
+ #: admin/settings/general.class.php:574
410
  msgid "Show \"Add All to Cart\" button"
411
  msgstr ""
412
 
413
+ #: admin/settings/general.class.php:581
414
  msgid "\"Add All to Cart\" Button Text"
415
  msgstr ""
416
 
417
+ #: admin/settings/general.class.php:594
418
  msgid ""
419
  "Following options enable/disable Social share icons below wishlist table on "
420
  "wishlist page. Wishlist owner can easily share their wishlists using this "
422
  "shared status, private wishlists can't be shared."
423
  msgstr ""
424
 
425
+ #: admin/settings/general.class.php:600
426
  msgid "Social Networks Sharing Options"
427
  msgstr ""
428
 
429
+ #: admin/settings/general.class.php:606 views/wizard/step-social.php:26
430
  msgid "Show \"Facebook\" Button"
431
  msgstr ""
432
 
433
+ #: admin/settings/general.class.php:612 views/wizard/step-social.php:35
434
  msgid "Show \"Twitter\" Button"
435
  msgstr ""
436
 
437
+ #: admin/settings/general.class.php:618 views/wizard/step-social.php:44
438
  msgid "Show \"Pinterest\" Button"
439
  msgstr ""
440
 
441
+ #: admin/settings/general.class.php:624 views/wizard/step-social.php:53
442
  msgid "Show \"Google+\" Button"
443
  msgstr ""
444
 
445
+ #: admin/settings/general.class.php:630 views/wizard/step-social.php:62
446
  msgid "Show \"Share by Email\" Button"
447
  msgstr ""
448
 
449
+ #: admin/settings/general.class.php:636
450
  msgid "\"Share on\" Text"
451
  msgstr ""
452
 
453
+ #: admin/settings/general.class.php:642
454
  msgid "Social Icons Color"
455
  msgstr ""
456
 
457
+ #: admin/settings/general.class.php:646
458
  msgid "Dark"
459
  msgstr ""
460
 
461
+ #: admin/settings/general.class.php:655
462
+ msgid "Wishlist Product Counter"
463
  msgstr ""
464
 
465
+ #: admin/settings/general.class.php:656
466
  msgid ""
467
  "Add this shortcode <code>[ti_wishlist_products_counter]</code> anywhere "
468
  "into a page content to show Wishlist Counter.<br/><br/>It can be also added "
470
  "href=\"%s\">Appearance -> Widgets</a> section."
471
  msgstr ""
472
 
473
+ #: admin/settings/general.class.php:662
474
+ msgid "\"Wishlist\" Counter Icon"
475
  msgstr ""
476
 
477
+ #: admin/settings/general.class.php:694
478
+ msgid "\"Wishlist\" Counter Icon Color"
479
  msgstr ""
480
 
481
+ #: admin/settings/general.class.php:705
482
+ msgid "Show \"Wishlist\" Counter Text"
483
  msgstr ""
484
 
485
+ #: admin/settings/general.class.php:714
486
+ msgid "\"Wishlist\" Counter Text"
487
  msgstr ""
488
 
489
+ #: admin/settings/general.class.php:715
490
  msgid "Wishlist - "
491
  msgstr ""
492
 
493
+ #: admin/settings/general.class.php:721
494
+ msgid "Add counter to menu"
495
+ msgstr ""
496
+
497
+ #: admin/settings/general.class.php:723
498
+ msgid "You can add a wishlist products counter as item to the selected menu."
499
+ msgstr ""
500
+
501
+ #: admin/settings/general.class.php:732
502
+ msgid "Counter position (Menu item order)"
503
+ msgstr ""
504
+
505
+ #: admin/settings/general.class.php:733
506
+ msgid ""
507
+ "Allows you to add the wishlist counter as a menu item and apply its "
508
+ "position."
509
+ msgstr ""
510
+
511
+ #: admin/settings/general.class.php:744
512
+ msgid "Show number of products in counter"
513
+ msgstr ""
514
+
515
+ #: admin/settings/general.class.php:754
516
+ msgid "Support chat settings"
517
+ msgstr ""
518
+
519
+ #: admin/settings/general.class.php:761
520
+ msgid "Disable support chat"
521
+ msgstr ""
522
+
523
  #: admin/settings/style.class.php:34
524
  msgid "Style Options"
525
  msgstr ""
736
  msgid "Normal Buttons Text Hover Color"
737
  msgstr ""
738
 
739
+ #: admin/settings/upgrade.class.php:34 admin/tinvwl.class.php:253
740
  #: views/wizard/finish.php:31
741
  msgid "Upgrade to Premium"
742
  msgstr ""
797
  msgid "Are you sure you want to reset the settings?"
798
  msgstr ""
799
 
800
+ #: admin/tinvwl.class.php:292
801
  msgid ""
802
  "<code>%1$s</code> version <strong style=\"color:red\">%2$s</strong> is out "
803
  "of date. The core version is <strong style=\"color:red\">%3$s</strong>"
804
  msgstr ""
805
 
806
+ #: admin/tinvwl.class.php:318
807
  msgid ""
808
  "<strong>Your theme (%1$s) contains outdated copies of some WooCommerce "
809
  "Wishlist Plugin template files.</strong><br> These files may need updating "
844
  msgid "Register now &raquo;"
845
  msgstr ""
846
 
847
+ #: includes/form.helper.php:508
848
  msgid "Preview"
849
  msgstr ""
850
 
951
  msgid "Ready!"
952
  msgstr ""
953
 
954
+ #: public/addtowishlist.class.php:172
955
  msgid "Please, login to add products to Wishlist"
956
  msgstr ""
957
 
958
+ #: public/addtowishlist.class.php:174
959
  msgid "Login"
960
  msgstr ""
961
 
989
  msgid "Show counter icon"
990
  msgstr ""
991
 
992
+ #: public/widget/topwishlist.class.php:36
993
+ msgid "Show counter text"
994
+ msgstr ""
995
+
996
+ #: public/widget/topwishlist.class.php:41
997
+ msgid "Counter Text"
998
+ msgstr ""
999
+
1000
  #: public/wishlist/buttons.class.php:60
1001
  msgid "Apply %s"
1002
  msgstr ""
1005
  msgid "Action"
1006
  msgstr ""
1007
 
1008
+ #: public/wishlist/buttons.class.php:306 public/wishlist/buttons.class.php:431
1009
  msgid ""
1010
  "Product %s could not be added to cart because some options are not "
1011
  "specified. Please, select some product options before adding the products "
1017
  msgstr[0] ""
1018
  msgstr[1] ""
1019
 
1020
+ #: public/wishlist/buttons.class.php:334
1021
  msgid "Actions"
1022
  msgstr ""
1023
 
1024
+ #: public/wishlist/buttons.class.php:343 templates/ti-wishlist.php:72
1025
  msgid "Remove"
1026
  msgstr ""
1027
 
1028
+ #: public/wishlist/buttons.class.php:485 public/wishlist/view.class.php:355
1029
  msgid "&ldquo;%s&rdquo;"
1030
  msgstr ""
1031
 
1032
+ #: public/wishlist/buttons.class.php:498
1033
  msgid "%s has been successfully removed from wishlist."
1034
  msgid_plural "%s have been successfully removed from wishlist."
1035
  msgstr[0] ""
1036
  msgstr[1] ""
1037
 
1038
+ #: public/wishlist/view.class.php:365
1039
  msgid "%s has been removed from wishlist."
1040
  msgstr ""
1041
 
1042
+ #: public/wishlist/view.class.php:367
1043
  msgid "%s has not been removed from wishlist."
1044
  msgstr ""
1045
 
1046
+ #: public/wishlist/view.class.php:508
1047
  msgid "Return to Wishlist"
1048
  msgstr ""
1049
 
1050
+ #: public/wishlist/view.class.php:603
1051
  msgid "Previous Page"
1052
  msgstr ""
1053
 
1054
+ #: public/wishlist/view.class.php:612
1055
  msgid "Next Page"
1056
  msgstr ""
1057
 
1075
  msgid "Wishlist is not found!"
1076
  msgstr ""
1077
 
1078
+ #: templates/ti-wishlist-user.php:26 templates/ti-wishlist.php:26
1079
+ msgid "Select all for bulk action"
1080
+ msgstr ""
1081
+
1082
+ #: templates/ti-wishlist-user.php:31 templates/ti-wishlist.php:32
1083
  msgid "Product Name"
1084
  msgstr ""
1085
 
1086
+ #: templates/ti-wishlist-user.php:32 templates/ti-wishlist.php:33
1087
  msgid "Product"
1088
  msgstr ""
1089
 
1090
+ #: templates/ti-wishlist-user.php:34 templates/ti-wishlist.php:35
1091
  msgid "Unit Price"
1092
  msgstr ""
1093
 
1094
+ #: templates/ti-wishlist-user.php:37 templates/ti-wishlist.php:38
1095
  msgid "Date Added"
1096
  msgstr ""
1097
 
1098
+ #: templates/ti-wishlist-user.php:40 templates/ti-wishlist.php:41
1099
  msgid "Stock Status"
1100
  msgstr ""
1101
 
1102
+ #: templates/ti-wishlist-user.php:63 templates/ti-wishlist.php:64
1103
+ msgid "Select for bulk action"
1104
+ msgstr ""
1105
+
1106
+ #: templates/ti-wishlist-user.php:116 templates/ti-wishlist.php:124
1107
  #: tinv-wishlists-function-integration.php:753
1108
+ #: tinv-wishlists-function-integration.php:910
1109
+ #: tinv-wishlists-function-integration.php:1072
1110
+ #: tinv-wishlists-function-integration.php:1286
1111
  msgid "In stock"
1112
  msgstr ""
1113
 
1135
  msgid "Reload existing Gift Card"
1136
  msgstr ""
1137
 
1138
+ #: tinv-wishlists-function-integration.php:1225
1139
  msgid "Out of stock"
1140
  msgstr ""
1141
 
1142
+ #: tinv-wishlists-function-integration.php:1631
1143
  msgid "Base price"
1144
  msgstr ""
1145
 
1389
  msgid "https://templateinvaders.com/"
1390
  msgstr ""
1391
 
1392
+ #: public/wishlist/buttons.class.php:303 public/wishlist/buttons.class.php:428
1393
  msgctxt "Item name in quotes"
1394
  msgid "&ldquo;%s&rdquo;"
1395
  msgstr ""
public/addtowishlist.class.php CHANGED
@@ -145,6 +145,7 @@ class TInvWL_Public_AddToWishlist {
145
  'product_variation' => FILTER_VALIDATE_INT,
146
  'product_type' => FILTER_SANITIZE_STRING,
147
  'product_action' => FILTER_SANITIZE_STRING,
 
148
  ) );
149
 
150
  $wlp = null;
@@ -166,10 +167,10 @@ class TInvWL_Public_AddToWishlist {
166
  $data['icon'] = 'icon_big_times';
167
  if ( tinv_get_option( 'general', 'redirect_require_login' ) ) {
168
  $data['msg'] = array();
169
- $data['force_redirect'] = apply_filters( 'tinvwl_addtowishlist_login_page', wc_get_page_permalink( 'myaccount' ), $post );
170
  } else {
171
  $data['msg'][] = __( 'Please, login to add products to Wishlist', 'ti-woocommerce-wishlist' );
172
- $data['dialog_custom_url'] = apply_filters( 'tinvwl_addtowishlist_login_page', wc_get_page_permalink( 'myaccount' ), $post );
173
  $data['dialog_custom_html'] = '<i class="ftinvwl ftinvwl-key"></i>' . esc_html( __( 'Login', 'ti-woocommerce-wishlist' ) );
174
  }
175
  $data['msg'] = array_unique( $data['msg'] );
@@ -236,6 +237,7 @@ class TInvWL_Public_AddToWishlist {
236
  break;
237
  case 'variable' :
238
  case 'variation' :
 
239
 
240
  if ( $post['product_variation'] ) {
241
  $variation_id = $post['product_variation'];
@@ -372,7 +374,11 @@ class TInvWL_Public_AddToWishlist {
372
  */
373
  function user_wishlist( $product, $wlp = null ) {
374
  $wishlists = $this->wishlist = array();
375
- $vproduct = $product->is_type( 'variation' ) || $product->is_type( 'variable' );
 
 
 
 
376
  $wlp = new TInvWL_Product();
377
  $wishlists = $this->user_wishlists();
378
  $ids = array();
@@ -441,7 +447,10 @@ class TInvWL_Public_AddToWishlist {
441
  $allow = ( ( ! $product->is_purchasable() && '' == $product->get_price() ) || ( $product->is_purchasable() && ! $product->is_in_stock() ) );
442
  }
443
 
444
- if ( 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ) ) {
 
 
 
445
  $get_variations = count( $product->get_children() ) <= apply_filters( 'woocommerce_ajax_variation_threshold', 30, $product );
446
  $available_variations = $get_variations ? $product->get_available_variations() : false;
447
  $allow = ( empty( $available_variations ) && false !== $available_variations );
@@ -495,7 +504,10 @@ class TInvWL_Public_AddToWishlist {
495
 
496
  add_action( 'tinv_wishlist_addtowishlist_button', array( $this, 'button' ) );
497
 
498
- if ( $this->is_loop && 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ) ) {
 
 
 
499
  $this->variation_id = null;
500
  $match_attributes = array();
501
 
@@ -516,7 +528,10 @@ class TInvWL_Public_AddToWishlist {
516
  $data = array(
517
  'class_postion' => sprintf( 'tinvwl-%s-add-to-cart', $this->is_loop ? tinv_get_option( 'add_to_wishlist_catalog', 'position' ) : $position ) . ( $this->is_loop ? ' tinvwl-loop-button-wrapper' : '' ),
518
  'product' => $this->product,
519
- 'variation_id' => ( $this->is_loop && 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ),
 
 
 
520
  'TInvWishlist' => $wishlists,
521
  'button_icon' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'icon' ),
522
  'add_to_wishlist' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'text' ),
@@ -561,7 +576,10 @@ class TInvWL_Public_AddToWishlist {
561
  }
562
  }
563
  $icon .= $icon_class;
564
- $variation_id = ( ( $this->is_loop && 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ) );
 
 
 
565
  foreach ( $this->wishlist as $value ) {
566
  if ( $value['in'] && in_array( $variation_id, $value['in'] ) ) {
567
  $icon .= ' tinvwl-product-in-list';
@@ -586,7 +604,10 @@ class TInvWL_Public_AddToWishlist {
586
 
587
  $icon .= ( tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'show_preloader' ) ) ? ' ftinvwl-animated' : '';
588
 
589
- $content .= sprintf( '<a class="tinvwl_add_to_wishlist_button %s" data-tinv-wl-list="%s" data-tinv-wl-product="%s" data-tinv-wl-productvariation="%s" data-tinv-wl-producttype="%s" data-tinv-wl-action="%s" rel="nofollow">%s</a>', $icon, htmlspecialchars( wp_json_encode( $this->wishlist ) ), ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->id : ( $this->product->is_type( 'variation' ) ? $this->product->get_parent_id() : $this->product->get_id() ) ), ( ( $this->is_loop && 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ) ), ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ), $action, $text );
 
 
 
590
  $content .= apply_filters( 'tinvwl_wishlist_button_after', '' );
591
 
592
  if ( ! empty( $text ) ) {
145
  'product_variation' => FILTER_VALIDATE_INT,
146
  'product_type' => FILTER_SANITIZE_STRING,
147
  'product_action' => FILTER_SANITIZE_STRING,
148
+ 'redirect' => FILTER_SANITIZE_URL,
149
  ) );
150
 
151
  $wlp = null;
167
  $data['icon'] = 'icon_big_times';
168
  if ( tinv_get_option( 'general', 'redirect_require_login' ) ) {
169
  $data['msg'] = array();
170
+ $data['force_redirect'] = apply_filters( 'tinvwl_addtowishlist_login_page', add_query_arg( 'tinvwl_redirect', $post['redirect'], wc_get_page_permalink( 'myaccount' ) ), $post );
171
  } else {
172
  $data['msg'][] = __( 'Please, login to add products to Wishlist', 'ti-woocommerce-wishlist' );
173
+ $data['dialog_custom_url'] = apply_filters( 'tinvwl_addtowishlist_login_page', add_query_arg( 'tinvwl_redirect', $post['redirect'], wc_get_page_permalink( 'myaccount' ) ), $post );
174
  $data['dialog_custom_html'] = '<i class="ftinvwl ftinvwl-key"></i>' . esc_html( __( 'Login', 'ti-woocommerce-wishlist' ) );
175
  }
176
  $data['msg'] = array_unique( $data['msg'] );
237
  break;
238
  case 'variable' :
239
  case 'variation' :
240
+ case 'variable-subscription' :
241
 
242
  if ( $post['product_variation'] ) {
243
  $variation_id = $post['product_variation'];
374
  */
375
  function user_wishlist( $product, $wlp = null ) {
376
  $wishlists = $this->wishlist = array();
377
+ $vproduct = in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), array(
378
+ 'variable',
379
+ 'variation',
380
+ 'variable-subscription'
381
+ ) );
382
  $wlp = new TInvWL_Product();
383
  $wishlists = $this->user_wishlists();
384
  $ids = array();
447
  $allow = ( ( ! $product->is_purchasable() && '' == $product->get_price() ) || ( $product->is_purchasable() && ! $product->is_in_stock() ) );
448
  }
449
 
450
+ if ( in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), array(
451
+ 'variable',
452
+ 'variable-subscription'
453
+ ) ) ) {
454
  $get_variations = count( $product->get_children() ) <= apply_filters( 'woocommerce_ajax_variation_threshold', 30, $product );
455
  $available_variations = $get_variations ? $product->get_available_variations() : false;
456
  $allow = ( empty( $available_variations ) && false !== $available_variations );
504
 
505
  add_action( 'tinv_wishlist_addtowishlist_button', array( $this, 'button' ) );
506
 
507
+ if ( $this->is_loop && in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), array(
508
+ 'variable',
509
+ 'variable-subscription'
510
+ ) ) ) {
511
  $this->variation_id = null;
512
  $match_attributes = array();
513
 
528
  $data = array(
529
  'class_postion' => sprintf( 'tinvwl-%s-add-to-cart', $this->is_loop ? tinv_get_option( 'add_to_wishlist_catalog', 'position' ) : $position ) . ( $this->is_loop ? ' tinvwl-loop-button-wrapper' : '' ),
530
  'product' => $this->product,
531
+ 'variation_id' => ( $this->is_loop && in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ), array(
532
+ 'variable',
533
+ 'variable-subscription'
534
+ ) ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ),
535
  'TInvWishlist' => $wishlists,
536
  'button_icon' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'icon' ),
537
  'add_to_wishlist' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'text' ),
576
  }
577
  }
578
  $icon .= $icon_class;
579
+ $variation_id = ( ( $this->is_loop && in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ), array(
580
+ 'variable',
581
+ 'variable-subscription'
582
+ ) ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ) );
583
  foreach ( $this->wishlist as $value ) {
584
  if ( $value['in'] && in_array( $variation_id, $value['in'] ) ) {
585
  $icon .= ' tinvwl-product-in-list';
604
 
605
  $icon .= ( tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'show_preloader' ) ) ? ' ftinvwl-animated' : '';
606
 
607
+ $content .= sprintf( '<a class="tinvwl_add_to_wishlist_button %s" data-tinv-wl-list="%s" data-tinv-wl-product="%s" data-tinv-wl-productvariation="%s" data-tinv-wl-producttype="%s" data-tinv-wl-action="%s" rel="nofollow">%s</a>', $icon, htmlspecialchars( wp_json_encode( $this->wishlist ) ), ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->id : ( $this->product->is_type( 'variation' ) ? $this->product->get_parent_id() : $this->product->get_id() ) ), ( ( $this->is_loop && in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ), array(
608
+ 'variable',
609
+ 'variable-subscription'
610
+ ) ) ) ? $this->variation_id : ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ) ), ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $this->product->product_type : $this->product->get_type() ), $action, $text );
611
  $content .= apply_filters( 'tinvwl_wishlist_button_after', '' );
612
 
613
  if ( ! empty( $text ) ) {
public/tinvwl.class.php CHANGED
@@ -83,7 +83,7 @@ class TInvWL_Public_TInvWL {
83
  $this->addto = TInvWL_Public_AddToWishlist::instance( $this->_name );
84
  $this->view = TInvWL_Public_Wishlist_View::instance( $this->_name );
85
  $this->cart = TInvWL_Public_Cart::instance( $this->_name );
86
- $this->topwishlist = TInvWL_Public_TopWishlist::instance( $this->_name );
87
  }
88
 
89
  /**
83
  $this->addto = TInvWL_Public_AddToWishlist::instance( $this->_name );
84
  $this->view = TInvWL_Public_Wishlist_View::instance( $this->_name );
85
  $this->cart = TInvWL_Public_Cart::instance( $this->_name );
86
+ $this->topwishlist = TInvWL_Public_WishlistCounter::instance( $this->_name );
87
  }
88
 
89
  /**
public/wishlist/buttons.class.php CHANGED
@@ -204,6 +204,7 @@ class TInvWL_Public_Wishlist_Buttons {
204
  'class' => 'button',
205
  'name' => 'tinvwl-action',
206
  'value' => $value,
 
207
  );
208
  $attr = apply_filters( self::$_name . '_prepare_attr__button_' . $value, $attr );
209
  foreach ( $attr as $key => &$value ) {
204
  'class' => 'button',
205
  'name' => 'tinvwl-action',
206
  'value' => $value,
207
+ 'title' => esc_attr( wp_strip_all_tags( $title ) ),
208
  );
209
  $attr = apply_filters( self::$_name . '_prepare_attr__button_' . $value, $attr );
210
  foreach ( $attr as $key => &$value ) {
public/wishlist/view.class.php CHANGED
@@ -74,6 +74,8 @@ class TInvWL_Public_Wishlist_View {
74
  function define_hooks() {
75
  add_action( 'template_redirect', array( $this, 'login_redirect' ) );
76
 
 
 
77
  add_action( 'wp', array( $this, 'wishlist_action' ), 0 );
78
 
79
  add_action( 'tinvwl_before_wishlist', array( $this, 'wishlist_header' ) );
@@ -88,13 +90,35 @@ class TInvWL_Public_Wishlist_View {
88
  TInvWL_Public_Wishlist_Buttons::init( $this->_name );
89
  }
90
 
 
 
 
 
 
 
 
 
 
91
 
92
  /**
93
  * Redirect guests to login page.
94
  */
95
  public function login_redirect() {
96
  if ( is_page( apply_filters( 'wpml_object_id', tinv_get_option( 'page', 'wishlist' ), 'page', true ) ) && ! is_user_logged_in() && tinv_get_option( 'general', 'require_login' ) ) {
97
- wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  exit;
99
  }
100
  }
@@ -142,7 +166,10 @@ class TInvWL_Public_Wishlist_View {
142
  // override global product data.
143
  $product = $_product;
144
  if ( apply_filters( 'tinvwl_product_add_to_cart_need_redirect', false, $product, $product->get_permalink(), $wl_product )
145
- && 'variable' === ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ) ) {
 
 
 
146
 
147
  $text = $product->add_to_cart_text();
148
 
@@ -258,7 +285,8 @@ class TInvWL_Public_Wishlist_View {
258
  define( 'DONOTCACHEDB', true );
259
  }
260
  } else {
261
- WC_Cache_Helper::set_nocache_constants();
 
262
  }
263
 
264
  $is_owner = is_user_logged_in() ? ( get_current_user_id() === $wishlist['author'] ) : $wishlist['is_owner'];
74
  function define_hooks() {
75
  add_action( 'template_redirect', array( $this, 'login_redirect' ) );
76
 
77
+ add_action( 'wp_loaded', array( $this, 'login_post_redirect' ), 19 );
78
+
79
  add_action( 'wp', array( $this, 'wishlist_action' ), 0 );
80
 
81
  add_action( 'tinvwl_before_wishlist', array( $this, 'wishlist_header' ) );
90
  TInvWL_Public_Wishlist_Buttons::init( $this->_name );
91
  }
92
 
93
+ /**
94
+ * Redirect back after successful login.
95
+ */
96
+ public function login_post_redirect() {
97
+ $nonce_value = wc_get_var( $_REQUEST['woocommerce-login-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) ); // @codingStandardsIgnoreLine.
98
+ if ( ! empty( $_POST['login'] ) && wp_verify_nonce( $nonce_value, 'woocommerce-login' ) && ! empty( $_GET['tinvwl_redirect'] ) ) {
99
+ $_POST['redirect'] = $_GET['tinvwl_redirect']; // Force WC Login form handler to do redirect.
100
+ }
101
+ }
102
 
103
  /**
104
  * Redirect guests to login page.
105
  */
106
  public function login_redirect() {
107
  if ( is_page( apply_filters( 'wpml_object_id', tinv_get_option( 'page', 'wishlist' ), 'page', true ) ) && ! is_user_logged_in() && tinv_get_option( 'general', 'require_login' ) ) {
108
+ $full_link = get_permalink();
109
+ $share_key = get_query_var( 'tinvwlID', null );
110
+ if ( ! empty( $share_key ) ) {
111
+ if ( get_option( 'permalink_structure' ) ) {
112
+ if ( ! preg_match( '/\/$/', $full_link ) ) {
113
+ $full_link .= '/';
114
+ }
115
+ $full_link .= $share_key . '/';
116
+ } else {
117
+ $full_link = add_query_arg( 'tinvwlID', $share_key, $full_link );
118
+ }
119
+ }
120
+
121
+ wp_safe_redirect( add_query_arg( 'tinvwl_redirect', esc_url( $full_link ), wc_get_page_permalink( 'myaccount' ) ) );
122
  exit;
123
  }
124
  }
166
  // override global product data.
167
  $product = $_product;
168
  if ( apply_filters( 'tinvwl_product_add_to_cart_need_redirect', false, $product, $product->get_permalink(), $wl_product )
169
+ && in_array( ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->product_type : $product->get_type() ), array(
170
+ 'variable',
171
+ 'variable-subscription'
172
+ ) ) ) {
173
 
174
  $text = $product->add_to_cart_text();
175
 
285
  define( 'DONOTCACHEDB', true );
286
  }
287
  } else {
288
+ WC_Cache_Helper::set_nocache_constants( true );
289
+ nocache_headers();
290
  }
291
 
292
  $is_owner = is_user_logged_in() ? ( get_current_user_id() === $wishlist['author'] ) : $wishlist['is_owner'];
public/{topwishlist.class.php → wishlistcounter.class.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * Drop down widget
4
  *
5
  * @since 1.4.0
6
  * @package TInvWishlist\Public
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  /**
15
  * Drop down widget
16
  */
17
- class TInvWL_Public_TopWishlist {
18
 
19
  /**
20
  * Plugin name
@@ -25,7 +25,7 @@ class TInvWL_Public_TopWishlist {
25
  /**
26
  * This class
27
  *
28
- * @var \TInvWL_Public_TopWishlist
29
  */
30
  protected static $_instance = null;
31
 
@@ -34,7 +34,7 @@ class TInvWL_Public_TopWishlist {
34
  *
35
  * @param string $plugin_name Plugin name.
36
  *
37
- * @return \TInvWL_Public_TopWishlist
38
  */
39
  public static function instance( $plugin_name = TINVWL_PREFIX ) {
40
  if ( is_null( self::$_instance ) ) {
@@ -60,6 +60,123 @@ class TInvWL_Public_TopWishlist {
60
  function define_hooks() {
61
  add_filter( 'tinvwl_addtowishlist_return_ajax', array( __CLASS__, 'update_widget' ) );
62
  add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'update_fragments' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
64
 
65
  /**
@@ -138,7 +255,7 @@ class TInvWL_Public_TopWishlist {
138
  }
139
  }
140
 
141
- return $count;
142
  }
143
 
144
  /**
@@ -153,7 +270,7 @@ class TInvWL_Public_TopWishlist {
153
  'show_icon' => (bool) tinv_get_option( 'topline', 'icon' ),
154
  'show_text' => tinv_get_option( 'topline', 'show_text' ),
155
  'text' => apply_filters( 'tinvwl-topline-text', tinv_get_option( 'topline', 'text' ) ),
156
- 'show_counter' => 'on',
157
  );
158
  $atts = filter_var_array( shortcode_atts( $default, $atts ), array(
159
  'show_icon' => FILTER_VALIDATE_BOOLEAN,
1
  <?php
2
  /**
3
+ * Wishlist counter
4
  *
5
  * @since 1.4.0
6
  * @package TInvWishlist\Public
14
  /**
15
  * Drop down widget
16
  */
17
+ class TInvWL_Public_WishlistCounter {
18
 
19
  /**
20
  * Plugin name
25
  /**
26
  * This class
27
  *
28
+ * @var \TInvWL_Public_WishlistCounter
29
  */
30
  protected static $_instance = null;
31
 
34
  *
35
  * @param string $plugin_name Plugin name.
36
  *
37
+ * @return \TInvWL_Public_WishlistCounter
38
  */
39
  public static function instance( $plugin_name = TINVWL_PREFIX ) {
40
  if ( is_null( self::$_instance ) ) {
60
  function define_hooks() {
61
  add_filter( 'tinvwl_addtowishlist_return_ajax', array( __CLASS__, 'update_widget' ) );
62
  add_filter( 'woocommerce_add_to_cart_fragments', array( __CLASS__, 'update_fragments' ) );
63
+ if ( tinv_get_option( 'topline', 'menu' ) ) {
64
+ add_filter( 'wp_get_nav_menu_items', array( __CLASS__, 'add_to_menu' ), 9, 3 );
65
+ }
66
+ }
67
+
68
+
69
+ /**
70
+ * Add to menu wishlist link
71
+ *
72
+ * @param array $items An array of menu item post objects.
73
+ * @param object $menu The menu object.
74
+ * @param array $args An array of arguments used to retrieve menu item objects.
75
+ *
76
+ * @return array
77
+ */
78
+ public static function add_to_menu( $items, $menu, $args ) {
79
+
80
+
81
+ $menu_cnt = count( $items ) + 1;
82
+ $menu_id = tinv_get_option( 'topline', 'menu' );
83
+
84
+ if ( $menu_id == $menu->term_id ) {
85
+
86
+ $menu_order = tinv_get_option( 'topline', 'menu_order' ) ? tinv_get_option( 'topline', 'menu_order' ) : 100;
87
+
88
+ // Item title.
89
+
90
+ $show_icon = (bool) tinv_get_option( 'topline', 'icon' );
91
+ $icon_type = tinv_get_option( 'topline', 'icon' );
92
+ $icon_class = ( $show_icon && tinv_get_option( 'topline', 'icon' ) ) ? 'top_wishlist-' . tinv_get_option( 'topline', 'icon' ) : '';
93
+ $icon_style = ( $show_icon && tinv_get_option( 'topline', 'icon' ) ) ? esc_attr( 'top_wishlist-' . tinv_get_option( 'topline', 'icon_style' ) ) : '';
94
+ $icon_upload = tinv_get_option( 'topline', 'icon_upload' );
95
+
96
+ $counter = tinv_get_option( 'topline', 'show_counter' ) ? '<span class="wishlist_products_counter_number"></span>' : '';
97
+
98
+ $text = tinv_get_option( 'topline', 'show_text' ) ? apply_filters( 'tinvwl-topline-text', tinv_get_option( 'topline', 'text' ) ) : '';
99
+
100
+ $icon = '<span class="wishlist_products_counter ' . $icon_class . ' ' . $icon_style . ( empty( $text ) ? ' no-txt' : '' ) . ( 0 < $counter ? ' wishlist-counter-with-products' : '' ) . '" >';
101
+
102
+ if ( $icon_class && 'custom' === $icon_type && ! empty( $icon_upload ) ) {
103
+ $icon .= sprintf( '<img src="%s" />', esc_url( $icon_upload ) );
104
+ }
105
+
106
+ $icon .= '</span>';
107
+
108
+ $menu_title = apply_filters( 'tinvwl-menu-item-title', $icon . ' ' . $text . ' ' . $counter, $icon, $text, $counter );
109
+
110
+ if ( $menu_title ) {
111
+
112
+ $wishlist_item = (object) array(
113
+ 'ID' => $menu_cnt + 100000,
114
+ 'object_id' => $menu_cnt + 100000,
115
+ 'db_id' => $menu_cnt + 100000,
116
+ 'title' => $menu_title,
117
+ 'post_title' => $menu_title,
118
+ 'url' => esc_url( tinv_url_wishlist_default() ),
119
+ 'guid' => esc_url( tinv_url_wishlist_default() ),
120
+ 'post_date' => gmdate( 'Y-m-d H:i:s' ),
121
+ 'post_date_gmt' => gmdate( 'Y-m-d H:i:s' ),
122
+ 'post_modified' => gmdate( 'Y-m-d H:i:s' ),
123
+ 'post_modified_gmt' => gmdate( 'Y-m-d H:i:s' ),
124
+ 'menu_order' => $menu_order,
125
+ 'menu_item_parent' => 0,
126
+ 'type' => 'custom',
127
+ 'post_status' => 'publish',
128
+ 'post_author' => 1,
129
+ 'comment_status' => 'closed',
130
+ 'ping_status' => 'closed',
131
+ 'post_name' => 'd',
132
+ 'post_parent' => 0,
133
+ 'post_type' => 'nav_menu_item',
134
+ 'comment_count' => 0,
135
+ 'filter' => 'raw',
136
+ 'object' => 'custom',
137
+ 'type_label' => '',
138
+ 'target' => '',
139
+ 'attr_title' => '',
140
+ 'object' => '',
141
+ 'classes' => '',
142
+ 'post_content' => '',
143
+ 'post_excerpt' => '',
144
+ 'category_post' => '',
145
+ 'nolink' => '',
146
+ 'description' => '',
147
+ 'xfn' => '',
148
+ 'template' => '',
149
+ 'mega_template' => '',
150
+ 'megamenu' => '',
151
+ 'megamenu_auto_width' => '',
152
+ 'megamenu_col' => '',
153
+ 'megamenu_heading' => '',
154
+ 'megamenu_widgetarea' => '',
155
+ 'icon' => '',
156
+ 'post_password' => '',
157
+ 'to_ping' => '',
158
+ 'pinged' => '',
159
+ 'post_content_filtered' => '',
160
+ 'post_mime_type' => '',
161
+ );
162
+
163
+
164
+ foreach ( $items as $key => $item ) {
165
+
166
+ if ( $items[ $key ]->menu_order > ( $menu_order - 1 ) ) {
167
+ $items[ $key ]->menu_order = $items[ $key ]->menu_order + 1;
168
+ }
169
+ }
170
+
171
+ if ( $menu_order < $menu_cnt ) {
172
+ array_splice( $items, $menu_order - 1, 0, array( $wishlist_item ) );
173
+ } else {
174
+ $items[] = $wishlist_item;
175
+ }
176
+ }
177
+ }
178
+
179
+ return $items;
180
  }
181
 
182
  /**
255
  }
256
  }
257
 
258
+ return $count ? $count : false;
259
  }
260
 
261
  /**
270
  'show_icon' => (bool) tinv_get_option( 'topline', 'icon' ),
271
  'show_text' => tinv_get_option( 'topline', 'show_text' ),
272
  'text' => apply_filters( 'tinvwl-topline-text', tinv_get_option( 'topline', 'text' ) ),
273
+ 'show_counter' => tinv_get_option( 'topline', 'show_counter' ),
274
  );
275
  $atts = filter_var_array( shortcode_atts( $default, $atts ), array(
276
  'show_icon' => FILTER_VALIDATE_BOOLEAN,
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: 4.9
7
- Stable tag: 1.8.17
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -130,6 +130,16 @@ If you get stuck, you can ask for help in the [Plugin Forum](https://wordpress.o
130
 
131
 
132
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
133
  = 1.8.17 =
134
  *Release Date - 16 September 2018*
135
 
4
  Tags: wishlist, woocommerce, woocommerce wishlist, e-commerce, ecommerce
5
  Requires at least: 4.5
6
  Tested up to: 4.9
7
+ Stable tag: 1.9.0
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
130
 
131
 
132
  == Changelog ==
133
+ = 1.9.0 =
134
+ *Release Date - 17 October 2018*
135
+
136
+ * Fixed no cache issue for WooCommerce versions below 3.2.4
137
+ * Added redirect to a previous page after login when "Require Login" option is enabled
138
+ * Added an option to add the wishlist counter into a menu
139
+ * Improved compatibility with [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?aff=3955) plugin
140
+ * Improved compatibility with [WooCommerce Product Bundles](https://woocommerce.com/products/product-bundles/?aff=3955) plugin
141
+ * Improved compatibility with [WooCommerce Composite Products](https://woocommerce.com/products/composite-products/?aff=3955) plugin
142
+
143
  = 1.8.17 =
144
  *Release Date - 16 September 2018*
145
 
templates/ti-wishlist-product-counter.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * The Template for displaying dropdown wishlist products.
4
  *
5
- * @version 1.8.8
6
  * @package TInvWishlist\Template
7
  */
8
 
@@ -10,11 +10,12 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  exit; // Exit if accessed directly.
11
  }
12
  wp_enqueue_script( 'tinvwl' );
13
- if ( $icon_class && 'custom' === $icon && ! empty( $icon_upload ) ) {
14
  $text = sprintf( '<img src="%s" /> %s', esc_url( $icon_upload ), $text );
15
  }
16
  ?>
17
- <a href="<?php echo esc_url( ( tinv_get_option( 'general', 'require_login' ) && ! is_user_logged_in() ) ? wc_get_page_permalink( 'myaccount' ) : tinv_url_wishlist_default() ); ?>" class="wishlist_products_counter<?php echo ' ' . $icon_class . ' ' . $icon_style . ( empty( $text ) ? ' no-txt' : '' ) . ( 0 < $counter ? ' wishlist-counter-with-products' : '' ); // WPCS: xss ok. ?>">
 
18
  <span class="wishlist_products_counter_text"><?php echo $text; // WPCS: xss ok. ?></span>
19
  <?php if ( $show_counter ) : ?>
20
  <span class="wishlist_products_counter_number"></span>
2
  /**
3
  * The Template for displaying dropdown wishlist products.
4
  *
5
+ * @version 1.9.0
6
  * @package TInvWishlist\Template
7
  */
8
 
10
  exit; // Exit if accessed directly.
11
  }
12
  wp_enqueue_script( 'tinvwl' );
13
+ if ( $icon_class && 'custom' === $icon && ! empty( $icon_upload ) ) {
14
  $text = sprintf( '<img src="%s" /> %s', esc_url( $icon_upload ), $text );
15
  }
16
  ?>
17
+ <a href="<?php echo esc_url( tinv_url_wishlist_default() ); ?>"
18
+ class="wishlist_products_counter<?php echo ' ' . $icon_class . ' ' . $icon_style . ( empty( $text ) ? ' no-txt' : '' ) . ( 0 < $counter ? ' wishlist-counter-with-products' : '' ); // WPCS: xss ok. ?>">
19
  <span class="wishlist_products_counter_text"><?php echo $text; // WPCS: xss ok. ?></span>
20
  <?php if ( $show_counter ) : ?>
21
  <span class="wishlist_products_counter_number"></span>
templates/ti-wishlist-social.php CHANGED
@@ -19,7 +19,8 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  <?php foreach ( $social as $social_name => $social_url ) {
20
  ?>
21
  <li><a href="<?php echo esc_url( $social_url ); ?>"
22
- class="social social-<?php echo esc_attr( $social_name ) . ' ' . esc_attr( tinv_get_option( 'social', 'icon_style' ) ); ?>"><i
 
23
  class="ftinvwl ftinvwl-<?php echo esc_attr( $social_name ); ?>"></i></a></li>
24
  <?php } ?>
25
  </ul>
19
  <?php foreach ( $social as $social_name => $social_url ) {
20
  ?>
21
  <li><a href="<?php echo esc_url( $social_url ); ?>"
22
+ class="social social-<?php echo esc_attr( $social_name ) . ' ' . esc_attr( tinv_get_option( 'social', 'icon_style' ) ); ?>"
23
+ title="<?php echo esc_attr( $social_name ); ?>"><i
24
  class="ftinvwl ftinvwl-<?php echo esc_attr( $social_name ); ?>"></i></a></li>
25
  <?php } ?>
26
  </ul>
templates/ti-wishlist-user.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * The Template for displaying user wishlist.
4
  *
5
- * @version 1.8.8
6
  * @package TInvWishlist\Template
7
  */
8
 
@@ -22,7 +22,9 @@ wp_enqueue_script( 'tinvwl' );
22
  <thead>
23
  <tr>
24
  <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
25
- <th class="product-cb"><input type="checkbox" class="global-cb"></th>
 
 
26
  <?php } ?>
27
  <th class="product-thumbnail">&nbsp;</th>
28
  <th class="product-name"><span
@@ -58,7 +60,7 @@ wp_enqueue_script( 'tinvwl' );
58
  <td class="product-cb">
59
  <?php
60
  echo apply_filters( 'tinvwl_wishlist_item_cb', sprintf( // WPCS: xss ok.
61
- '<input type="checkbox" name="wishlist_pr[]" value="%d">', esc_attr( $wl_product['ID'] )
62
  ), $wl_product, $product );
63
  ?>
64
  </td>
@@ -123,7 +125,9 @@ wp_enqueue_script( 'tinvwl' );
123
  if ( apply_filters( 'tinvwl_wishlist_item_action_add_to_cart', $wishlist_table_row['add_to_cart'], $wl_product, $product ) ) {
124
  ?>
125
  <button class="button alt" name="tinvwl-add-to-cart"
126
- value="<?php echo esc_attr( $wl_product['ID'] ); ?>"><i
 
 
127
  class="ftinvwl ftinvwl-shopping-cart"></i><span
128
  class="tinvwl-txt"><?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?></span>
129
  </button>
1
  <?php
2
  /**
3
+ * The Template for displaying wishlist for another user.
4
  *
5
+ * @version 1.9.0
6
  * @package TInvWishlist\Template
7
  */
8
 
22
  <thead>
23
  <tr>
24
  <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
25
+ <th class="product-cb"><input type="checkbox" class="global-cb"
26
+ title="<?php _e( 'Select all for bulk action', 'ti-woocommerce-wishlist' ) ?>">
27
+ </th>
28
  <?php } ?>
29
  <th class="product-thumbnail">&nbsp;</th>
30
  <th class="product-name"><span
60
  <td class="product-cb">
61
  <?php
62
  echo apply_filters( 'tinvwl_wishlist_item_cb', sprintf( // WPCS: xss ok.
63
+ '<input type="checkbox" name="wishlist_pr[]" value="%d" title="%s">', esc_attr( $wl_product['ID'] ), __( 'Select for bulk action', 'ti-woocommerce-wishlist' )
64
  ), $wl_product, $product );
65
  ?>
66
  </td>
125
  if ( apply_filters( 'tinvwl_wishlist_item_action_add_to_cart', $wishlist_table_row['add_to_cart'], $wl_product, $product ) ) {
126
  ?>
127
  <button class="button alt" name="tinvwl-add-to-cart"
128
+ value="<?php echo esc_attr( $wl_product['ID'] ); ?>"
129
+ title="<?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?>">
130
+ <i
131
  class="ftinvwl ftinvwl-shopping-cart"></i><span
132
  class="tinvwl-txt"><?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?></span>
133
  </button>
templates/ti-wishlist.php CHANGED
@@ -1,161 +1,167 @@
1
- <?php
2
- /**
3
- * The Template for displaying wishlist.
4
- *
5
- * @version 1.8.8
6
- * @package TInvWishlist\Template
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit; // Exit if accessed directly.
11
- }
12
- wp_enqueue_script( 'tinvwl' );
13
- ?>
14
- <div class="tinv-wishlist woocommerce tinv-wishlist-clear">
15
- <?php do_action( 'tinvwl_before_wishlist', $wishlist ); ?>
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>
23
- <tr>
24
- <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
25
- <th class="product-cb"><input type="checkbox" class="global-cb"></th>
26
- <?php } ?>
27
- <th class="product-remove"></th>
28
- <th class="product-thumbnail">&nbsp;</th>
29
- <th class="product-name"><span
30
- class="tinvwl-full"><?php esc_html_e( 'Product Name', 'ti-woocommerce-wishlist' ); ?></span><span
31
- class="tinvwl-mobile"><?php esc_html_e( 'Product', 'ti-woocommerce-wishlist' ); ?></span></th>
32
- <?php if ( isset( $wishlist_table_row['colm_price'] ) && $wishlist_table_row['colm_price'] ) { ?>
33
- <th class="product-price"><?php esc_html_e( 'Unit Price', 'ti-woocommerce-wishlist' ); ?></th>
34
- <?php } ?>
35
- <?php if ( isset( $wishlist_table_row['colm_date'] ) && $wishlist_table_row['colm_date'] ) { ?>
36
- <th class="product-date"><?php esc_html_e( 'Date Added', 'ti-woocommerce-wishlist' ); ?></th>
37
- <?php } ?>
38
- <?php if ( isset( $wishlist_table_row['colm_stock'] ) && $wishlist_table_row['colm_stock'] ) { ?>
39
- <th class="product-stock"><?php esc_html_e( 'Stock Status', 'ti-woocommerce-wishlist' ); ?></th>
40
- <?php } ?>
41
- <?php if ( isset( $wishlist_table_row['add_to_cart'] ) && $wishlist_table_row['add_to_cart'] ) { ?>
42
- <th class="product-action">&nbsp;</th>
43
- <?php } ?>
44
- </tr>
45
- </thead>
46
- <tbody>
47
- <?php do_action( 'tinvwl_wishlist_contents_before' ); ?>
48
-
49
- <?php
50
- foreach ( $products as $wl_product ) {
51
- $product = apply_filters( 'tinvwl_wishlist_item', $wl_product['data'] );
52
- unset( $wl_product['data'] );
53
- if ( $wl_product['quantity'] > 0 && apply_filters( 'tinvwl_wishlist_item_visible', true, $wl_product, $product ) ) {
54
- $product_url = apply_filters( 'tinvwl_wishlist_item_url', $product->get_permalink(), $wl_product, $product );
55
- do_action( 'tinvwl_wishlist_row_before', $wl_product, $product );
56
- ?>
57
- <tr class="<?php echo esc_attr( apply_filters( 'tinvwl_wishlist_item_class', 'wishlist_item', $wl_product, $product ) ); ?>">
58
- <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
59
- <td class="product-cb">
60
- <?php
61
- echo apply_filters( 'tinvwl_wishlist_item_cb', sprintf( // WPCS: xss ok.
62
- '<input type="checkbox" name="wishlist_pr[]" value="%d">', esc_attr( $wl_product['ID'] )
63
- ), $wl_product, $product );
64
- ?>
65
- </td>
66
- <?php } ?>
67
- <td class="product-remove">
68
- <button type="submit" name="tinvwl-remove"
69
- value="<?php echo esc_attr( $wl_product['ID'] ); ?>"><i class="ftinvwl ftinvwl-times"></i>
70
- </button>
71
- </td>
72
- <td class="product-thumbnail">
73
- <?php
74
- $thumbnail = apply_filters( 'tinvwl_wishlist_item_thumbnail', $product->get_image(), $wl_product, $product );
75
-
76
- if ( ! $product->is_visible() ) {
77
- echo $thumbnail; // WPCS: xss ok.
78
- } else {
79
- printf( '<a href="%s">%s</a>', esc_url( $product_url ), $thumbnail ); // WPCS: xss ok.
80
- }
81
- ?>
82
- </td>
83
- <td class="product-name">
84
- <?php
85
- if ( ! $product->is_visible() ) {
86
- echo apply_filters( 'tinvwl_wishlist_item_name', $product->get_title(), $wl_product, $product ) . '&nbsp;'; // WPCS: xss ok.
87
- } else {
88
- echo apply_filters( 'tinvwl_wishlist_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product->get_title() ), $wl_product, $product ); // WPCS: xss ok.
89
- }
90
-
91
- echo apply_filters( 'tinvwl_wishlist_item_meta_data', tinv_wishlist_get_item_data( $product, $wl_product ), $wl_product, $product ); // WPCS: xss ok.
92
- ?>
93
- </td>
94
- <?php if ( isset( $wishlist_table_row['colm_price'] ) && $wishlist_table_row['colm_price'] ) { ?>
95
- <td class="product-price">
96
- <?php
97
- echo apply_filters( 'tinvwl_wishlist_item_price', $product->get_price_html(), $wl_product, $product ); // WPCS: xss ok.
98
- ?>
99
- </td>
100
- <?php } ?>
101
- <?php if ( isset( $wishlist_table_row['colm_date'] ) && $wishlist_table_row['colm_date'] ) { ?>
102
- <td class="product-date">
103
- <?php
104
- echo apply_filters( 'tinvwl_wishlist_item_date', sprintf( // WPCS: xss ok.
105
- '<time class="entry-date" datetime="%1$s">%2$s</time>', $wl_product['date'], mysql2date( get_option( 'date_format' ), $wl_product['date'] )
106
- ), $wl_product, $product );
107
- ?>
108
- </td>
109
- <?php } ?>
110
- <?php if ( isset( $wishlist_table_row['colm_stock'] ) && $wishlist_table_row['colm_stock'] ) { ?>
111
- <td class="product-stock">
112
- <?php
113
- $availability = (array) $product->get_availability();
114
- if ( ! array_key_exists( 'availability', $availability ) ) {
115
- $availability['availability'] = '';
116
- }
117
- if ( ! array_key_exists( 'class', $availability ) ) {
118
- $availability['class'] = '';
119
- }
120
- $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-'.(('out-of-stock' === esc_attr( $availability['class'] )? 'times':'check')).'"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
121
-
122
- echo apply_filters( 'tinvwl_wishlist_item_status', $availability_html, $availability['availability'], $wl_product, $product ); // WPCS: xss ok.
123
- ?>
124
- </td>
125
- <?php } ?>
126
- <?php if ( isset( $wishlist_table_row['add_to_cart'] ) && $wishlist_table_row['add_to_cart'] ) { ?>
127
- <td class="product-action">
128
- <?php
129
- if ( apply_filters( 'tinvwl_wishlist_item_action_add_to_cart', $wishlist_table_row['add_to_cart'], $wl_product, $product ) ) {
130
- ?>
131
- <button class="button alt" name="tinvwl-add-to-cart"
132
- value="<?php echo esc_attr( $wl_product['ID'] ); ?>"><i
133
- class="ftinvwl ftinvwl-shopping-cart"></i><span
134
- class="tinvwl-txt"><?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?></span>
135
- </button>
136
- <?php } ?>
137
- </td>
138
- <?php } ?>
139
- </tr>
140
- <?php
141
- do_action( 'tinvwl_wishlist_row_after', $wl_product, $product );
142
- } // End if().
143
- } // End foreach().
144
- ?>
145
- <?php do_action( 'tinvwl_wishlist_contents_after' ); ?>
146
- </tbody>
147
- <tfoot>
148
- <tr>
149
- <td colspan="100">
150
- <?php do_action( 'tinvwl_after_wishlist_table', $wishlist ); ?>
151
- <?php wp_nonce_field( 'tinvwl_wishlist_owner', 'wishlist_nonce' ); ?>
152
- </td>
153
- </tr>
154
- </tfoot>
155
- </table>
156
- </form>
157
- <?php do_action( 'tinvwl_after_wishlist', $wishlist ); ?>
158
- <div class="tinv-lists-nav tinv-wishlist-clear">
159
- <?php do_action( 'tinvwl_pagenation_wishlist', $wishlist ); ?>
160
- </div>
161
- </div>
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Template for displaying wishlist for owner.
4
+ *
5
+ * @version 1.9.0
6
+ * @package TInvWishlist\Template
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit; // Exit if accessed directly.
11
+ }
12
+ wp_enqueue_script( 'tinvwl' );
13
+ ?>
14
+ <div class="tinv-wishlist woocommerce tinv-wishlist-clear">
15
+ <?php do_action( 'tinvwl_before_wishlist', $wishlist ); ?>
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>
23
+ <tr>
24
+ <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
25
+ <th class="product-cb"><input type="checkbox" class="global-cb"
26
+ title="<?php _e( 'Select all for bulk action', 'ti-woocommerce-wishlist' ) ?>">
27
+ </th>
28
+ <?php } ?>
29
+ <th class="product-remove"></th>
30
+ <th class="product-thumbnail">&nbsp;</th>
31
+ <th class="product-name"><span
32
+ class="tinvwl-full"><?php esc_html_e( 'Product Name', 'ti-woocommerce-wishlist' ); ?></span><span
33
+ class="tinvwl-mobile"><?php esc_html_e( 'Product', 'ti-woocommerce-wishlist' ); ?></span></th>
34
+ <?php if ( isset( $wishlist_table_row['colm_price'] ) && $wishlist_table_row['colm_price'] ) { ?>
35
+ <th class="product-price"><?php esc_html_e( 'Unit Price', 'ti-woocommerce-wishlist' ); ?></th>
36
+ <?php } ?>
37
+ <?php if ( isset( $wishlist_table_row['colm_date'] ) && $wishlist_table_row['colm_date'] ) { ?>
38
+ <th class="product-date"><?php esc_html_e( 'Date Added', 'ti-woocommerce-wishlist' ); ?></th>
39
+ <?php } ?>
40
+ <?php if ( isset( $wishlist_table_row['colm_stock'] ) && $wishlist_table_row['colm_stock'] ) { ?>
41
+ <th class="product-stock"><?php esc_html_e( 'Stock Status', 'ti-woocommerce-wishlist' ); ?></th>
42
+ <?php } ?>
43
+ <?php if ( isset( $wishlist_table_row['add_to_cart'] ) && $wishlist_table_row['add_to_cart'] ) { ?>
44
+ <th class="product-action">&nbsp;</th>
45
+ <?php } ?>
46
+ </tr>
47
+ </thead>
48
+ <tbody>
49
+ <?php do_action( 'tinvwl_wishlist_contents_before' ); ?>
50
+
51
+ <?php
52
+ foreach ( $products as $wl_product ) {
53
+ $product = apply_filters( 'tinvwl_wishlist_item', $wl_product['data'] );
54
+ unset( $wl_product['data'] );
55
+ if ( $wl_product['quantity'] > 0 && apply_filters( 'tinvwl_wishlist_item_visible', true, $wl_product, $product ) ) {
56
+ $product_url = apply_filters( 'tinvwl_wishlist_item_url', $product->get_permalink(), $wl_product, $product );
57
+ do_action( 'tinvwl_wishlist_row_before', $wl_product, $product );
58
+ ?>
59
+ <tr class="<?php echo esc_attr( apply_filters( 'tinvwl_wishlist_item_class', 'wishlist_item', $wl_product, $product ) ); ?>">
60
+ <?php if ( isset( $wishlist_table['colm_checkbox'] ) && $wishlist_table['colm_checkbox'] ) { ?>
61
+ <td class="product-cb">
62
+ <?php
63
+ echo apply_filters( 'tinvwl_wishlist_item_cb', sprintf( // WPCS: xss ok.
64
+ '<input type="checkbox" name="wishlist_pr[]" value="%d" title="%s">', esc_attr( $wl_product['ID'] ), __( 'Select for bulk action', 'ti-woocommerce-wishlist' )
65
+ ), $wl_product, $product );
66
+ ?>
67
+ </td>
68
+ <?php } ?>
69
+ <td class="product-remove">
70
+ <button type="submit" name="tinvwl-remove"
71
+ value="<?php echo esc_attr( $wl_product['ID'] ); ?>"
72
+ title="<?php _e( 'Remove', 'ti-woocommerce-wishlist' ) ?>"><i
73
+ class="ftinvwl ftinvwl-times"></i>
74
+ </button>
75
+ </td>
76
+ <td class="product-thumbnail">
77
+ <?php
78
+ $thumbnail = apply_filters( 'tinvwl_wishlist_item_thumbnail', $product->get_image(), $wl_product, $product );
79
+
80
+ if ( ! $product->is_visible() ) {
81
+ echo $thumbnail; // WPCS: xss ok.
82
+ } else {
83
+ printf( '<a href="%s">%s</a>', esc_url( $product_url ), $thumbnail ); // WPCS: xss ok.
84
+ }
85
+ ?>
86
+ </td>
87
+ <td class="product-name">
88
+ <?php
89
+ if ( ! $product->is_visible() ) {
90
+ echo apply_filters( 'tinvwl_wishlist_item_name', $product->get_title(), $wl_product, $product ) . '&nbsp;'; // WPCS: xss ok.
91
+ } else {
92
+ echo apply_filters( 'tinvwl_wishlist_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product->get_title() ), $wl_product, $product ); // WPCS: xss ok.
93
+ }
94
+
95
+ echo apply_filters( 'tinvwl_wishlist_item_meta_data', tinv_wishlist_get_item_data( $product, $wl_product ), $wl_product, $product ); // WPCS: xss ok.
96
+ ?>
97
+ </td>
98
+ <?php if ( isset( $wishlist_table_row['colm_price'] ) && $wishlist_table_row['colm_price'] ) { ?>
99
+ <td class="product-price">
100
+ <?php
101
+ echo apply_filters( 'tinvwl_wishlist_item_price', $product->get_price_html(), $wl_product, $product ); // WPCS: xss ok.
102
+ ?>
103
+ </td>
104
+ <?php } ?>
105
+ <?php if ( isset( $wishlist_table_row['colm_date'] ) && $wishlist_table_row['colm_date'] ) { ?>
106
+ <td class="product-date">
107
+ <?php
108
+ echo apply_filters( 'tinvwl_wishlist_item_date', sprintf( // WPCS: xss ok.
109
+ '<time class="entry-date" datetime="%1$s">%2$s</time>', $wl_product['date'], mysql2date( get_option( 'date_format' ), $wl_product['date'] )
110
+ ), $wl_product, $product );
111
+ ?>
112
+ </td>
113
+ <?php } ?>
114
+ <?php if ( isset( $wishlist_table_row['colm_stock'] ) && $wishlist_table_row['colm_stock'] ) { ?>
115
+ <td class="product-stock">
116
+ <?php
117
+ $availability = (array) $product->get_availability();
118
+ if ( ! array_key_exists( 'availability', $availability ) ) {
119
+ $availability['availability'] = '';
120
+ }
121
+ if ( ! array_key_exists( 'class', $availability ) ) {
122
+ $availability['class'] = '';
123
+ }
124
+ $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-' . ( ( 'out-of-stock' === esc_attr( $availability['class'] ) ? 'times' : 'check' ) ) . '"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
125
+
126
+ echo apply_filters( 'tinvwl_wishlist_item_status', $availability_html, $availability['availability'], $wl_product, $product ); // WPCS: xss ok.
127
+ ?>
128
+ </td>
129
+ <?php } ?>
130
+ <?php if ( isset( $wishlist_table_row['add_to_cart'] ) && $wishlist_table_row['add_to_cart'] ) { ?>
131
+ <td class="product-action">
132
+ <?php
133
+ if ( apply_filters( 'tinvwl_wishlist_item_action_add_to_cart', $wishlist_table_row['add_to_cart'], $wl_product, $product ) ) {
134
+ ?>
135
+ <button class="button alt" name="tinvwl-add-to-cart"
136
+ value="<?php echo esc_attr( $wl_product['ID'] ); ?>"
137
+ title="<?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?>">
138
+ <i
139
+ class="ftinvwl ftinvwl-shopping-cart"></i><span
140
+ class="tinvwl-txt"><?php echo esc_html( apply_filters( 'tinvwl_wishlist_item_add_to_cart', $wishlist_table_row['text_add_to_cart'], $wl_product, $product ) ); ?></span>
141
+ </button>
142
+ <?php } ?>
143
+ </td>
144
+ <?php } ?>
145
+ </tr>
146
+ <?php
147
+ do_action( 'tinvwl_wishlist_row_after', $wl_product, $product );
148
+ } // End if().
149
+ } // End foreach().
150
+ ?>
151
+ <?php do_action( 'tinvwl_wishlist_contents_after' ); ?>
152
+ </tbody>
153
+ <tfoot>
154
+ <tr>
155
+ <td colspan="100">
156
+ <?php do_action( 'tinvwl_after_wishlist_table', $wishlist ); ?>
157
+ <?php wp_nonce_field( 'tinvwl_wishlist_owner', 'wishlist_nonce' ); ?>
158
+ </td>
159
+ </tr>
160
+ </tfoot>
161
+ </table>
162
+ </form>
163
+ <?php do_action( 'tinvwl_after_wishlist', $wishlist ); ?>
164
+ <div class="tinv-lists-nav tinv-wishlist-clear">
165
+ <?php do_action( 'tinvwl_pagenation_wishlist', $wishlist ); ?>
166
+ </div>
167
+ </div>
ti-woocommerce-wishlist.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: WooCommerce Wishlist Plugin
5
  * Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
6
  * Description: Wishlist functionality for your WooCommerce store.
7
- * Version: 1.8.17
8
  * Requires at least: 4.5
9
  * Tested up to: 4.9
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.8.17' );
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.9.0
8
  * Requires at least: 4.5
9
  * Tested up to: 4.9
10
  * WC requires at least: 2.6
41
  }
42
 
43
  if ( ! defined( 'TINVWL_FVERSION' ) ) {
44
+ define( 'TINVWL_FVERSION', '1.9.0' );
45
  }
46
 
47
  if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
tinv-wishlists-function-integration.php CHANGED
@@ -358,7 +358,7 @@ if ( ! function_exists( 'tinvwl_wpml_addtowishlist_prepare_form' ) ) {
358
  if ( ! function_exists( 'tinvwl_wpml_filter_link' ) ) {
359
 
360
  /**
361
- * Corect add wishlist key for WPML plugin.
362
  *
363
  * @param string $full_link Link for page.
364
  * @param array $l Language.
@@ -752,7 +752,7 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_composite_products' ) ) {
752
  }
753
  $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
754
  $row_string = '<tr>';
755
- $row_string .= '<td colspan="2"></td>&nbsp;<td class="product-thumbnail">%2$s</td><td class="product-name">%1$s:<br/>%3$s</td>';
756
  if ( tinv_get_option( 'product_table', 'colm_price' ) ) {
757
  $row_string .= ( $product_price ) ? '<td class="product-price">%4$s &times; %6$s</td>' : '<td class="product-price">%4$s</td>';
758
  }
@@ -860,14 +860,14 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_product_bundles' ) ) {
860
  $bundled_items = $product->get_bundled_items();
861
  if ( ! empty( $bundled_items ) ) {
862
  foreach ( $bundled_items as $bundled_item_id => $bundled_item ) {
863
- $bundled_product_id = $bundled_item->product_id;
864
  $bundled_item_variation_id_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_variation_id_' . $bundled_item_id;
865
  $bundled_variation_id = absint( isset( $wl_product['meta'][ $bundled_item_variation_id_request_key ] ) ? $wl_product['meta'][ $bundled_item_variation_id_request_key ] : 0 );
866
  if ( ! empty( $bundled_variation_id ) ) {
867
  $bundled_item->product = wc_get_product( $bundled_variation_id );
868
  }
869
- $bundled_product_type = $bundled_item->product->get_type();
870
- $is_optional = $bundled_item->is_optional();
871
 
872
  $bundled_item_quantity_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_quantity_' . $bundled_item_id;
873
  $bundled_product_qty = isset( $wl_product['meta'][ $bundled_item_quantity_request_key ] ) ? absint( $wl_product['meta'][ $bundled_item_quantity_request_key ] ) : $bundled_item->get_quantity();
@@ -888,7 +888,12 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_product_bundles' ) ) {
888
  $product_url = $bundled_item->product->get_permalink();
889
  $product_image = $bundled_item->product->get_image();
890
  $product_title = $bundled_item->product->get_title();
891
- $product_price = $bundled_item->product->get_price_html();
 
 
 
 
 
892
  if ( $bundled_item->product->is_visible() ) {
893
  $product_image = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_image );
894
  $product_title = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_title );
@@ -905,8 +910,10 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_product_bundles' ) ) {
905
  $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
906
  $row_string = '<tr>';
907
  $row_string .= '<td colspan="2">&nbsp;</td><td class="product-thumbnail">%1$s</td><td class="product-name">%2$s</td>';
908
- if ( tinv_get_option( 'product_table', 'colm_price' ) ) {
909
  $row_string .= '<td class="product-price">%3$s &times; %5$s</td>';
 
 
910
  }
911
  if ( tinv_get_option( 'product_table', 'colm_date' ) ) {
912
  $row_string .= '<td class="product-date">&nbsp;</td>';
@@ -952,6 +959,15 @@ if ( ! function_exists( 'tinvwl_item_price_woocommerce_product_bundles' ) ) {
952
  $bundled_items_price = 0.0;
953
 
954
  foreach ( $bundled_items as $bundled_item_id => $bundled_item ) {
 
 
 
 
 
 
 
 
 
955
  $is_optional = $bundled_item->is_optional();
956
 
957
  $bundled_item_quantity_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_quantity_' . $bundled_item_id;
@@ -966,13 +982,17 @@ if ( ! function_exists( 'tinvwl_item_price_woocommerce_product_bundles' ) ) {
966
  $bundled_product_qty = 0;
967
  }
968
  }
969
- if ( 0 === $bundled_product_qty ) {
970
- continue;
971
- }
972
 
973
- $bundled_item_price = $bundled_item->product->get_price() * $bundled_product_qty;
 
 
 
 
974
 
975
- $bundled_items_price += (double) $bundled_item_price;
 
 
 
976
 
977
  } // End foreach().
978
  $price = wc_price( (double) $bundle_price + $bundled_items_price );
358
  if ( ! function_exists( 'tinvwl_wpml_filter_link' ) ) {
359
 
360
  /**
361
+ * Correct add wishlist key for WPML plugin.
362
  *
363
  * @param string $full_link Link for page.
364
  * @param array $l Language.
752
  }
753
  $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
754
  $row_string = '<tr>';
755
+ $row_string .= ( ( ! is_user_logged_in() || get_current_user_id() !== $wl_product['author'] ) ? ( ( ! tinv_get_option( 'table', 'colm_checkbox' ) ) ? '' : '<td colspan="1"></td>' ) : '<td colspan="' . ( ( ! tinv_get_option( 'table', 'colm_checkbox' ) ) ? '1' : '2' ) . '"></td>' ) . '&nbsp;<td class="product-thumbnail">%2$s</td><td class="product-name">%1$s:<br/>%3$s</td>';
756
  if ( tinv_get_option( 'product_table', 'colm_price' ) ) {
757
  $row_string .= ( $product_price ) ? '<td class="product-price">%4$s &times; %6$s</td>' : '<td class="product-price">%4$s</td>';
758
  }
860
  $bundled_items = $product->get_bundled_items();
861
  if ( ! empty( $bundled_items ) ) {
862
  foreach ( $bundled_items as $bundled_item_id => $bundled_item ) {
863
+
864
  $bundled_item_variation_id_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_variation_id_' . $bundled_item_id;
865
  $bundled_variation_id = absint( isset( $wl_product['meta'][ $bundled_item_variation_id_request_key ] ) ? $wl_product['meta'][ $bundled_item_variation_id_request_key ] : 0 );
866
  if ( ! empty( $bundled_variation_id ) ) {
867
  $bundled_item->product = wc_get_product( $bundled_variation_id );
868
  }
869
+
870
+ $is_optional = $bundled_item->is_optional();
871
 
872
  $bundled_item_quantity_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_quantity_' . $bundled_item_id;
873
  $bundled_product_qty = isset( $wl_product['meta'][ $bundled_item_quantity_request_key ] ) ? absint( $wl_product['meta'][ $bundled_item_quantity_request_key ] ) : $bundled_item->get_quantity();
888
  $product_url = $bundled_item->product->get_permalink();
889
  $product_image = $bundled_item->product->get_image();
890
  $product_title = $bundled_item->product->get_title();
891
+
892
+ $product_price = $bundled_item->product->get_price_html();
893
+ $product_price_raw = $bundled_item->product->get_regular_price();
894
+ $discount = $bundled_item->get_discount();
895
+ $product_price = empty( $discount ) ? $product_price : wc_price( WC_PB_Product_Prices::get_discounted_price( $product_price_raw, $discount ) );
896
+
897
  if ( $bundled_item->product->is_visible() ) {
898
  $product_image = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_image );
899
  $product_title = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_title );
910
  $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="ftinvwl ftinvwl-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
911
  $row_string = '<tr>';
912
  $row_string .= '<td colspan="2">&nbsp;</td><td class="product-thumbnail">%1$s</td><td class="product-name">%2$s</td>';
913
+ if ( tinv_get_option( 'product_table', 'colm_price' ) && $bundled_item->is_priced_individually() ) {
914
  $row_string .= '<td class="product-price">%3$s &times; %5$s</td>';
915
+ } elseif ( ! $bundled_item->is_priced_individually() ) {
916
+ $row_string .= '<td class="product-price"></td>';
917
  }
918
  if ( tinv_get_option( 'product_table', 'colm_date' ) ) {
919
  $row_string .= '<td class="product-date">&nbsp;</td>';
959
  $bundled_items_price = 0.0;
960
 
961
  foreach ( $bundled_items as $bundled_item_id => $bundled_item ) {
962
+
963
+ $bundled_item_variation_id_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_variation_id_' . $bundled_item_id;
964
+ $bundled_variation_id = absint( isset( $wl_product['meta'][ $bundled_item_variation_id_request_key ] ) ? $wl_product['meta'][ $bundled_item_variation_id_request_key ] : 0 );
965
+ if ( ! empty( $bundled_variation_id ) ) {
966
+ $_bundled_product = wc_get_product( $bundled_variation_id );
967
+ } else {
968
+ $_bundled_product = $bundled_item->product;
969
+ }
970
+
971
  $is_optional = $bundled_item->is_optional();
972
 
973
  $bundled_item_quantity_request_key = apply_filters( 'woocommerce_product_bundle_field_prefix', '', $product_id ) . 'bundle_quantity_' . $bundled_item_id;
982
  $bundled_product_qty = 0;
983
  }
984
  }
 
 
 
985
 
986
+ if ( $bundled_item->is_priced_individually() ) {
987
+ $product_price = $_bundled_product->get_regular_price();
988
+
989
+ $discount = $bundled_item->get_discount();
990
+ $product_price = empty( $discount ) ? $product_price : WC_PB_Product_Prices::get_discounted_price( $product_price, $discount );
991
 
992
+ $bundled_item_price = $product_price * $bundled_product_qty;
993
+
994
+ $bundled_items_price += (double) $bundled_item_price;
995
+ }
996
 
997
  } // End foreach().
998
  $price = wc_price( (double) $bundle_price + $bundled_items_price );
tinv-wishlists-function.php CHANGED
@@ -537,7 +537,7 @@ if ( ! function_exists( 'tinvwl_shortcode_products_counter' ) ) {
537
  * @return string
538
  */
539
  function tinvwl_shortcode_products_counter( $atts = array() ) {
540
- $class = TInvWL_Public_TopWishlist::instance();
541
 
542
  return $class->shortcode( $atts );
543
  }
537
  * @return string
538
  */
539
  function tinvwl_shortcode_products_counter( $atts = array() ) {
540
+ $class = TInvWL_Public_WishlistCounter::instance();
541
 
542
  return $class->shortcode( $atts );
543
  }