Changeset 3167298
- Timestamp:
- 10/11/2024 05:34:15 PM (17 months ago)
- Location:
- ti-woocommerce-wishlist
- Files:
-
- 295 added
- 2 deleted
- 27 edited
-
tags/2.9.0 (added)
-
tags/2.9.0/admin (added)
-
tags/2.9.0/admin/base.helper.php (added)
-
tags/2.9.0/admin/basesection.helper.php (added)
-
tags/2.9.0/admin/basestyle.helper.php (added)
-
tags/2.9.0/admin/index.php (added)
-
tags/2.9.0/admin/notices.class.php (added)
-
tags/2.9.0/admin/settings (added)
-
tags/2.9.0/admin/settings/general.class.php (added)
-
tags/2.9.0/admin/settings/index.php (added)
-
tags/2.9.0/admin/settings/integrations.class.php (added)
-
tags/2.9.0/admin/settings/settings.class.php (added)
-
tags/2.9.0/admin/settings/style.class.php (added)
-
tags/2.9.0/admin/settings/upgrade.class.php (added)
-
tags/2.9.0/admin/tinvwl.class.php (added)
-
tags/2.9.0/admin/wishlist.class.php (added)
-
tags/2.9.0/assets (added)
-
tags/2.9.0/assets/css (added)
-
tags/2.9.0/assets/css/admin-form-rtl.css (added)
-
tags/2.9.0/assets/css/admin-form-rtl.css.map (added)
-
tags/2.9.0/assets/css/admin-form-rtl.min.css (added)
-
tags/2.9.0/assets/css/admin-form.css (added)
-
tags/2.9.0/assets/css/admin-form.css.map (added)
-
tags/2.9.0/assets/css/admin-form.min.css (added)
-
tags/2.9.0/assets/css/admin-rtl.css (added)
-
tags/2.9.0/assets/css/admin-rtl.css.map (added)
-
tags/2.9.0/assets/css/admin-rtl.min.css (added)
-
tags/2.9.0/assets/css/admin-setup-rtl.css (added)
-
tags/2.9.0/assets/css/admin-setup-rtl.css.map (added)
-
tags/2.9.0/assets/css/admin-setup-rtl.min.css (added)
-
tags/2.9.0/assets/css/admin-setup.css (added)
-
tags/2.9.0/assets/css/admin-setup.css.map (added)
-
tags/2.9.0/assets/css/admin-setup.min.css (added)
-
tags/2.9.0/assets/css/admin.css (added)
-
tags/2.9.0/assets/css/admin.css.map (added)
-
tags/2.9.0/assets/css/admin.min.css (added)
-
tags/2.9.0/assets/css/public-rtl.css (added)
-
tags/2.9.0/assets/css/public-rtl.css.map (added)
-
tags/2.9.0/assets/css/public-rtl.min.css (added)
-
tags/2.9.0/assets/css/public.css (added)
-
tags/2.9.0/assets/css/public.css.map (added)
-
tags/2.9.0/assets/css/public.min.css (added)
-
tags/2.9.0/assets/css/theme-rtl.css (added)
-
tags/2.9.0/assets/css/theme-rtl.css.map (added)
-
tags/2.9.0/assets/css/theme-rtl.min.css (added)
-
tags/2.9.0/assets/css/theme.css (added)
-
tags/2.9.0/assets/css/theme.css.map (added)
-
tags/2.9.0/assets/css/theme.min.css (added)
-
tags/2.9.0/assets/css/webfont-rtl.css (added)
-
tags/2.9.0/assets/css/webfont-rtl.css.map (added)
-
tags/2.9.0/assets/css/webfont-rtl.min.css (added)
-
tags/2.9.0/assets/css/webfont.css (added)
-
tags/2.9.0/assets/css/webfont.css.map (added)
-
tags/2.9.0/assets/css/webfont.min.css (added)
-
tags/2.9.0/assets/fonts (added)
-
tags/2.9.0/assets/fonts/tinvwl-webfont.eot (added)
-
tags/2.9.0/assets/fonts/tinvwl-webfont.svg (added)
-
tags/2.9.0/assets/fonts/tinvwl-webfont.ttf (added)
-
tags/2.9.0/assets/fonts/tinvwl-webfont.woff (added)
-
tags/2.9.0/assets/fonts/tinvwl-webfont.woff2 (added)
-
tags/2.9.0/assets/img (added)
-
tags/2.9.0/assets/img/admin-rescue.png (added)
-
tags/2.9.0/assets/img/admin-rescue@2x.png (added)
-
tags/2.9.0/assets/img/admin-update.png (added)
-
tags/2.9.0/assets/img/admin-update@2x.png (added)
-
tags/2.9.0/assets/img/chevron_down.png (added)
-
tags/2.9.0/assets/img/chevron_down@2x.png (added)
-
tags/2.9.0/assets/img/chevron_icon.png (added)
-
tags/2.9.0/assets/img/chevron_icon@2x.png (added)
-
tags/2.9.0/assets/img/color_icon.png (added)
-
tags/2.9.0/assets/img/color_icon@2x.png (added)
-
tags/2.9.0/assets/img/cyber_monday.png (added)
-
tags/2.9.0/assets/img/heart-tinv.svg (added)
-
tags/2.9.0/assets/img/icon_menu.png (added)
-
tags/2.9.0/assets/img/icon_menu@2x.png (added)
-
tags/2.9.0/assets/img/logo_heart.png (added)
-
tags/2.9.0/assets/img/logo_heart@2x.png (added)
-
tags/2.9.0/assets/img/money-back.svg (added)
-
tags/2.9.0/assets/img/premium_logo.png (added)
-
tags/2.9.0/assets/img/select_caret.png (added)
-
tags/2.9.0/assets/img/select_caret@2x.png (added)
-
tags/2.9.0/assets/img/select_caret_t.png (added)
-
tags/2.9.0/assets/img/select_caret_t@2x.png (added)
-
tags/2.9.0/assets/img/wishlists_table.png (added)
-
tags/2.9.0/assets/img/wizard_logo.png (added)
-
tags/2.9.0/assets/img/wizard_logo@2x.png (added)
-
tags/2.9.0/assets/img/wizard_setup.png (added)
-
tags/2.9.0/assets/img/wizard_setup@2x.png (added)
-
tags/2.9.0/assets/js (added)
-
tags/2.9.0/assets/js/admin.js (added)
-
tags/2.9.0/assets/js/admin.min.js (added)
-
tags/2.9.0/assets/js/blocks.js (added)
-
tags/2.9.0/assets/js/bootstrap.js (added)
-
tags/2.9.0/assets/js/bootstrap.min.js (added)
-
tags/2.9.0/assets/js/clipboard.min.js (added)
-
tags/2.9.0/assets/js/editor.js (added)
-
tags/2.9.0/assets/js/public.js (added)
-
tags/2.9.0/assets/js/public.min.js (added)
-
tags/2.9.0/includes (added)
-
tags/2.9.0/includes/activator.class.php (added)
-
tags/2.9.0/includes/analytics.class.php (added)
-
tags/2.9.0/includes/api (added)
-
tags/2.9.0/includes/api.class.php (added)
-
tags/2.9.0/includes/api/wishlist.class.php (added)
-
tags/2.9.0/includes/deprecated (added)
-
tags/2.9.0/includes/deprecated.class.php (added)
-
tags/2.9.0/includes/deprecated/actions.class.php (added)
-
tags/2.9.0/includes/deprecated/filters.class.php (added)
-
tags/2.9.0/includes/export.class.php (added)
-
tags/2.9.0/includes/form.helper.php (added)
-
tags/2.9.0/includes/index.php (added)
-
tags/2.9.0/includes/pluginextend.helper.php (added)
-
tags/2.9.0/includes/product (added)
-
tags/2.9.0/includes/product.helper.php (added)
-
tags/2.9.0/includes/product/index.php (added)
-
tags/2.9.0/includes/product/legacy.class.php (added)
-
tags/2.9.0/includes/product/local.class.php (added)
-
tags/2.9.0/includes/tinvwl.class.php (added)
-
tags/2.9.0/includes/update.helper.php (added)
-
tags/2.9.0/includes/view.helper.php (added)
-
tags/2.9.0/includes/viewsection.helper.php (added)
-
tags/2.9.0/includes/wishlist.class.php (added)
-
tags/2.9.0/includes/wizard.class.php (added)
-
tags/2.9.0/includes/wizardsetup.helper.php (added)
-
tags/2.9.0/index.php (added)
-
tags/2.9.0/integrations (added)
-
tags/2.9.0/integrations/advanced-product-fields-for-woocommerce-pro.php (added)
-
tags/2.9.0/integrations/advanced-product-fields-for-woocommerce.php (added)
-
tags/2.9.0/integrations/automatewoo (added)
-
tags/2.9.0/integrations/automatewoo.php (added)
-
tags/2.9.0/integrations/automatewoo/trigger-wishlist-item-added-to-cart.php (added)
-
tags/2.9.0/integrations/automatewoo/trigger-wishlist-item-added.php (added)
-
tags/2.9.0/integrations/automatewoo/trigger-wishlist-item-purchased.php (added)
-
tags/2.9.0/integrations/automatewoo/trigger-wishlist-item-removed.php (added)
-
tags/2.9.0/integrations/automatewoo/trigger-wishlist-reminder.php (added)
-
tags/2.9.0/integrations/automatewoo/wishlist.class.php (added)
-
tags/2.9.0/integrations/buy-now-button-for-woocommerce.php (added)
-
tags/2.9.0/integrations/check-pincodezipcode-for-shipping-woocommerce.php (added)
-
tags/2.9.0/integrations/cleantalk-spam-protect.php (added)
-
tags/2.9.0/integrations/clever-swatches.php (added)
-
tags/2.9.0/integrations/comet-cache.php (added)
-
tags/2.9.0/integrations/duracelltomi-google-tag-manager.php (added)
-
tags/2.9.0/integrations/elex-woocommerce-catalog-mode.php (added)
-
tags/2.9.0/integrations/gift-cards-for-woocommerce.php (added)
-
tags/2.9.0/integrations/hide-price-add-to-cart-button.php (added)
-
tags/2.9.0/integrations/honeypot.php (added)
-
tags/2.9.0/integrations/improved-variable-product-attributes.php (added)
-
tags/2.9.0/integrations/ione360-configurator.php (added)
-
tags/2.9.0/integrations/litespeed-cache.php (added)
-
tags/2.9.0/integrations/mycred.php (added)
-
tags/2.9.0/integrations/nasa-core.php (added)
-
tags/2.9.0/integrations/product-extras-for-woocommerce.php (added)
-
tags/2.9.0/integrations/product-quantity-for-woocommerce.php (added)
-
tags/2.9.0/integrations/pw-woocommerce-gift-cards.php (added)
-
tags/2.9.0/integrations/shopengine.php (added)
-
tags/2.9.0/integrations/show-single-variations.php (added)
-
tags/2.9.0/integrations/sitepress-multilingual-cms.php (added)
-
tags/2.9.0/integrations/theme-divi.php (added)
-
tags/2.9.0/integrations/theme-flatsome.php (added)
-
tags/2.9.0/integrations/theme-kallyas.php (added)
-
tags/2.9.0/integrations/theme-oceanwp.php (added)
-
tags/2.9.0/integrations/uni-woo-custom-product-options.php (added)
-
tags/2.9.0/integrations/vad-product-design.php (added)
-
tags/2.9.0/integrations/wc-fields-factory.php (added)
-
tags/2.9.0/integrations/woo-advanced-qty.php (added)
-
tags/2.9.0/integrations/woo-custom-product-addons.php (added)
-
tags/2.9.0/integrations/woo-extra-product-options.php (added)
-
tags/2.9.0/integrations/woo-payment-gateway.php (added)
-
tags/2.9.0/integrations/woo-product-bundle.php (added)
-
tags/2.9.0/integrations/woo-variation-swatches-pro.php (added)
-
tags/2.9.0/integrations/woo-variations-table-grid.php (added)
-
tags/2.9.0/integrations/woocommerce-booking.php (added)
-
tags/2.9.0/integrations/woocommerce-bookings.php (added)
-
tags/2.9.0/integrations/woocommerce-composite-products.php (added)
-
tags/2.9.0/integrations/woocommerce-custom-fields.php (added)
-
tags/2.9.0/integrations/woocommerce-fast-cart.php (added)
-
tags/2.9.0/integrations/woocommerce-gravityforms-product-addons.php (added)
-
tags/2.9.0/integrations/woocommerce-mix-and-match-products.php (added)
-
tags/2.9.0/integrations/woocommerce-multilingual.php (added)
-
tags/2.9.0/integrations/woocommerce-product-addon.php (added)
-
tags/2.9.0/integrations/woocommerce-product-addons.php (added)
-
tags/2.9.0/integrations/woocommerce-product-bundles.php (added)
-
tags/2.9.0/integrations/woocommerce-product-table.php (added)
-
tags/2.9.0/integrations/woocommerce-rental-and-booking.php (added)
-
tags/2.9.0/integrations/woocommerce-square.php (added)
-
tags/2.9.0/integrations/woocommerce-tm-extra-product-options.php (added)
-
tags/2.9.0/integrations/woocommerce-waitlist.php (added)
-
tags/2.9.0/integrations/wp-fastest-cache.php (added)
-
tags/2.9.0/integrations/wp-grid-builder.php (added)
-
tags/2.9.0/integrations/wp-multilang.php (added)
-
tags/2.9.0/integrations/wp-rocket.php (added)
-
tags/2.9.0/integrations/wpc-variations-radio-buttons.php (added)
-
tags/2.9.0/integrations/yith-woocommerce-product-add-ons.php (added)
-
tags/2.9.0/integrations/yith-woocommerce-product-bundles.php (added)
-
tags/2.9.0/integrations/yith-woocommerce-quick-view.php (added)
-
tags/2.9.0/languages (added)
-
tags/2.9.0/languages/ti-woocommerce-wishlist.pot (added)
-
tags/2.9.0/public (added)
-
tags/2.9.0/public/addtowishlist.class.php (added)
-
tags/2.9.0/public/cart.class.php (added)
-
tags/2.9.0/public/index.php (added)
-
tags/2.9.0/public/tinvwl.class.php (added)
-
tags/2.9.0/public/widget (added)
-
tags/2.9.0/public/widget/index.php (added)
-
tags/2.9.0/public/widget/wishlistcounter.class.php (added)
-
tags/2.9.0/public/wishlist (added)
-
tags/2.9.0/public/wishlist/ajax.class.php (added)
-
tags/2.9.0/public/wishlist/buttons.class.php (added)
-
tags/2.9.0/public/wishlist/index.php (added)
-
tags/2.9.0/public/wishlist/social.class.php (added)
-
tags/2.9.0/public/wishlist/view.class.php (added)
-
tags/2.9.0/public/wishlistcounter.class.php (added)
-
tags/2.9.0/readme.txt (added)
-
tags/2.9.0/templates (added)
-
tags/2.9.0/templates/ti-addedtowishlist-dialogbox.php (added)
-
tags/2.9.0/templates/ti-addtowishlist.php (added)
-
tags/2.9.0/templates/ti-wishlist-empty.php (added)
-
tags/2.9.0/templates/ti-wishlist-header.php (added)
-
tags/2.9.0/templates/ti-wishlist-item-data.php (added)
-
tags/2.9.0/templates/ti-wishlist-null.php (added)
-
tags/2.9.0/templates/ti-wishlist-product-counter.php (added)
-
tags/2.9.0/templates/ti-wishlist-social.php (added)
-
tags/2.9.0/templates/ti-wishlist-user.php (added)
-
tags/2.9.0/templates/ti-wishlist.php (added)
-
tags/2.9.0/ti-woocommerce-wishlist.php (added)
-
tags/2.9.0/tinv-wishlists-function.php (added)
-
tags/2.9.0/vendor (added)
-
tags/2.9.0/vendor/autoload.php (added)
-
tags/2.9.0/vendor/composer (added)
-
tags/2.9.0/vendor/composer/ClassLoader.php (added)
-
tags/2.9.0/vendor/composer/InstalledVersions.php (added)
-
tags/2.9.0/vendor/composer/LICENSE (added)
-
tags/2.9.0/vendor/composer/autoload_classmap.php (added)
-
tags/2.9.0/vendor/composer/autoload_namespaces.php (added)
-
tags/2.9.0/vendor/composer/autoload_psr4.php (added)
-
tags/2.9.0/vendor/composer/autoload_real.php (added)
-
tags/2.9.0/vendor/composer/autoload_static.php (added)
-
tags/2.9.0/vendor/composer/installed.json (added)
-
tags/2.9.0/vendor/composer/installed.php (added)
-
tags/2.9.0/vendor/composer/platform_check.php (added)
-
tags/2.9.0/vendor/imangazaliev (added)
-
tags/2.9.0/vendor/imangazaliev/didom (added)
-
tags/2.9.0/vendor/imangazaliev/didom/CHANGELOG.md (added)
-
tags/2.9.0/vendor/imangazaliev/didom/LICENSE (added)
-
tags/2.9.0/vendor/imangazaliev/didom/README-RU.md (added)
-
tags/2.9.0/vendor/imangazaliev/didom/README.md (added)
-
tags/2.9.0/vendor/imangazaliev/didom/composer.json (added)
-
tags/2.9.0/vendor/imangazaliev/didom/composer.lock (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/ClassAttribute.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Document.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/DocumentFragment.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Element.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Encoder.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Errors.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Exceptions (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Exceptions/InvalidSelectorException.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Node.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/Query.php (added)
-
tags/2.9.0/vendor/imangazaliev/didom/src/DiDom/StyleAttribute.php (added)
-
tags/2.9.0/views (added)
-
tags/2.9.0/views/admin (added)
-
tags/2.9.0/views/admin/export-import-settings.php (added)
-
tags/2.9.0/views/admin/index.php (added)
-
tags/2.9.0/views/admin/premium-features.php (added)
-
tags/2.9.0/views/admin/templates-status.php (added)
-
tags/2.9.0/views/admin/wishlists.php (added)
-
tags/2.9.0/views/general.php (added)
-
tags/2.9.0/views/header.php (added)
-
tags/2.9.0/views/index.php (added)
-
tags/2.9.0/views/message.php (added)
-
tags/2.9.0/views/null.php (added)
-
tags/2.9.0/views/section-field-html.php (added)
-
tags/2.9.0/views/section-field-style.php (added)
-
tags/2.9.0/views/section-field.php (added)
-
tags/2.9.0/views/section-general.php (added)
-
tags/2.9.0/views/section-group-style-e.php (added)
-
tags/2.9.0/views/section-group-style.php (added)
-
tags/2.9.0/views/section-group.php (added)
-
tags/2.9.0/views/section-infoblock.php (added)
-
tags/2.9.0/views/wizard (added)
-
tags/2.9.0/views/wizard/finish.php (added)
-
tags/2.9.0/views/wizard/footer.php (added)
-
tags/2.9.0/views/wizard/header.php (added)
-
tags/2.9.0/views/wizard/index.php (added)
-
tags/2.9.0/views/wizard/intro.php (added)
-
tags/2.9.0/views/wizard/step-button.php (added)
-
tags/2.9.0/views/wizard/step-page-field.php (added)
-
tags/2.9.0/views/wizard/step-page.php (added)
-
tags/2.9.0/views/wizard/step-processing.php (added)
-
tags/2.9.0/views/wizard/step-social.php (added)
-
tags/2.9.0/views/wizard/step-support.php (added)
-
tags/2.9.0/wpm-config.json (added)
-
tags/2.9.0/wpml-config.xml (added)
-
trunk/assets/blueprints (deleted)
-
trunk/assets/css/admin-form-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-form.min.css (modified) (1 diff)
-
trunk/assets/css/admin-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-setup-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-setup.min.css (modified) (1 diff)
-
trunk/assets/css/admin.min.css (modified) (1 diff)
-
trunk/assets/css/public-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/public.min.css (modified) (1 diff)
-
trunk/assets/css/theme-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/theme.min.css (modified) (1 diff)
-
trunk/assets/css/webfont-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/webfont.min.css (modified) (1 diff)
-
trunk/assets/js/admin.min.js (modified) (1 diff)
-
trunk/assets/js/public.js (modified) (3 diffs)
-
trunk/assets/js/public.min.js (modified) (1 diff)
-
trunk/includes/analytics.class.php (modified) (4 diffs)
-
trunk/includes/api/wishlist.class.php (modified) (3 diffs)
-
trunk/includes/product.helper.php (modified) (5 diffs)
-
trunk/includes/wishlist.class.php (modified) (8 diffs)
-
trunk/languages/ti-woocommerce-wishlist.pot (modified) (4 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/ti-woocommerce-wishlist.php (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/bin (deleted)
-
trunk/vendor/composer/ClassLoader.php (modified) (24 diffs)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ti-woocommerce-wishlist/trunk/assets/css/admin-form-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-form.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-setup-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-setup.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/public-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/public.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/theme-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/theme.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/webfont-rtl.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/webfont.min.css
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/js/admin.min.js
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ 6 "use strict";function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){n=n||".";return"{0}{1}{2}".format(n,this.pf,t)},this._tm=function(t){t=$("script#{0}[type='text/template']".format(t));return t.length?t.html():""},this.formElm=function(){var e,n;$(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker&&(e=function(t){t=t.substring(1),t=parseInt(t,16);return.2126*(t>>16&255)+.7152*(t>>8&255)+.0722*(t>>0&255)},n=this._csel("-form-color"),$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){($(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)):$(n)).iris("hide")}))},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""!==t.val()?(n.removeClass("tinvwl-error"),e.hide(),o.hide()):0==i&&(n.addClass("tinvwl-error"),e.show(),o.show())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),t=t.parents("form").eq(0);i&&("-1"!==i.val()&&t.find("input[type=checkbox]:checked").length||n.preventDefault())},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){t=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");t&&""===t.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t,n=this.n;this.ho&&(n=n+(t=new Date).getFullYear()+t.getMonth()+t.getDate()),window[n]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})});var o=this,n=o.n,ho=o.ho,c=ho?"t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),":"",i;for(i in o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}!function(s){s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var c=s.extend(!0,{},{onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},t);return s(this).each(function(){function t(){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),e=n.attr("tiwl-hide"),o=c.isChecked.call(n);return"string"==typeof i&&t(i,o),"string"==typeof e&&t(e,!o),n}var n=s(this);return n.is("input")&&"checkbox"==n.attr("type")?(s(this).on("change",t),t.call(n)):n})},s.fn.tiwl_byvalueblock=function(t){var i=s.extend(!0,{},{onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},t);return s(this).each(function(){function t(e){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),o=n.attr("tiwl-hide"),c=e.onClick.call(n);return"string"==typeof i&&t(i,c),"string"==typeof o&&t(o,!c),n}var n=s(this);return n.is("input")||n.is("select")?(s(this).on("change",function(){t.call(this,i)}),t.call(n,i)):n})};var n=new TInvWL(s);s(document).ready(function(){var t;n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover&&((t=s(".tinvwl-help")).popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})),s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})}(jQuery);6 function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){n=n||".";return"{0}{1}{2}".format(n,this.pf,t)},this._tm=function(t){t=$("script#{0}[type='text/template']".format(t));return t.length?t.html():""},this.formElm=function(){var e,n;$(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker&&(e=function(t){t=t.substring(1),t=parseInt(t,16);return.2126*(t>>16&255)+.7152*(t>>8&255)+.0722*(t>>0&255)},n=this._csel("-form-color"),$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){($(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)):$(n)).iris("hide")}))},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""===t.val()?0==i&&(n.addClass("tinvwl-error"),e.show(),o.show()):(n.removeClass("tinvwl-error"),e.hide(),o.hide())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),t=t.parents("form").eq(0);!i||"-1"!==i.val()&&t.find("input[type=checkbox]:checked").length||n.preventDefault()},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){t=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");t&&""===t.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t,n=this.n;this.ho&&(n=n+(t=new Date).getFullYear()+t.getMonth()+t.getDate()),window[n]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})}),!function(o){var n=o.n,ho=o.ho,c=ho?"t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),":"",i;for(i in o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}(this)}(s=>{s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var c=s.extend(!0,{},{onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},t);return s(this).each(function(){function t(){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),e=n.attr("tiwl-hide"),o=c.isChecked.call(n);return"string"==typeof i&&t(i,o),"string"==typeof e&&t(e,!o),n}var n=s(this);return n.is("input")&&"checkbox"==n.attr("type")?(s(this).on("change",t),t.call(n)):n})},s.fn.tiwl_byvalueblock=function(t){var i=s.extend(!0,{},{onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},t);return s(this).each(function(){function t(e){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),o=n.attr("tiwl-hide"),c=e.onClick.call(n);return"string"==typeof i&&t(i,c),"string"==typeof o&&t(o,!c),n}var n=s(this);return n.is("input")||n.is("select")?(s(this).on("change",function(){t.call(this,i)}),t.call(n,i)):n})};var n=new TInvWL(s);s(document).ready(function(){var t;n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover&&((t=s(".tinvwl-help")).popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})),s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})})(jQuery); -
ti-woocommerce-wishlist/trunk/assets/js/public.js
r3001363 r3167298 196 196 value_elm = $(this).val(), 197 197 count = 10, 198 ti_merge_value = function ti_merge_value(o1, o2) {198 _ti_merge_value = function ti_merge_value(o1, o2) { 199 199 if ('object' === _typeof(o2)) { 200 200 if ('undefined' === typeof o1) { … … 208 208 } 209 209 j = parseInt(j) + 1; 210 o1[j] = ti_merge_value(o1[i], o2[i]);210 o1[j] = _ti_merge_value(o1[i], o2[i]); 211 211 } else { 212 o1[i] = ti_merge_value(o1[i], o2[i]);212 o1[i] = _ti_merge_value(o1[i], o2[i]); 213 213 } 214 214 } … … 242 242 value_elm = true; 243 243 } 244 data.form[name_elm] = ti_merge_value(data.form[name_elm], value_elm);244 data.form[name_elm] = _ti_merge_value(data.form[name_elm], value_elm); 245 245 } 246 246 } else { 247 data.form[name_elm] = ti_merge_value(data.form[name_elm], value_elm);247 data.form[name_elm] = _ti_merge_value(data.form[name_elm], value_elm); 248 248 } 249 249 if ('hidden' === type_elm) { -
ti-woocommerce-wishlist/trunk/assets/js/public.min.js
r3044331 r3167298 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2. 8.23 * @version 2.9.0 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ 6 "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}!function(w){w.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href.split("?")[0],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(){w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){w(this).append(w("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){w(t).addClass("tinv-modal-open"),w(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){w(this).removeClass("tinv-modal-open"),w(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(w(this).is(".disabled-add-wishlist"))return!1;w(this).is(".ftinvwl-animated")&&w(this).addClass("ftinvwl-pulse"),(this.tinvwl_dialog?this.tinvwl_dialog.show_list:s.onActionProduct).call(this)},onPrepareDataAction:function(t,i){w("body").trigger("tinvwl_wishlist_button_clicked",[t,i])},filterProductAlreadyIn:function(t){var t=t||[],n={};return w("form.cart[method=post], .woocommerce-variation-add-to-cart, form.vtajaxform[method=post]").find("input, select").each(function(){var t=w(this).attr("name"),i=w(this).attr("type"),e=w(this).val();("checkbox"!==i&&"radio"!==i||w(this).is(":checked"))&&(n["form"+t]=e)}),n=n.formvariation_id,t.filter(function(t){var i;return"object"===_typeof(t.in)&&"string"==typeof n?(i=parseInt(n),0<=t.in.indexOf(i)):t.in})},onMultiProductAlreadyIn:function(t){var t=t||[],e=(t=s.onPrepareList.call(t)||t,t=s.filterProductAlreadyIn.call(this,t)||t,w(this).parent().parent().find(".already-in").remove(),"");0===t.length||(e=w("<ul>"),w.each(t,function(t,i){e.append(w("<li>").html(w("<a>").html(i.title).attr({href:i.url})).val(i.ID))})),e.length&&w(this).closest(".tinv-modal-inner").find("img").after(w("<div>").addClass("already-in").html(s.text_already_in+" ").append(e))},onAction:{redirect:function(t){s.redirectTimer&&clearTimeout(s.redirectTimer),s.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(t){},msg:function(t){if(!t)return!1;var i=w(t).eq(0);w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),s.redirectTimer||(s.removeTimer=window.setTimeout(function(){i.remove(),s.redirectTimer&&clearTimeout(s.redirectTimer)},tinvwl_add_to_wishlist.popup_timer)),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),s.redirectTimer&&clearTimeout(s.redirectTimer),s.removeTimer&&clearTimeout(s.removeTimer)})},status:function(t){w("body").trigger("tinvwl_wishlist_added_status",[this,t])},removed:function(t){},make_remove:function(t){},wishlists_data:function(t){d(JSON.stringify(t))}}},s=(i.onActionProduct=function(t,i){var d={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:w(this).attr("data-tinv-wl-producttype"),product_id:w(this).attr("data-tinv-wl-product")||0,product_variation:w(this).attr("data-tinv-wl-productvariation")||0,product_action:w(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},e=this,n=[],r=[],c=new FormData;tinvwl_add_to_wishlist.wpml&&(d.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(d.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(d.stats=tinvwl_add_to_wishlist.stats),w('form.cart[method=post][data-product_id="'+w(this).attr("data-tinv-wl-product")+'"], form.vtajaxform[method=post][data-product_id="'+w(this).attr("data-tinv-wl-product")+'"]').each(function(){n.push(w(this))}),n.length||(w(e).closest("form.cart[method=post], form.vtajaxform[method=post]").each(function(){n.push(w(this))}),n.length||n.push(w("form.cart[method=post]"))),w('.tinv-wraper[data-tinvwl_product_id="'+w(this).attr("data-tinv-wl-product")+'"]').each(function(){n.push(w(this))}),w.each(n,function(t,i){w(i).find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){function s(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);t[n=parseInt(n)+1]=s(t[e],i[e])}else t[e]=s(t[e],i[e]);return t}var t,i=w(this).attr("name"),e=w(this).attr("type"),n=w(this).val(),o=10;if("button"!==e&&void 0!==i){for(;/^(.+)\[([^\[\]]*?)\]$/.test(i)&&0<o;){var a,l=i.match(/^(.+)\[([^\[\]]*?)\]$/);3===l.length&&((a={})[l[2]]=n,n=a),i=l[1],o--}"file"!==e||(t=w(this)[0].files)&&c.append(i,t[0]),"checkbox"===e||"radio"===e?w(this).is(":checked")&&(n.length||"object"===_typeof(n)||(n=!0),d.form[i]=s(d.form[i],n)):d.form[i]=s(d.form[i],n),"hidden"===e&&r.push(i)}})}),d.form["tinvwl-hidden-fields"]=r,d=s.onPrepareDataAction.call(e,e,d)||d,w.each(d,function(e,t){"form"===e?w.each(t,function(t,i){"object"===_typeof(i)&&(i=JSON.stringify(i)),c.append(e+"["+t+"]",i)}):c.append(e,t)}),w.ajax({url:s.api_url,method:"POST",contentType:!1,processData:!1,data:c}).done(function(t){if(w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),s.onDialogHide.call(e.tinvwl_dialog,e),"object"===_typeof(t))for(var i in t)"function"==typeof s.onAction[i]&&s.onAction[i].call(e,t[i]);else"function"==typeof s.onAction.msg&&s.onAction.msg.call(e,t)})},w.extend(!0,{},i,t));return w(this).each(function(){if(!w(this).attr("data-tinv-wl-list"))return!1;var t,n;s.dialogbox&&s.dialogbox.length&&(this.tinvwl_dialog=s.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=s.onGetDialogBox.call(this)),this.tinvwl_dialog||(t=w(this).nextAll(s.class.dialogbox).eq(0)).length&&(this.tinvwl_dialog=t),this.tinvwl_dialog&&(s.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=w(this).find(s.class.select).eq(0);w(this).find(s.class.newtitle).hide().val(""),e.html(""),w.each(t,function(t,i){s.onCreateWishList.call(e,i)}),s.text_create&&s.onCreateWishList.call(e,{ID:"",title:s.text_create,in:!1}),s.onMultiProductAlreadyIn.call(e,t),s.onSelectWishList.call(e,t),w(this).find(s.class.newtitle).toggle(""===e.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=JSON.parse(w(this).attr("data-tinv-wl-list"))||[];t.length?(t=s.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),s.onDialogShow.call(this.tinvwl_dialog,this)):s.onActionProduct.call(this)}),w((n=this).tinvwl_dialog).find(s.class.dialogbutton).off("click").on("click",function(){var t,i=w(n.tinvwl_dialog).find(s.class.select),e=w(n.tinvwl_dialog).find(s.class.newtitle);i.val()||e.val()?s.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))})),w(this).off("click").on("click",s.onClick),s.onInited.call(this,s)})},w(document).ready(function(){w("body").on("click keydown",".tinvwl_add_to_wishlist_button",function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return;t.preventDefault()}if(w("body").trigger("tinvwl_add_to_wishlist_button_click",[this]),w(this).is(".disabled-add-wishlist"))return t.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);w(this).is(".inited-add-wishlist")||w(this).tinvwl_to_wishlist({onInited:function(t){w(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),w("body").on("click keydown",'button[name="tinvwl-remove"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-product_id":n.val(),"tinvwl-action":"remove","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.data("tinvwl_paged")||n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.data("tinvwl_per_page")||n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.data("tinvwl_sharekey")||n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),t.status&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),w(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),w(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return w(this).is(":checked")}}),jQuery.fn.tinvwl_get_wishlist_data()),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t])}))}),w("body").on("click keydown",'button[name="tinvwl-add-to-cart"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-product_id":n.val(),"tinvwl-action":"add_to_cart_single","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.data("tinvwl_paged")||n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.data("tinvwl_per_page")||n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.data("tinvwl_sharekey")||n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)}))}),w("body").on("click keydown",'button[name="tinvwl-action-product_all"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-action":"add_to_cart_all","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)}))}),w("body").on("click keydown",'button[name="tinvwl-action-product_apply"], button[name="tinvwl-action-product_selected"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n,e=[],s=(w('input[name="wishlist_pr[]"]:checked').each(function(){e.push(this.value)}),w(this));e.length&&("tinvwl-action-product_selected"===s.attr("name")||w("select#tinvwl_product_actions option").filter(":selected").val())?s.is(".inited-wishlist-action")||(s.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),n="",n="tinvwl-action-product_selected"===s.attr("name")?"add_to_cart_selected":w("select#tinvwl_product_actions option").filter(":selected").val(),i={"tinvwl-products":e,"tinvwl-action":n,"tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":s.closest("form").data("tinvwl_paged"),"tinvwl-per-page":s.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":s.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;s.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),"add_to_cart_selected"===n&&w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)})):alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit)}),w(document).on("hide_variation",".variations_form",function(t){var i=w('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+w(this).data("product_id")+'"]'),e=(i.attr("data-tinv-wl-productvariation",0),tinvwl_add_to_wishlist.block_ajax_wishlists_data);tinvwl_add_to_wishlist.block_ajax_wishlists_data=!0,w.fn.tinvwl_get_wishlist_data(),tinvwl_add_to_wishlist.block_ajax_wishlists_data=e,i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),w(document).on("show_variation",".variations_form",function(t,i,e){var n=w('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+w(this).data("product_id")+'"]'),i=(n.attr("data-tinv-wl-productvariation",i.variation_id),tinvwl_add_to_wishlist.block_ajax_wishlists_data);tinvwl_add_to_wishlist.block_ajax_wishlists_data=!0,w.fn.tinvwl_get_wishlist_data(),tinvwl_add_to_wishlist.block_ajax_wishlists_data=i,t.preventDefault(),n.removeClass("disabled-add-wishlist")}),w(window).on("storage onstorage",function(t){a===t.originalEvent.key&&localStorage.getItem(a)!==sessionStorage.getItem(a)&&(!localStorage.getItem(a)||"object"===_typeof(t=JSON.parse(localStorage.getItem(a)))&&null!==t&&(t.hasOwnProperty("products")||t.hasOwnProperty("counter"))&&d(localStorage.getItem(a)))});function e(i){var t,e;(n.length||s)&&tinvwl_add_to_wishlist.user_interacted&&(t={"tinvwl-action":"get_data","tinvwl-security":tinvwl_add_to_wishlist.nonce},"refresh"!==i||(e=w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear form[data-tinvwl_sharekey]")).length&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),t["tinvwl-paged"]=e.data("tinvwl_paged"),t["tinvwl-per-page"]=e.data("tinvwl_per_page"),t["tinvwl-sharekey"]=e.data("tinvwl_sharekey")),tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(t.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(t.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){"refresh"===i&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),localStorage.setItem(a+"_refresh","")),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t])}))}var n=[],s=!1,t=(w("a.tinvwl_add_to_wishlist_button").each(function(){"undefined"!==w(this).data("tinv-wl-product")&&w(this).data("tinv-wl-product")&&n.push(w(this).data("tinv-wl-product"))}),w(".wishlist_products_counter_number").each(function(){s=!0}),w.fn.tinvwl_get_wishlist_data=function(t){if("refresh"!==t){if(o&&("undefined"!=typeof Cookies&&void 0!==Cookies.get("tinvwl_update_data")&&(Cookies.set("tinvwl_update_data",0,{expires:-1}),localStorage.setItem(a,"")),localStorage.getItem(a))){var i=JSON.parse(localStorage.getItem(a));if("object"===_typeof(i)&&null!==i&&(i.hasOwnProperty("products")||i.hasOwnProperty("counter"))&&(!i.hasOwnProperty("lang")&&!tinvwl_add_to_wishlist.wpml||tinvwl_add_to_wishlist.wpml&&i.lang===tinvwl_add_to_wishlist.wpml)){if("undefined"!=typeof Cookies&&void 0===Cookies.get("tinvwl_wishlists_data_counter"))return void l(i);if("undefined"!=typeof Cookies&&Cookies.get("tinvwl_wishlists_data_counter")==i.counter&&(!i.hasOwnProperty("stats_count")||Cookies.get("tinvwl_wishlists_data_stats")==i.stats_count))return void l(i)}}tinvwl_add_to_wishlist.block_ajax_wishlists_data?setTimeout(function(){l(i)},500):e()}else e(t)},tinvwl_add_to_wishlist.user_interacted=!1,w.fn.tinvwl_get_wishlist_data(),w(document).one("click keydown scroll",function(){tinvwl_add_to_wishlist.user_interacted=!0,w.fn.tinvwl_get_wishlist_data()}),new MutationObserver(function(t){var i=[];t.forEach(function(t){t=t.addedNodes;null!==t&&w(t).each(function(){var t=w(this).find(".tinvwl_add_to_wishlist_button");t.length&&t.each(function(){var t=w(this).data("tinv-wl-product");void 0!==t&&t&&i.push(t)})})}),i.length&&w.fn.tinvwl_get_wishlist_data()})),i=document.body;t.observe(i,{childList:!0,subtree:!0})});var o=!0,a=tinvwl_add_to_wishlist.hash_key;try{o="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("ti","test"),window.sessionStorage.removeItem("ti"),window.localStorage.setItem("ti","test"),window.localStorage.removeItem("ti")}catch(t){o=!1}function l(t){var a="1"==window.tinvwl_add_to_wishlist.simple_flow,i=(w("a.tinvwl_add_to_wishlist_button").each(function(){w(this).removeClass("tinvwl-product-make-remove").removeClass("tinvwl-product-in-list").attr("data-tinv-wl-action","addto").attr("data-tinv-wl-list","[]"),t&&t.stats&&w(this).find("span.tinvwl-product-stats").remove()}),w("body").trigger("tinvwl_wishlist_mark_products",[t]),w.each(t.products,function(t,s){var o=t;w('a.tinvwl_add_to_wishlist_button[data-tinv-wl-product="'+o+'"]').each(function(){var i,t=parseInt(w(this).attr("data-tinv-wl-productvariation")),e=w(this).data("tinv-wl-productvariations")||[],n=!1;for(i in s)s[i].hasOwnProperty("in")&&Array.isArray(s[i].in)&&(-1<(s[i].in||[]).indexOf(o)||-1<(s[i].in||[]).indexOf(t)||e.some(function(t){return 0<=(s[i].in||[]).indexOf(t)}))&&(n=!0);w(this).attr("data-tinv-wl-list",JSON.stringify(s)).toggleClass("tinvwl-product-in-list",n).toggleClass("tinvwl-product-make-remove",n&&a).attr("data-tinv-wl-action",n&&a?"remove":"addto"),w("body").trigger("tinvwl_wishlist_product_marked",[this,n])})}),t&&t.stats&&tinvwl_add_to_wishlist.stats&&w.each(t.stats,function(t,e){w('a.tinvwl_add_to_wishlist_button[data-tinv-wl-product="'+t+'"]').each(function(){w(this).attr("data-tinv-wl-product-stats",JSON.stringify(e));var t,i=parseInt(w(this).attr("data-tinv-wl-productvariation"));for(t in e)-1<t.indexOf(i)&&(w("body").trigger("tinvwl_wishlist_product_stats",[this,!0]),w(this).append('<span class="tinvwl-product-stats">'+e[t]+"</span>"))})}),t.counter);"1"==window.tinvwl_add_to_wishlist.hide_zero_counter&&0===i&&(i="false"),jQuery("i.wishlist-icon").addClass("added"),"false"!==i?(jQuery(".wishlist_products_counter_number, .theme-item-count.wishlist-item-count").html(i),jQuery("i.wishlist-icon").attr("data-icon-label",i)):(jQuery(".wishlist_products_counter_number, .theme-item-count.wishlist-item-count").html("").closest("span.wishlist-counter-with-products").removeClass("wishlist-counter-with-products"),jQuery("i.wishlist-icon").removeAttr("data-icon-label")),i=!("0"==i||"false"==i),jQuery(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",i),setTimeout(function(){jQuery("i.wishlist-icon").removeClass("added")},500)}function d(t){o&&(localStorage.setItem(a,t),sessionStorage.setItem(a,t),l(JSON.parse(t)))}function r(t){var t=w(t).find("select, input, textarea, button, a").filter(":visible"),i=t.first(),e=t.last();i.focus().blur(),e.on("keydown",function(t){9!==t.which||t.shiftKey||(t.preventDefault(),i.focus())}),i.on("keydown",function(t){9===t.which&&t.shiftKey&&(t.preventDefault(),e.focus())})}}(jQuery),function(n){n(document).ready(function(){if(n(".tinv-lists-nav").each(function(){n(this).html().trim().length||n(this).remove()}),n("body").on("click",".social-buttons .social:not(.social-email,.social-whatsapp,.social-clipboard)",function(t){var i=window.open(n(this).attr("href"),n(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}n("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),n("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),n(this).parents(".tinv-modal:first").removeClass("tinv-modal-open"),n("body").trigger("tinvwl_modal_closed",[this])}),n("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){n(this).data("url")&&(t.preventDefault(),window.location=n(this).data("url"))});var e=n(".tinv-wishlist .navigation-button");e.length&&e.each(function(){var t=n(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),n(".tinv-login .showlogin").off("click").on("click",function(t){t.preventDefault(),n(this).closest(".tinv-login").find(".login").toggle()}),n(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){n(this).toggle(!!n(this).children().not(".look_in").length||!!n(this).children(".look_in").children().length)})})}(jQuery),function(s){s.fn.tinvwl_break_submit=function(t){var e=s.extend(!0,{},{selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return s(this).val()},rule:function(){var t=s(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(s(this))))}),i)}},t);return s(this).each(function(){s(this).on("click",function(t){var i=[];void 0!==s(this).attr("tinvwl_break_submit")&&(i=s(this).attr("tinvwl_break_submit").split(",")),-1!==jQuery.inArray(e.selector,i)&&(i=[]),e.rule.call(s(this))||0!==i.length||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault()),i.push(e.selector),s(this).attr("tinvwl_break_submit",i),e.rule.call(s(this))&&s(this).removeAttr("tinvwl_break_submit")})})},s(document).ready(function(){s("body").on("click",".global-cb",function(){s(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",s(this).is(":checked"))});var n=tinvwl_add_to_wishlist.hash_key+"_refresh";s(document.body).on("tinvwl_wishlist_ajax_response",function(t,i,e){(e.status||e.removed)&&["add_to_wishlist"].includes(e.action)&&e.wishlist&&e.wishlist.share_key&&(localStorage.setItem(n,""),localStorage.setItem(n,e.wishlist.share_key))})})}(jQuery);6 function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}(w=>{w.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href.split("?")[0],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(){w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){w(this).append(w("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){w(t).addClass("tinv-modal-open"),w(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){w(this).removeClass("tinv-modal-open"),w(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(w(this).is(".disabled-add-wishlist"))return!1;w(this).is(".ftinvwl-animated")&&w(this).addClass("ftinvwl-pulse"),(this.tinvwl_dialog?this.tinvwl_dialog.show_list:s.onActionProduct).call(this)},onPrepareDataAction:function(t,i){w("body").trigger("tinvwl_wishlist_button_clicked",[t,i])},filterProductAlreadyIn:function(t){var t=t||[],n={};return w("form.cart[method=post], .woocommerce-variation-add-to-cart, form.vtajaxform[method=post]").find("input, select").each(function(){var t=w(this).attr("name"),i=w(this).attr("type"),e=w(this).val();("checkbox"!==i&&"radio"!==i||w(this).is(":checked"))&&(n["form"+t]=e)}),n=n.formvariation_id,t.filter(function(t){var i;return"object"===_typeof(t.in)&&"string"==typeof n?(i=parseInt(n),0<=t.in.indexOf(i)):t.in})},onMultiProductAlreadyIn:function(t){var t=t||[],e=(t=s.onPrepareList.call(t)||t,t=s.filterProductAlreadyIn.call(this,t)||t,w(this).parent().parent().find(".already-in").remove(),"");0!==t.length&&(e=w("<ul>"),w.each(t,function(t,i){e.append(w("<li>").html(w("<a>").html(i.title).attr({href:i.url})).val(i.ID))})),e.length&&w(this).closest(".tinv-modal-inner").find("img").after(w("<div>").addClass("already-in").html(s.text_already_in+" ").append(e))},onAction:{redirect:function(t){s.redirectTimer&&clearTimeout(s.redirectTimer),s.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(t){},msg:function(t){if(!t)return!1;var i=w(t).eq(0);w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),s.redirectTimer||(s.removeTimer=window.setTimeout(function(){i.remove(),s.redirectTimer&&clearTimeout(s.redirectTimer)},tinvwl_add_to_wishlist.popup_timer)),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),s.redirectTimer&&clearTimeout(s.redirectTimer),s.removeTimer&&clearTimeout(s.removeTimer)})},status:function(t){w("body").trigger("tinvwl_wishlist_added_status",[this,t])},removed:function(t){},make_remove:function(t){},wishlists_data:function(t){d(JSON.stringify(t))}},onActionProduct:function(t,i){var d={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:w(this).attr("data-tinv-wl-producttype"),product_id:w(this).attr("data-tinv-wl-product")||0,product_variation:w(this).attr("data-tinv-wl-productvariation")||0,product_action:w(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},e=this,n=[],r=[],c=new FormData;tinvwl_add_to_wishlist.wpml&&(d.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(d.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(d.stats=tinvwl_add_to_wishlist.stats),w('form.cart[method=post][data-product_id="'+w(this).attr("data-tinv-wl-product")+'"], form.vtajaxform[method=post][data-product_id="'+w(this).attr("data-tinv-wl-product")+'"]').each(function(){n.push(w(this))}),n.length||(w(e).closest("form.cart[method=post], form.vtajaxform[method=post]").each(function(){n.push(w(this))}),n.length)||n.push(w("form.cart[method=post]")),w('.tinv-wraper[data-tinvwl_product_id="'+w(this).attr("data-tinv-wl-product")+'"]').each(function(){n.push(w(this))}),w.each(n,function(t,i){w(i).find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){var t,i=w(this).attr("name"),e=w(this).attr("type"),n=w(this).val(),s=10,o=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);t[n=parseInt(n)+1]=o(t[e],i[e])}else t[e]=o(t[e],i[e]);return t};if("button"!==e&&void 0!==i){for(;/^(.+)\[([^\[\]]*?)\]$/.test(i)&&0<s;){var a,l=i.match(/^(.+)\[([^\[\]]*?)\]$/);3===l.length&&((a={})[l[2]]=n,n=a),i=l[1],s--}"file"===e&&(t=w(this)[0].files)&&c.append(i,t[0]),"checkbox"===e||"radio"===e?w(this).is(":checked")&&(n.length||"object"===_typeof(n)||(n=!0),d.form[i]=o(d.form[i],n)):d.form[i]=o(d.form[i],n),"hidden"===e&&r.push(i)}})}),d.form["tinvwl-hidden-fields"]=r,d=s.onPrepareDataAction.call(e,e,d)||d,w.each(d,function(e,t){"form"===e?w.each(t,function(t,i){"object"===_typeof(i)&&(i=JSON.stringify(i)),c.append(e+"["+t+"]",i)}):c.append(e,t)}),w.ajax({url:s.api_url,method:"POST",contentType:!1,processData:!1,data:c}).done(function(t){if(w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),s.onDialogHide.call(e.tinvwl_dialog,e),"object"===_typeof(t))for(var i in t)"function"==typeof s.onAction[i]&&s.onAction[i].call(e,t[i]);else"function"==typeof s.onAction.msg&&s.onAction.msg.call(e,t)})}},s=w.extend(!0,{},i,t);return w(this).each(function(){if(!w(this).attr("data-tinv-wl-list"))return!1;var t,n;s.dialogbox&&s.dialogbox.length&&(this.tinvwl_dialog=s.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=s.onGetDialogBox.call(this)),this.tinvwl_dialog||(t=w(this).nextAll(s.class.dialogbox).eq(0)).length&&(this.tinvwl_dialog=t),this.tinvwl_dialog&&(s.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var e=w(this).find(s.class.select).eq(0);w(this).find(s.class.newtitle).hide().val(""),e.html(""),w.each(t,function(t,i){s.onCreateWishList.call(e,i)}),s.text_create&&s.onCreateWishList.call(e,{ID:"",title:s.text_create,in:!1}),s.onMultiProductAlreadyIn.call(e,t),s.onSelectWishList.call(e,t),w(this).find(s.class.newtitle).toggle(""===e.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=JSON.parse(w(this).attr("data-tinv-wl-list"))||[];t.length?(t=s.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),s.onDialogShow.call(this.tinvwl_dialog,this)):s.onActionProduct.call(this)}),w((n=this).tinvwl_dialog).find(s.class.dialogbutton).off("click").on("click",function(){var t,i=w(n.tinvwl_dialog).find(s.class.select),e=w(n.tinvwl_dialog).find(s.class.newtitle);i.val()||e.val()?s.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))})),w(this).off("click").on("click",s.onClick),s.onInited.call(this,s)})},w(document).ready(function(){w("body").on("click keydown",".tinvwl_add_to_wishlist_button",function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return;t.preventDefault()}w("body").trigger("tinvwl_add_to_wishlist_button_click",[this]),w(this).is(".disabled-add-wishlist")?(t.preventDefault(),window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text)):w(this).is(".inited-add-wishlist")||w(this).tinvwl_to_wishlist({onInited:function(t){w(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),w("body").on("click keydown",'button[name="tinvwl-remove"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-product_id":n.val(),"tinvwl-action":"remove","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.data("tinvwl_paged")||n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.data("tinvwl_per_page")||n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.data("tinvwl_sharekey")||n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),t.status&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),w(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),w(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return w(this).is(":checked")}}),jQuery.fn.tinvwl_get_wishlist_data()),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t])}))}),w("body").on("click keydown",'button[name="tinvwl-add-to-cart"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-product_id":n.val(),"tinvwl-action":"add_to_cart_single","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.data("tinvwl_paged")||n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.data("tinvwl_per_page")||n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.data("tinvwl_sharekey")||n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)}))}),w("body").on("click keydown",'button[name="tinvwl-action-product_all"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n=w(this);n.is(".inited-wishlist-action")||(n.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i={"tinvwl-action":"add_to_cart_all","tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":n.closest("form").data("tinvwl_paged"),"tinvwl-per-page":n.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":n.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;n.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)}))}),w("body").on("click keydown",'button[name="tinvwl-action-product_apply"], button[name="tinvwl-action-product_selected"]',function(t){if("keydown"===t.type){var i=void 0!==t.key?t.key:t.keyCode;if(!("Enter"===i||13===i||0<=["Spacebar"," "].indexOf(i)||32===i))return}t.preventDefault();var n,e=[],s=(w('input[name="wishlist_pr[]"]:checked').each(function(){e.push(this.value)}),w(this));!e.length||"tinvwl-action-product_selected"!==s.attr("name")&&!w("select#tinvwl_product_actions option").filter(":selected").val()?alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit):s.is(".inited-wishlist-action")||(s.addClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),n="",n="tinvwl-action-product_selected"===s.attr("name")?"add_to_cart_selected":w("select#tinvwl_product_actions option").filter(":selected").val(),i={"tinvwl-products":e,"tinvwl-action":n,"tinvwl-security":tinvwl_add_to_wishlist.nonce,"tinvwl-paged":s.closest("form").data("tinvwl_paged"),"tinvwl-per-page":s.closest("form").data("tinvwl_per_page"),"tinvwl-sharekey":s.closest("form").data("tinvwl_sharekey")},tinvwl_add_to_wishlist.wpml&&(i.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(i.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(i.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:i,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){var i,e;s.removeClass("inited-wishlist-action"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),t.msg&&(i=w(t.msg).eq(0),w("body > .tinv-wishlist").length||w("body").append(w("<div>").addClass("tinv-wishlist")),w("body > .tinv-wishlist").append(i),r("body > .tinv-wishlist"),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove()}),e=e||window.setTimeout(function(){i.remove(),e&&clearTimeout(e)},tinvwl_add_to_wishlist.popup_timer)),"add_to_cart_selected"===n&&w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),jQuery.fn.tinvwl_get_wishlist_data(),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t]),t.redirect&&(window.location.href=t.redirect)}))}),w(document).on("hide_variation",".variations_form",function(t){var i=w('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+w(this).data("product_id")+'"]'),e=(i.attr("data-tinv-wl-productvariation",0),tinvwl_add_to_wishlist.block_ajax_wishlists_data);tinvwl_add_to_wishlist.block_ajax_wishlists_data=!0,w.fn.tinvwl_get_wishlist_data(),tinvwl_add_to_wishlist.block_ajax_wishlists_data=e,i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),w(document).on("show_variation",".variations_form",function(t,i,e){var n=w('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+w(this).data("product_id")+'"]'),i=(n.attr("data-tinv-wl-productvariation",i.variation_id),tinvwl_add_to_wishlist.block_ajax_wishlists_data);tinvwl_add_to_wishlist.block_ajax_wishlists_data=!0,w.fn.tinvwl_get_wishlist_data(),tinvwl_add_to_wishlist.block_ajax_wishlists_data=i,t.preventDefault(),n.removeClass("disabled-add-wishlist")}),w(window).on("storage onstorage",function(t){a===t.originalEvent.key&&localStorage.getItem(a)!==sessionStorage.getItem(a)&&localStorage.getItem(a)&&"object"===_typeof(t=JSON.parse(localStorage.getItem(a)))&&null!==t&&(t.hasOwnProperty("products")||t.hasOwnProperty("counter"))&&d(localStorage.getItem(a))});function e(i){var t,e;(n.length||s)&&tinvwl_add_to_wishlist.user_interacted&&(t={"tinvwl-action":"get_data","tinvwl-security":tinvwl_add_to_wishlist.nonce},"refresh"===i&&(e=w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear form[data-tinvwl_sharekey]")).length&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),t["tinvwl-paged"]=e.data("tinvwl_paged"),t["tinvwl-per-page"]=e.data("tinvwl_per_page"),t["tinvwl-sharekey"]=e.data("tinvwl_sharekey")),tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),tinvwl_add_to_wishlist.wpml_default&&(t.lang_default=tinvwl_add_to_wishlist.wpml_default),tinvwl_add_to_wishlist.stats&&(t.stats=tinvwl_add_to_wishlist.stats),w.ajax({url:tinvwl_add_to_wishlist.wc_ajax_url,method:"POST",cache:!1,data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){"refresh"===i&&(w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").unblock(),w(document.body).trigger("wc_fragment_refresh"),w("div.tinv-wishlist.woocommerce.tinv-wishlist-clear").replaceWith(t.content),localStorage.setItem(a+"_refresh","")),t.wishlists_data&&d(JSON.stringify(t.wishlists_data)),w("body").trigger("tinvwl_wishlist_ajax_response",[this,t])}))}var n=[],s=!1,t=(w("a.tinvwl_add_to_wishlist_button").each(function(){"undefined"!==w(this).data("tinv-wl-product")&&w(this).data("tinv-wl-product")&&n.push(w(this).data("tinv-wl-product"))}),w(".wishlist_products_counter_number").each(function(){s=!0}),w.fn.tinvwl_get_wishlist_data=function(t){if("refresh"===t)e(t);else{if(o&&("undefined"!=typeof Cookies&&void 0!==Cookies.get("tinvwl_update_data")&&(Cookies.set("tinvwl_update_data",0,{expires:-1}),localStorage.setItem(a,"")),localStorage.getItem(a))){var i=JSON.parse(localStorage.getItem(a));if("object"===_typeof(i)&&null!==i&&(i.hasOwnProperty("products")||i.hasOwnProperty("counter"))&&(!i.hasOwnProperty("lang")&&!tinvwl_add_to_wishlist.wpml||tinvwl_add_to_wishlist.wpml&&i.lang===tinvwl_add_to_wishlist.wpml)){if("undefined"!=typeof Cookies&&void 0===Cookies.get("tinvwl_wishlists_data_counter"))return void l(i);if("undefined"!=typeof Cookies&&Cookies.get("tinvwl_wishlists_data_counter")==i.counter&&(!i.hasOwnProperty("stats_count")||Cookies.get("tinvwl_wishlists_data_stats")==i.stats_count))return void l(i)}}tinvwl_add_to_wishlist.block_ajax_wishlists_data?setTimeout(function(){l(i)},500):e()}},tinvwl_add_to_wishlist.user_interacted=!1,w.fn.tinvwl_get_wishlist_data(),w(document).one("click keydown scroll",function(){tinvwl_add_to_wishlist.user_interacted=!0,w.fn.tinvwl_get_wishlist_data()}),new MutationObserver(function(t){var i=[];t.forEach(function(t){t=t.addedNodes;null!==t&&w(t).each(function(){var t=w(this).find(".tinvwl_add_to_wishlist_button");t.length&&t.each(function(){var t=w(this).data("tinv-wl-product");void 0!==t&&t&&i.push(t)})})}),i.length&&w.fn.tinvwl_get_wishlist_data()})),i=document.body;t.observe(i,{childList:!0,subtree:!0})});var o=!0,a=tinvwl_add_to_wishlist.hash_key;try{o="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("ti","test"),window.sessionStorage.removeItem("ti"),window.localStorage.setItem("ti","test"),window.localStorage.removeItem("ti")}catch(t){o=!1}function l(t){var a="1"==window.tinvwl_add_to_wishlist.simple_flow,i=(w("a.tinvwl_add_to_wishlist_button").each(function(){w(this).removeClass("tinvwl-product-make-remove").removeClass("tinvwl-product-in-list").attr("data-tinv-wl-action","addto").attr("data-tinv-wl-list","[]"),t&&t.stats&&w(this).find("span.tinvwl-product-stats").remove()}),w("body").trigger("tinvwl_wishlist_mark_products",[t]),w.each(t.products,function(t,s){var o=t;w('a.tinvwl_add_to_wishlist_button[data-tinv-wl-product="'+o+'"]').each(function(){var i,t=parseInt(w(this).attr("data-tinv-wl-productvariation")),e=w(this).data("tinv-wl-productvariations")||[],n=!1;for(i in s)s[i].hasOwnProperty("in")&&Array.isArray(s[i].in)&&(-1<(s[i].in||[]).indexOf(o)||-1<(s[i].in||[]).indexOf(t)||e.some(function(t){return 0<=(s[i].in||[]).indexOf(t)}))&&(n=!0);w(this).attr("data-tinv-wl-list",JSON.stringify(s)).toggleClass("tinvwl-product-in-list",n).toggleClass("tinvwl-product-make-remove",n&&a).attr("data-tinv-wl-action",n&&a?"remove":"addto"),w("body").trigger("tinvwl_wishlist_product_marked",[this,n])})}),t&&t.stats&&tinvwl_add_to_wishlist.stats&&w.each(t.stats,function(t,e){w('a.tinvwl_add_to_wishlist_button[data-tinv-wl-product="'+t+'"]').each(function(){w(this).attr("data-tinv-wl-product-stats",JSON.stringify(e));var t,i=parseInt(w(this).attr("data-tinv-wl-productvariation"));for(t in e)-1<t.indexOf(i)&&(w("body").trigger("tinvwl_wishlist_product_stats",[this,!0]),w(this).append('<span class="tinvwl-product-stats">'+e[t]+"</span>"))})}),t.counter);"1"==window.tinvwl_add_to_wishlist.hide_zero_counter&&0===i&&(i="false"),jQuery("i.wishlist-icon").addClass("added"),"false"!==i?(jQuery(".wishlist_products_counter_number, .theme-item-count.wishlist-item-count").html(i),jQuery("i.wishlist-icon").attr("data-icon-label",i)):(jQuery(".wishlist_products_counter_number, .theme-item-count.wishlist-item-count").html("").closest("span.wishlist-counter-with-products").removeClass("wishlist-counter-with-products"),jQuery("i.wishlist-icon").removeAttr("data-icon-label")),i=!("0"==i||"false"==i),jQuery(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",i),setTimeout(function(){jQuery("i.wishlist-icon").removeClass("added")},500)}function d(t){o&&(localStorage.setItem(a,t),sessionStorage.setItem(a,t),l(JSON.parse(t)))}function r(t){var t=w(t).find("select, input, textarea, button, a").filter(":visible"),i=t.first(),e=t.last();i.focus().blur(),e.on("keydown",function(t){9!==t.which||t.shiftKey||(t.preventDefault(),i.focus())}),i.on("keydown",function(t){9===t.which&&t.shiftKey&&(t.preventDefault(),e.focus())})}})(jQuery),(n=>{n(document).ready(function(){if(n(".tinv-lists-nav").each(function(){n(this).html().trim().length||n(this).remove()}),n("body").on("click",".social-buttons .social:not(.social-email,.social-whatsapp,.social-clipboard)",function(t){var i=window.open(n(this).attr("href"),n(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}n("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),n("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),n(this).parents(".tinv-modal:first").removeClass("tinv-modal-open"),n("body").trigger("tinvwl_modal_closed",[this])}),n("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){n(this).data("url")&&(t.preventDefault(),window.location=n(this).data("url"))});var e=n(".tinv-wishlist .navigation-button");e.length&&e.each(function(){var t=n(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),n(".tinv-login .showlogin").off("click").on("click",function(t){t.preventDefault(),n(this).closest(".tinv-login").find(".login").toggle()}),n(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){n(this).toggle(!!n(this).children().not(".look_in").length||!!n(this).children(".look_in").children().length)})})})(jQuery),(s=>{s.fn.tinvwl_break_submit=function(t){var e=s.extend(!0,{},{selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return s(this).val()},rule:function(){var t=s(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(s(this))))}),i)}},t);return s(this).each(function(){s(this).on("click",function(t){var i=[];void 0!==s(this).attr("tinvwl_break_submit")&&(i=s(this).attr("tinvwl_break_submit").split(",")),-1!==jQuery.inArray(e.selector,i)&&(i=[]),e.rule.call(s(this))||0!==i.length||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault()),i.push(e.selector),s(this).attr("tinvwl_break_submit",i),e.rule.call(s(this))&&s(this).removeAttr("tinvwl_break_submit")})})},s(document).ready(function(){s("body").on("click",".global-cb",function(){s(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",s(this).is(":checked"))});var n=tinvwl_add_to_wishlist.hash_key+"_refresh";s(document.body).on("tinvwl_wishlist_ajax_response",function(t,i,e){(e.status||e.removed)&&["add_to_wishlist"].includes(e.action)&&e.wishlist&&e.wishlist.share_key&&(localStorage.setItem(n,""),localStorage.setItem(n,e.wishlist.share_key))})})})(jQuery); -
ti-woocommerce-wishlist/trunk/includes/analytics.class.php
r3044331 r3167298 390 390 */ 391 391 function get( $data = array() ) { 392 global $wpdb; 393 392 394 $default = array( 393 395 'count' => 10, … … 409 411 $default['offset'] = absint( $default['offset'] ); 410 412 $default['count'] = absint( $default['count'] ); 413 //the order value is passed directly to the db so it needs to be protected against sql_injections 414 $valid_order_values = array( 'ASC', 'DESC' ); 415 if ( ! in_array( strtoupper( $default['order'] ), $valid_order_values, true ) ) { 416 $default['order'] = 'ASC'; 417 } 418 411 419 if ( is_array( $default['field'] ) ) { 412 420 $default['field'] = '`' . implode( '`,`', $default['field'] ) . '`'; … … 424 432 $s = is_array( $v ) ? ' IN ' : '='; 425 433 if ( is_array( $v ) ) { 426 $v = "'" . implode( "','", $v ) . "'"; 434 foreach ( $v as $_f => $_v ) { 435 $v[ $_f ] = $wpdb->prepare( '%s', $_v ); 436 } 437 $v = implode( ',', $v ); 427 438 $v = "($v)"; 428 439 } else { 429 $v = "'$v'";440 $v = $wpdb->prepare( '%s', $v ); 430 441 } 431 442 $data[ $f ] = sprintf( '`%s`%s%s', $f, $s, $v ); … … 452 463 $sql = str_replace( $replace, $replacer, $default['sql'] ); 453 464 } 454 global $wpdb; 465 455 466 $products = $wpdb->get_results( $sql, ARRAY_A ); // WPCS: db call ok; no-cache ok; unprepared SQL ok. 456 467 -
ti-woocommerce-wishlist/trunk/includes/api/wishlist.class.php
r3039108 r3167298 106 106 107 107 if ( $user_id && ! $this->user_id_exists( $user_id ) ) { 108 return new WP_Error( 'ti_woocommerce_wishlist_api_wishlist_user_not_exists', __( 'WordPress user does not exist.', 'ti-woocommerce-wishlist' ), [ 'status' => 400 ] ); 108 //don't expose which user_ids exist by not returning an error that says that 109 return new WP_Error( 'ti_woocommerce_wishlist_api_wishlist_not_found', __( 'No wishlists found for this user.', 'ti-woocommerce-wishlist' ), [ 'status' => 400 ] ); 109 110 } 110 111 $wl = new TInvWL_Wishlist(); … … 185 186 ]; 186 187 188 //proper sanitizing 187 189 if ( null !== ( $count = $request->get_param( 'count' ) ) ) { 188 $args['count'] = $count;190 $args['count'] = absint( $count ); 189 191 } 190 192 if ( null !== ( $offset = $request->get_param( 'offset' ) ) ) { 191 $args['offset'] = $offset; 192 } 193 $args['offset'] = absint( $offset ); 194 } 195 //the order value is passed directly to the db so it needs to be protected against sql_injections 193 196 if ( null !== ( $order = $request->get_param( 'order' ) ) ) { 194 $args['order'] = $order; 195 } 196 197 $order = strtoupper( $order ); 198 $valid_order_values = array( 'ASC', 'DESC' ); 199 if ( in_array( $order, $valid_order_values, true ) ) { 200 $args['order'] = $order; 201 } 202 } 197 203 198 204 $products = $wlp->get( $args ); … … 353 359 public function user_id_exists( int $user_id ): bool { 354 360 global $wpdb; 355 361 $user_id = absint( $user_id ); 356 362 // Check cache: 357 363 if ( wp_cache_get( $user_id, 'users' ) ) { -
ti-woocommerce-wishlist/trunk/includes/product.helper.php
r3044331 r3167298 296 296 $default['offset'] = absint( $default['offset'] ); 297 297 $default['count'] = absint( $default['count'] ); 298 //the order value is passed directly to the db so it needs to be protected against sql_injections 299 $valid_order_values = array( 'ASC', 'DESC' ); 300 if ( ! in_array( strtoupper( $default['order'] ), $valid_order_values, true ) ) { 301 $default['order'] = 'DESC'; 302 } 303 298 304 if ( is_array( $default['field'] ) ) { 299 305 $default['field'] = '`' . implode( '`,`', $default['field'] ) . '`'; … … 543 549 do_action( 'tinvwl_product_updated', $data ); 544 550 545 return ( $id ) ? $id: true;551 return ( $id ) ?: true; 546 552 } 547 553 … … 561 567 function remove_product_from_wl( int $wishlist_id = 0, int $product_id = 0, int $variation_id = 0, array $meta = [] ): bool { 562 568 global $wpdb; 569 570 $wishlist_id = absint( $wishlist_id ); 571 $product_id = absint( $product_id ); 572 $variation_id = absint( $variation_id ); 573 563 574 if ( empty( $wishlist_id ) ) { 564 575 $wishlist_id = $this->wishlist_id(); … … 616 627 */ 617 628 function remove_product( $product_id = 0 ) { 629 global $wpdb; 618 630 if ( empty( $product_id ) ) { 619 631 return false; 620 632 } 621 622 global $wpdb; 633 $product_id = absint( $product_id ); 634 623 635 $result = false !== $wpdb->delete( $this->table, array( 'product_id' => $product_id ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok. 624 636 if ( $result ) { … … 639 651 */ 640 652 function get_wishlist_by_product_id( $product_id = 0 ) { 653 global $wpdb; 641 654 if ( empty( $product_id ) ) { 642 655 return false; 643 656 } 644 645 global $wpdb; 646 $ sql = "SELECT `wishlist_id` FROM `{$this->table}` WHERE `ID`={$product_id}";647 $result = $wpdb->get_results( $sql, ARRAY_A );657 $product_id = absint( $product_id ); 658 659 $prepared_sql = $wpdb->prepare( "SELECT `wishlist_id` FROM `{$this->table}` WHERE `ID`=%d", $product_id ); 660 $result = $wpdb->get_results( $prepared_sql, ARRAY_A ); 648 661 649 662 if ( ! $result ) { -
ti-woocommerce-wishlist/trunk/includes/wishlist.class.php
r3039108 r3167298 109 109 */ 110 110 function add_user_default( $user_id = 0 ) { 111 $user_id = absint( $user_id ); 111 112 if ( empty( $user_id ) ) { 112 113 $user_id = $this->user; … … 247 248 $sharekey = $this->get_sharekey(); 248 249 } 249 if ( empty( $sharekey ) ) { 250 251 //validate sharekey 252 if ( empty( $sharekey ) || ! is_string( $sharekey ) || ! preg_match( '/[a-f0-9]{6}/i', $sharekey ) ) { 250 253 return array(); 251 254 } … … 267 270 * @return array 268 271 */ 269 function get_by_user( $user_id = 0 , $data = array()) {272 function get_by_user( $user_id = 0 ) { 270 273 $user_id = absint( $user_id ); 271 274 if ( empty( $user_id ) ) { … … 273 276 } 274 277 $this->add_user_default( $user_id ); 275 $ _data = array(278 $data = array( 276 279 'author' => $user_id, 277 280 ); 278 281 279 if ( ! current_user_can( 'tinvwl_general_settings' ) && ( empty( $this->user ) || ( $_data['author'] != $this->user ) ) ) { // WPCS: loose comparison ok. 280 $_data['status'] = 'public'; 281 } 282 $data = tinv_array_merge( $data, $_data ); 282 if ( ! current_user_can( 'tinvwl_general_settings' ) && ( empty( $this->user ) || ( $data['author'] != $this->user ) ) ) { // WPCS: loose comparison ok. 283 $data['status'] = 'public'; 284 } 283 285 284 286 return $this->get( $data ); … … 355 357 unset( $data[ $_k ] ); 356 358 } 359 } 360 361 //proper sanitizing 362 $default['offset'] = absint( $default['offset'] ); 363 $default['count'] = absint( $default['count'] ); 364 //the order value is passed directly to the db so it needs to be protected against sql_injections 365 $valid_order_values = array( 'ASC', 'DESC' ); 366 if ( ! in_array( strtoupper( $default['order'] ), $valid_order_values, true ) ) { 367 $default['order'] = 'ASC'; 357 368 } 358 369 … … 446 457 */ 447 458 function update( $id, $data, $type = 'list', $status = 'public' ) { 459 global $wpdb; 460 461 $id = absint( $id ); 462 448 463 if ( ! is_array( $data ) ) { 449 464 $data = array( … … 459 474 'author' => FILTER_VALIDATE_INT, 460 475 ) ) ); 476 461 477 $data = array_filter( $data ); 462 478 $data = apply_filters( 'tinvwl_wishlist_update', $data, $id ); … … 467 483 } 468 484 } 469 global $wpdb; 470 471 return false !== $wpdb->update( $this->table, $data, array( 'ID' => $id ) ); // WPCS: db call ok; no-cache ok; unprepared SQL ok. 485 486 return false !== $wpdb->update( $this->table, $data, array( 'ID' => $id ) ); 472 487 } 473 488 -
ti-woocommerce-wishlist/trunk/languages/ti-woocommerce-wishlist.pot
r3044331 r3167298 1 # Copyright (C) 2024 TI WooCommerce Wishlist Plugin - 2. 8.22 # This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 2. 8.2package.1 # Copyright (C) 2024 TI WooCommerce Wishlist Plugin - 2.9.0 2 # This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 2.9.0 package. 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: TI WooCommerce Wishlist Plugin - 2. 8.2\n"5 "Project-Id-Version: TI WooCommerce Wishlist Plugin - 2.9.0\n" 6 6 "MIME-Version: 1.0\n" 7 7 "Content-Type: text/plain; charset=UTF-8\n" 8 8 "Content-Transfer-Encoding: 8bit\n" 9 "Content-Transfer-Econdig: 8bit\n"10 "Content-Type: text/plain; charset=UTF-8\n"11 9 "Language-Team: TemplateInvaders (https://templateinvaders.com/)\n" 12 10 "Last-Translator: TemplateInvaders (https://templateinvaders.com/)\n" 13 "MIME-Version: 1.0\n" 14 "Project-Id-Version: TI WooCommerce Wishlist Plugin - 2.8.2\n" 11 "POT-Creation-Date: 2024-10-11 17:26+0000\n" 15 12 "Report-Msgid-Bugs-To: https://templateinvaders.com/help/\n" 16 13 "X-Poedit-Basepath: ..\n" … … 933 930 msgstr "" 934 931 935 #: includes/api/wishlist.class.php:83, includes/api/wishlist.class.php:89, includes/api/wishlist.class.php:29 3, includes/api/wishlist.class.php:300932 #: includes/api/wishlist.class.php:83, includes/api/wishlist.class.php:89, includes/api/wishlist.class.php:299, includes/api/wishlist.class.php:306 936 933 msgid "Invalid wishlist share key." 937 934 msgstr "" 938 935 939 #: includes/api/wishlist.class.php:108 940 msgid "WordPress user does not exist." 941 msgstr "" 942 943 #: includes/api/wishlist.class.php:121 936 #: includes/api/wishlist.class.php:109, includes/api/wishlist.class.php:122 944 937 msgid "No wishlists found for this user." 945 938 msgstr "" 946 939 947 #: includes/api/wishlist.class.php:15 5, includes/api/wishlist.class.php:159940 #: includes/api/wishlist.class.php:156, includes/api/wishlist.class.php:160 948 941 msgid "Update wishlist data failed." 949 942 msgstr "" 950 943 951 #: includes/api/wishlist.class.php:22 2, includes/api/wishlist.class.php:237944 #: includes/api/wishlist.class.php:228, includes/api/wishlist.class.php:243 952 945 msgid "Add product to wishlist failed." 953 946 msgstr "" 954 947 955 #: includes/api/wishlist.class.php:2 59948 #: includes/api/wishlist.class.php:265 956 949 msgid "Invalid item ID." 957 950 msgstr "" 958 951 959 #: includes/api/wishlist.class.php:2 66, includes/api/wishlist.class.php:276952 #: includes/api/wishlist.class.php:272, includes/api/wishlist.class.php:282 960 953 msgid "Product not found." 961 954 msgstr "" 962 955 963 #: includes/api/wishlist.class.php:27 0956 #: includes/api/wishlist.class.php:276 964 957 msgid "Remove product from wishlist failed." 965 958 msgstr "" 966 959 967 #: includes/api/wishlist.class.php:2 79960 #: includes/api/wishlist.class.php:285 968 961 msgid "Product removed from a wishlist." 969 962 msgstr "" … … 1371 1364 msgstr "" 1372 1365 1373 #. translators: %s: product name1374 1366 #. translators: %s: product name 1375 1367 #: public/wishlist/ajax.class.php:238, public/wishlist/ajax.class.php:387, public/wishlist/ajax.class.php:468 … … 1386 1378 1387 1379 #. translators: %s: product name 1388 #. translators: %s: product name1389 1380 #: public/wishlist/ajax.class.php:380, public/wishlist/ajax.class.php:461 1390 1381 msgctxt "Item name in quotes" -
ti-woocommerce-wishlist/trunk/readme.txt
r3044334 r3167298 3 3 Tags: woocommerce, wishlist, woocommerce wishlist, shop, ecommerce 4 4 Requires at least: 6.1 5 Tested up to: 6. 46 Stable tag: 2. 8.25 Tested up to: 6.6 6 Stable tag: 2.9.0 7 7 Requires PHP: 7.4 8 8 License: GPLv3 … … 159 159 160 160 == Changelog == 161 = 2.8.2 =162 *Release Date - 3 March 2024*163 161 164 - **Added**: Support for PHP 8.3 165 - **Added**: Integration with [WP Armour - Honeypot Anti Spam](https://wordpress.org/plugins/honeypot/) plugin 162 = 2.9.0 = 163 *Release Date - 11 October 2024* 166 164 167 = 2.8.1 = 168 *Release Date - 21 February 2024* 169 170 - **Added**: Support for WooCommerce 8.6.x 171 - **Added**: Wishlist creation for guests via REST API. Use the route wp-json/wc/v3/wishlist/get_by_user/0 172 - **Fixed**: PHP warning in wishlist products counter 173 - **Fixed**: PHP error on plugin uninstall 174 - **Removed**: Network activation restriction 175 - **Fixed**: Issue with REST API get products request arguments 176 177 178 = 2.8.0 = 179 *Release Date - 24 November 2023* 180 181 - **Added**: Support for WordPress 6.4 182 - **Added**: Support for WooCommerce 8.3 183 - **Added**: Option to erase all data on uninstall 184 - **Updated**: Integration with [WPC Product Bundles for WooCommerce](https://wordpress.org/plugins/woo-product-bundle/) 185 - **Fixed**: Issue with `alt` attribute of a custom image for products counter icon 186 - **Fixed**: 'Add to Cart' button issue for parent product 187 - **Fixed**: Scheduled event hooks issue 188 - **Fixed**: PHP 8.1 deprecation warnings 189 - **Fixed**: Missing space in HTML markup 190 - **Fixed**: REST API wishlist data inconsistencies 165 - **Added**: Support for WordPress 6.6.x 166 - **Added**: Support for WooCommerce 9.3.x 167 - **Fixed**: SQL Injection vulnerability 191 168 192 169 [See the changelog for all versions](https://templateinvaders.com/changelogs/ti-woocommerce-wishlist-plugin-free-changelog/?utm_source=wordpressorg&utm_content=changelog). … … 194 171 == Upgrade Notice == 195 172 196 = 2. 0.0 =197 Major update with new features 173 = 2.9.0 = 174 Fixed SQL Injection vulnerability -
ti-woocommerce-wishlist/trunk/ti-woocommerce-wishlist.php
r3044331 r3167298 5 5 * Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/ 6 6 * Description: Wishlist functionality for your WooCommerce store. 7 * Version: 2. 8.27 * Version: 2.9.0 8 8 * Requires at least: 6.1 9 * Tested up to: 6. 49 * Tested up to: 6.6 10 10 * Requires PHP: 7.4 11 * Requires Plugins: woocommerce 11 12 * WC requires at least: 3.2 12 * WC tested up to: 8.613 * WC tested up to: 9.3 13 14 * Author: TemplateInvaders 14 15 * Author URI: https://templateinvaders.com/ … … 29 30 defined( 'TINVWL_PREFIX' ) || define( 'TINVWL_PREFIX', 'tinvwl' ); 30 31 defined( 'TINVWL_DOMAIN' ) || define( 'TINVWL_DOMAIN', 'ti-woocommerce-wishlist' ); 31 defined( 'TINVWL_FVERSION' ) || define( 'TINVWL_FVERSION', '2. 8.2' );32 defined( 'TINVWL_FVERSION' ) || define( 'TINVWL_FVERSION', '2.9.0' ); 32 33 defined( 'TINVWL_LOAD_FREE' ) || define( 'TINVWL_LOAD_FREE', plugin_basename( __FILE__ ) ); 33 34 defined( 'TINVWL_NAME' ) || define( 'TINVWL_NAME', 'TI WooCommerce Wishlist' ); -
ti-woocommerce-wishlist/trunk/vendor/autoload.php
r3044331 r3167298 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 811f57b3d5528d9c8defd6995d70c7b0::getLoader();25 return ComposerAutoloaderInitd2af101309227f90c6d42451ac81d635::getLoader(); -
ti-woocommerce-wishlist/trunk/vendor/composer/ClassLoader.php
r3044331 r3167298 46 46 private static $includeFile; 47 47 48 /** @var ?string*/48 /** @var string|null */ 49 49 private $vendorDir; 50 50 51 51 // PSR-4 52 52 /** 53 * @var array[] 54 * @psalm-var array<string, array<string, int>> 53 * @var array<string, array<string, int>> 55 54 */ 56 55 private $prefixLengthsPsr4 = array(); 57 56 /** 58 * @var array[] 59 * @psalm-var array<string, array<int, string>> 57 * @var array<string, list<string>> 60 58 */ 61 59 private $prefixDirsPsr4 = array(); 62 60 /** 63 * @var array[] 64 * @psalm-var array<string, string> 61 * @var list<string> 65 62 */ 66 63 private $fallbackDirsPsr4 = array(); … … 68 65 // PSR-0 69 66 /** 70 * @var array[] 71 * @psalm-var array<string, array<string, string[]>> 67 * List of PSR-0 prefixes 68 * 69 * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) 70 * 71 * @var array<string, array<string, list<string>>> 72 72 */ 73 73 private $prefixesPsr0 = array(); 74 74 /** 75 * @var array[] 76 * @psalm-var array<string, string> 75 * @var list<string> 77 76 */ 78 77 private $fallbackDirsPsr0 = array(); … … 82 81 83 82 /** 84 * @var string[] 85 * @psalm-var array<string, string> 83 * @var array<string, string> 86 84 */ 87 85 private $classMap = array(); … … 91 89 92 90 /** 93 * @var bool[] 94 * @psalm-var array<string, bool> 91 * @var array<string, bool> 95 92 */ 96 93 private $missingClasses = array(); 97 94 98 /** @var ?string*/95 /** @var string|null */ 99 96 private $apcuPrefix; 100 97 101 98 /** 102 * @var self[]99 * @var array<string, self> 103 100 */ 104 101 private static $registeredLoaders = array(); 105 102 106 103 /** 107 * @param ?string$vendorDir104 * @param string|null $vendorDir 108 105 */ 109 106 public function __construct($vendorDir = null) … … 114 111 115 112 /** 116 * @return string[]113 * @return array<string, list<string>> 117 114 */ 118 115 public function getPrefixes() … … 126 123 127 124 /** 128 * @return array[] 129 * @psalm-return array<string, array<int, string>> 125 * @return array<string, list<string>> 130 126 */ 131 127 public function getPrefixesPsr4() … … 135 131 136 132 /** 137 * @return array[] 138 * @psalm-return array<string, string> 133 * @return list<string> 139 134 */ 140 135 public function getFallbackDirs() … … 144 139 145 140 /** 146 * @return array[] 147 * @psalm-return array<string, string> 141 * @return list<string> 148 142 */ 149 143 public function getFallbackDirsPsr4() … … 153 147 154 148 /** 155 * @return string[] Array of classname => path 156 * @psalm-return array<string, string> 149 * @return array<string, string> Array of classname => path 157 150 */ 158 151 public function getClassMap() … … 162 155 163 156 /** 164 * @param string[] $classMap Class to filename map 165 * @psalm-param array<string, string> $classMap 157 * @param array<string, string> $classMap Class to filename map 166 158 * 167 159 * @return void … … 180 172 * appending or prepending to the ones previously set for this prefix. 181 173 * 182 * @param string $prefix The prefix183 * @param string[]|string $paths The PSR-0 root directories184 * @param bool $prepend Whether to prepend the directories174 * @param string $prefix The prefix 175 * @param list<string>|string $paths The PSR-0 root directories 176 * @param bool $prepend Whether to prepend the directories 185 177 * 186 178 * @return void … … 188 180 public function add($prefix, $paths, $prepend = false) 189 181 { 182 $paths = (array) $paths; 190 183 if (!$prefix) { 191 184 if ($prepend) { 192 185 $this->fallbackDirsPsr0 = array_merge( 193 (array)$paths,186 $paths, 194 187 $this->fallbackDirsPsr0 195 188 ); … … 197 190 $this->fallbackDirsPsr0 = array_merge( 198 191 $this->fallbackDirsPsr0, 199 (array)$paths192 $paths 200 193 ); 201 194 } … … 206 199 $first = $prefix[0]; 207 200 if (!isset($this->prefixesPsr0[$first][$prefix])) { 208 $this->prefixesPsr0[$first][$prefix] = (array)$paths;201 $this->prefixesPsr0[$first][$prefix] = $paths; 209 202 210 203 return; … … 212 205 if ($prepend) { 213 206 $this->prefixesPsr0[$first][$prefix] = array_merge( 214 (array)$paths,207 $paths, 215 208 $this->prefixesPsr0[$first][$prefix] 216 209 ); … … 218 211 $this->prefixesPsr0[$first][$prefix] = array_merge( 219 212 $this->prefixesPsr0[$first][$prefix], 220 (array)$paths213 $paths 221 214 ); 222 215 } … … 227 220 * appending or prepending to the ones previously set for this namespace. 228 221 * 229 * @param string $prefix The prefix/namespace, with trailing '\\'230 * @param string[]|string $paths The PSR-4 base directories231 * @param bool $prepend Whether to prepend the directories222 * @param string $prefix The prefix/namespace, with trailing '\\' 223 * @param list<string>|string $paths The PSR-4 base directories 224 * @param bool $prepend Whether to prepend the directories 232 225 * 233 226 * @throws \InvalidArgumentException … … 237 230 public function addPsr4($prefix, $paths, $prepend = false) 238 231 { 232 $paths = (array) $paths; 239 233 if (!$prefix) { 240 234 // Register directories for the root namespace. 241 235 if ($prepend) { 242 236 $this->fallbackDirsPsr4 = array_merge( 243 (array)$paths,237 $paths, 244 238 $this->fallbackDirsPsr4 245 239 ); … … 247 241 $this->fallbackDirsPsr4 = array_merge( 248 242 $this->fallbackDirsPsr4, 249 (array)$paths243 $paths 250 244 ); 251 245 } … … 257 251 } 258 252 $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; 259 $this->prefixDirsPsr4[$prefix] = (array)$paths;253 $this->prefixDirsPsr4[$prefix] = $paths; 260 254 } elseif ($prepend) { 261 255 // Prepend directories for an already registered namespace. 262 256 $this->prefixDirsPsr4[$prefix] = array_merge( 263 (array)$paths,257 $paths, 264 258 $this->prefixDirsPsr4[$prefix] 265 259 ); … … 268 262 $this->prefixDirsPsr4[$prefix] = array_merge( 269 263 $this->prefixDirsPsr4[$prefix], 270 (array)$paths264 $paths 271 265 ); 272 266 } … … 277 271 * replacing any others previously set for this prefix. 278 272 * 279 * @param string $prefix The prefix280 * @param string[]|string $paths The PSR-0 base directories273 * @param string $prefix The prefix 274 * @param list<string>|string $paths The PSR-0 base directories 281 275 * 282 276 * @return void … … 295 289 * replacing any others previously set for this namespace. 296 290 * 297 * @param string $prefix The prefix/namespace, with trailing '\\'298 * @param string[]|string $paths The PSR-4 base directories291 * @param string $prefix The prefix/namespace, with trailing '\\' 292 * @param list<string>|string $paths The PSR-4 base directories 299 293 * 300 294 * @throws \InvalidArgumentException … … 482 476 483 477 /** 484 * Returns the currently registered loaders indexed by their corresponding vendor directories.485 * 486 * @return self[]478 * Returns the currently registered loaders keyed by their corresponding vendor directories. 479 * 480 * @return array<string, self> 487 481 */ 488 482 public static function getRegisteredLoaders() -
ti-woocommerce-wishlist/trunk/vendor/composer/autoload_real.php
r3044331 r3167298 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 811f57b3d5528d9c8defd6995d70c7b05 class ComposerAutoloaderInitd2af101309227f90c6d42451ac81d635 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 811f57b3d5528d9c8defd6995d70c7b0', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitd2af101309227f90c6d42451ac81d635', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 811f57b3d5528d9c8defd6995d70c7b0', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitd2af101309227f90c6d42451ac81d635', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit 811f57b3d5528d9c8defd6995d70c7b0::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitd2af101309227f90c6d42451ac81d635::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
ti-woocommerce-wishlist/trunk/vendor/composer/autoload_static.php
r2738026 r3167298 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 811f57b3d5528d9c8defd6995d70c7b07 class ComposerStaticInitd2af101309227f90c6d42451ac81d635 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 28 28 { 29 29 return \Closure::bind(function () use ($loader) { 30 $loader->prefixLengthsPsr4 = ComposerStaticInit 811f57b3d5528d9c8defd6995d70c7b0::$prefixLengthsPsr4;31 $loader->prefixDirsPsr4 = ComposerStaticInit 811f57b3d5528d9c8defd6995d70c7b0::$prefixDirsPsr4;32 $loader->classMap = ComposerStaticInit 811f57b3d5528d9c8defd6995d70c7b0::$classMap;30 $loader->prefixLengthsPsr4 = ComposerStaticInitd2af101309227f90c6d42451ac81d635::$prefixLengthsPsr4; 31 $loader->prefixDirsPsr4 = ComposerStaticInitd2af101309227f90c6d42451ac81d635::$prefixDirsPsr4; 32 $loader->classMap = ComposerStaticInitd2af101309227f90c6d42451ac81d635::$classMap; 33 33 34 34 }, null, ClassLoader::class); -
ti-woocommerce-wishlist/trunk/vendor/composer/installed.php
r3044331 r3167298 2 2 'root' => array( 3 3 'name' => '__root__', 4 'pretty_version' => ' dev-master',5 'version' => ' dev-master',6 'reference' => 'd79a0d81124ea10c775c63d1a920a4f7fa8090be',4 'pretty_version' => '1.0.0+no-version-set', 5 'version' => '1.0.0.0', 6 'reference' => null, 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 '__root__' => array( 14 'pretty_version' => ' dev-master',15 'version' => ' dev-master',16 'reference' => 'd79a0d81124ea10c775c63d1a920a4f7fa8090be',14 'pretty_version' => '1.0.0+no-version-set', 15 'version' => '1.0.0.0', 16 'reference' => null, 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.