Booster for WooCommerce - Version 4.3.0

Version Description

  • 16/04/2019 =
  • Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Fix PHP warning about headers already sent.
  • Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility with Add-ons plugin.
  • Fix - PRICES & CURRENCIES - Offer Your Price - Check if $_product really exists on offer_price().
  • Fix - PRICES & CURRENCIES - Replace woocommerce_before_main_content hook by wp_footer for adding the form on frontend as some themes don't use the original hook.
  • Fix - PRODUCTS - Add to Cart - Fix compatibility between Order Min/Max Quantities and radio buttons for variations.
  • Fix - CART & CHECKOUT - Checkout Custom Fields - Fix some special characters (e.g Russian) being wiped out on checkout by using urldecode().
  • Fix - CART & CHECKOUT - Checkout Custom Fields - Display field value instead of key when using radio or select as fields.
  • Fix - CART & CHECKOUT - EU VAT Number - Default EU VAT number value on the checkout page fixed.
  • Fix - PAYMENT GATEWAYS - Gateways Currency Converter - Replace commas by periods on change_price_by_gateway() avoiding wrong calculations.
  • Fix - PDF INVOICING & PACKING SLIPS - Check if TCPDF class exists before loading it, avoiding possible errors with other plugins.
  • Fix - PDF INVOICING & PACKING SLIPS - Fix Too many redirects when using Generate Invoice from Bulk actions.
  • Fix - PDF INVOICING & PACKING SLIPS - Fix "Failed to load PDF document" in some environments by putting the pdf inside buffer instead of displaying it directly.
  • Fix - Functions - Admin - Make wcj_get_settings_as_multiselect_or_text() compatible with wcj_get_ajax_settings().
  • Fix - Functions - Booster Core - wcj_is_module_enabled() - Checking if it is a REST API call before requiring pluggable.php.
  • Fix - Functions - Exchange Rates - Fix 'Division by zero' PHP warning.
  • Fix - Functions - Exchange Rates - Ignore warnings from simplexml_load_file() depending on WP_DEBUG constant.
  • Fix - Functions - General - wcj_session_maybe_start() Improve session detection method.
  • Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Add compatibility with Smart Coupons plugin.
  • Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Add compatibility with WooCommerce Price Filter widget.
  • Dev - PRICES & CURRENCIES - Wholesale Price - Add ajax search to Product fields.
  • Dev - PRODUCTS - Add to Cart - Add radio inputs template using woocommerce_before_variations_form hook instead of replacing the entire add-to-cart/variable.php.
  • Dev - PRODUCTS - Add to Cart - Change radio buttons for variations mechanism. Now the native WooCommerce dropdown for variations will be on DOM but hidden. That will make some js functions unnecessary like maybe_hide_unavailable().
  • Dev - PRODUCTS - Add to Cart - Add attributes label on top of the radio inputs table.
  • Dev - PRODUCTS - Bookings - Add loader on frontend while ajax is loading.
  • Dev - PRODUCTS - Bookings - Add bookings price beneath dates table instead of replacing prices avoiding possible duplicated prices.
  • Dev - PRODUCTS - Bookings - Add new option to enable/disable the variable product calculation per day.
  • Dev - PRODUCTS - Product Images - Add options to control the callback and priority from some hooks.
  • Dev - PRODUCTS - Product Info Settings - Add ajax search to Product fields.
  • Dev - PRODUCTS - Product Input Fields - Add ajax search to Product fields.
  • Dev - PRODUCTS - Sorting - Add new option to restore default WooCommerce Sorting on Avada theme.
  • Dev - SHIPPING & ORDERS - Left to Free Shipping - Info on Checkout - "Order review: Before shipping" and "Order review: After shipping" positions added.
  • Dev - SHIPPING & ORDERS - Shipping Methods by Min/Max Order Quantity - Initial module release.
  • Dev - PDF INVOICING & PACKING SLIPS - Update WordPress filters used to create bulk actions.
  • Dev - PDF INVOICING & PACKING SLIPS - Add security check check_admin_referer( 'bulk-posts' ) on bulk_actions_handle().
  • Dev - PDF INVOICING & PACKING SLIPS - Tools - Invoices Report - wcj_pdf_invoicing_report_tool_row filter added.
  • Dev - EMAILS & MISC. - My Account - "Custom Menu Pages" section added.
  • Dev - Functions - Admin - Add wcj_get_ajax_settings() making it possible to search products and categories by ajax.
  • Dev - Functions - General - Add option to include read_and_close parameter to session_start.
  • Dev - Functions - General - Sanitize IP Detection methods on wcj_get_the_ip().
  • Dev - Functions - General - Add option to increase control over IP Detection methods.
  • Dev - Booster Module - maybe_fix_settings() adds 'wc-enhanced-select' class only if 'remove_class' parameter is not present.
  • Dev - Shortcodes - General - [wcj_country_select_drop_down_list] shortcode will be hidden if Prices and Currencies by Country module is not enabled, unless parameter force_display have been passed as true.
Download this release

Release Info

Developer algoritmika
Plugin Icon 128x128 Booster for WooCommerce
Version 4.3.0
Comparing to
See all releases

Code changes from version 4.2.0 to 4.3.0

Files changed (40) hide show
  1. includes/admin/wcj-modules-cats.php +2 -1
  2. includes/class-wcj-checkout-custom-fields.php +13 -6
  3. includes/class-wcj-eu-vat-number.php +3 -3
  4. includes/class-wcj-multicurrency.php +228 -16
  5. includes/class-wcj-my-account.php +99 -3
  6. includes/class-wcj-offer-price.php +7 -4
  7. includes/class-wcj-payment-gateways-currency.php +4 -3
  8. includes/class-wcj-pdf-invoicing.php +52 -66
  9. includes/class-wcj-product-add-to-cart.php +20 -12
  10. includes/class-wcj-product-bookings.php +68 -15
  11. includes/class-wcj-product-images.php +35 -2
  12. includes/class-wcj-shipping-by-order-amount.php +1 -0
  13. includes/class-wcj-shipping-by-order-qty.php +87 -0
  14. includes/class-wcj-sorting.php +50 -2
  15. includes/classes/class-wcj-module.php +11 -6
  16. includes/classes/class-wcj-tcpdf.php +4 -2
  17. includes/core/wcj-modules.php +2 -1
  18. includes/functions/wcj-functions-admin.php +66 -13
  19. includes/functions/wcj-functions-booster-core.php +60 -23
  20. includes/functions/wcj-functions-exchange-rates.php +9 -5
  21. includes/functions/wcj-functions-general.php +21 -17
  22. includes/js/wcj-bookings.js +15 -6
  23. includes/js/wcj-variations-frontend.js +30 -15
  24. includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php +3 -3
  25. includes/settings/wcj-settings-general.php +17 -1
  26. includes/settings/wcj-settings-left-to-free-shipping.php +3 -1
  27. includes/settings/wcj-settings-my-account.php +52 -1
  28. includes/settings/wcj-settings-product-bookings.php +9 -1
  29. includes/settings/wcj-settings-product-custom-info.php +3 -4
  30. includes/settings/wcj-settings-product-images.php +36 -0
  31. includes/settings/wcj-settings-product-input-fields.php +3 -4
  32. includes/settings/wcj-settings-shipping-by-order-qty.php +79 -0
  33. includes/settings/wcj-settings-sorting.php +28 -1
  34. includes/settings/wcj-settings-wholesale-price.php +7 -12
  35. includes/shortcodes/class-wcj-shortcodes-general.php +8 -2
  36. includes/templates/wcj-add-to-cart-variable.php +0 -69
  37. includes/templates/wcj-radio-for-variations.php +39 -0
  38. langs/woocommerce-jetpack.pot +516 -359
  39. readme.txt +47 -2
  40. woocommerce-jetpack.php +2 -2
includes/admin/wcj-modules-cats.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
- * @version 4.1.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) split "Shipping & Orders", "Cart & Checkout", "Products", "Prices & Currencies" etc.
@@ -146,6 +146,7 @@ return apply_filters( 'wcj_modules', array(
146
  'shipping_by_cities',
147
  'shipping_by_time',
148
  'shipping_by_order_amount',
 
149
  'address_formats',
150
  'orders',
151
  'admin_orders_list',
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
+ * @version 4.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) split "Shipping & Orders", "Cart & Checkout", "Products", "Prices & Currencies" etc.
146
  'shipping_by_cities',
147
  'shipping_by_time',
148
  'shipping_by_order_amount',
149
+ 'shipping_by_order_qty',
150
  'address_formats',
151
  'orders',
152
  'admin_orders_list',
includes/class-wcj-checkout-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
- * @version 4.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -187,7 +187,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
187
  /**
188
  * update_custom_checkout_fields_order_meta.
189
  *
190
- * @version 4.1.0
191
  */
192
  function update_custom_checkout_fields_order_meta( $order_id ) {
193
  for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
@@ -212,14 +212,14 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
212
  get_option( 'wcj_checkout_custom_field_checkbox_no_' . $i );
213
  update_post_meta( $order_id, '_' . $option_name_checkbox_value, $checkbox_value );
214
  } elseif ( 'radio' === $the_type || 'select' === $the_type ) {
215
- update_post_meta( $order_id, '_' . $option_name, wc_clean( $_POST[ $option_name ] ) );
216
  $option_name_values = $the_section . '_' . 'wcj_checkout_field_select_options_' . $i;
217
  $the_values = get_option( 'wcj_checkout_custom_field_select_options_' . $i );
218
  update_post_meta( $order_id, '_' . $option_name_values, $the_values );
219
  } elseif ( 'textarea' === $the_type && 'no' === get_option( 'wcj_checkout_custom_fields_textarea_clean', 'yes' ) ) {
220
- update_post_meta( $order_id, '_' . $option_name, $_POST[ $option_name ] );
221
  } else {
222
- update_post_meta( $order_id, '_' . $option_name, wc_clean( $_POST[ $option_name ] ) );
223
  }
224
  }
225
  }
@@ -336,7 +336,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
336
  /**
337
  * add_woocommerce_admin_fields.
338
  *
339
- * @version 2.4.7
340
  * @todo converting from before version 2.3.0: section?
341
  * @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
342
  */
@@ -398,6 +398,13 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
398
  'wrapper_class' => 'form-field-wide',
399
  );
400
  if ( isset( $options ) ) {
 
 
 
 
 
 
 
401
  $fields[ $the_key ]['options'] = $options;
402
  }
403
  }
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
187
  /**
188
  * update_custom_checkout_fields_order_meta.
189
  *
190
+ * @version 4.3.0
191
  */
192
  function update_custom_checkout_fields_order_meta( $order_id ) {
193
  for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
212
  get_option( 'wcj_checkout_custom_field_checkbox_no_' . $i );
213
  update_post_meta( $order_id, '_' . $option_name_checkbox_value, $checkbox_value );
214
  } elseif ( 'radio' === $the_type || 'select' === $the_type ) {
215
+ update_post_meta( $order_id, '_' . $option_name, wc_clean( urldecode( $_POST[ $option_name ] ) ) );
216
  $option_name_values = $the_section . '_' . 'wcj_checkout_field_select_options_' . $i;
217
  $the_values = get_option( 'wcj_checkout_custom_field_select_options_' . $i );
218
  update_post_meta( $order_id, '_' . $option_name_values, $the_values );
219
  } elseif ( 'textarea' === $the_type && 'no' === get_option( 'wcj_checkout_custom_fields_textarea_clean', 'yes' ) ) {
220
+ update_post_meta( $order_id, '_' . $option_name, urldecode( $_POST[ $option_name ] ) );
221
  } else {
222
+ update_post_meta( $order_id, '_' . $option_name, wc_clean( urldecode( $_POST[ $option_name ] ) ) );
223
  }
224
  }
225
  }
336
  /**
337
  * add_woocommerce_admin_fields.
338
  *
339
+ * @version 4.3.0
340
  * @todo converting from before version 2.3.0: section?
341
  * @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
342
  */
398
  'wrapper_class' => 'form-field-wide',
399
  );
400
  if ( isset( $options ) ) {
401
+ // Displays checkout field value, not the key
402
+ add_filter( "woocommerce_order_get__{$section}_{$the_key}", function ( $name ) use ( $options ) {
403
+ if ( isset( $options[ $name ] ) ) {
404
+ return $options[ $name ];
405
+ }
406
+ return $name;
407
+ } );
408
  $fields[ $the_key ]['options'] = $options;
409
  }
410
  }
includes/class-wcj-eu-vat-number.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
- * @version 4.0.0
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
@@ -280,10 +280,10 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
280
  /**
281
  * add_default_checkout_billing_eu_vat_number.
282
  *
283
- * @version 3.4.0
284
  */
285
  function add_default_checkout_billing_eu_vat_number( $default_value, $field_key ) {
286
- if ( null !== ( $eu_vat_number_to_check = wcj_session_get( 'wcj_eu_vat_number_to_check' ) ) ) {
287
  return $eu_vat_number_to_check;
288
  } elseif ( is_user_logged_in() ) {
289
  $current_user = wp_get_current_user();
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
+ * @version 4.3.0
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
280
  /**
281
  * add_default_checkout_billing_eu_vat_number.
282
  *
283
+ * @version 4.3.0
284
  */
285
  function add_default_checkout_billing_eu_vat_number( $default_value, $field_key ) {
286
+ if ( '' != ( $eu_vat_number_to_check = wcj_session_get( 'wcj_eu_vat_number_to_check' ) ) ) {
287
  return $eu_vat_number_to_check;
288
  } elseif ( is_user_logged_in() ) {
289
  $current_user = wp_get_current_user();
includes/class-wcj-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
- * @version 4.0.0
6
  * @since 2.4.3
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Multicurrency extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 4.0.0
20
  * @todo check if we can just always execute `init()` on `init` hook
21
  */
22
  function __construct() {
@@ -41,7 +41,6 @@ class WCJ_Multicurrency extends WCJ_Module {
41
  parent::__construct();
42
 
43
  if ( $this->is_enabled() ) {
44
-
45
  $this->price_hooks_priority = wcj_get_module_price_hooks_priority( 'multicurrency' );
46
 
47
  // Session
@@ -65,10 +64,145 @@ class WCJ_Multicurrency extends WCJ_Module {
65
  }
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  /**
69
  * add_hooks.
70
  *
71
- * @version 3.9.0
72
  */
73
  function add_hooks() {
74
  if ( wcj_is_frontend() ) {
@@ -84,7 +218,11 @@ class WCJ_Multicurrency extends WCJ_Module {
84
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
85
 
86
  // "WooCommerce Product Add-ons" plugin
87
- add_filter( 'get_product_addons', array( $this, 'change_price_addons' ) );
 
 
 
 
88
 
89
  // Additional Price Filters
90
  $this->additional_price_filters = get_option( 'wcj_multicurrency_switcher_additional_price_filters', '' );
@@ -100,6 +238,28 @@ class WCJ_Multicurrency extends WCJ_Module {
100
  }
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  /**
104
  * init.
105
  *
@@ -114,22 +274,75 @@ class WCJ_Multicurrency extends WCJ_Module {
114
  }
115
 
116
  /**
117
- * change_price_addons.
 
 
 
118
  *
119
- * @version 3.1.0
120
- * @since 3.1.0
 
 
121
  */
122
- function change_price_addons( $addons ) {
123
- foreach ( $addons as $addon_key => $addon ) {
124
- if ( isset( $addon['options'] ) ) {
125
- foreach ( $addon['options'] as $option_key => $option ) {
126
- if ( isset( $option['price'] ) ) {
127
- $addons[ $addon_key ]['options'][ $option_key ]['price'] = $this->change_price( $option['price'], null );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
129
  }
130
  }
131
  }
132
- return $addons;
133
  }
134
 
135
  /**
@@ -236,7 +449,6 @@ class WCJ_Multicurrency extends WCJ_Module {
236
  * @version 3.8.0
237
  */
238
  function change_price( $price, $_product ) {
239
-
240
  if ( '' === $price ) {
241
  return $price;
242
  }
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
+ * @version 4.3.0
6
  * @since 2.4.3
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 4.3.0
20
  * @todo check if we can just always execute `init()` on `init` hook
21
  */
22
  function __construct() {
41
  parent::__construct();
42
 
43
  if ( $this->is_enabled() ) {
 
44
  $this->price_hooks_priority = wcj_get_module_price_hooks_priority( 'multicurrency' );
45
 
46
  // Session
64
  }
65
  }
66
 
67
+ /**
68
+ * Handles third party compatibility
69
+ *
70
+ * @version 4.3.0
71
+ * @since 4.3.0
72
+ */
73
+ function handle_third_party_compatibility(){
74
+ // "WooCommerce Smart Coupons" Compatibility
75
+ add_filter( 'woocommerce_coupon_get_amount', array( $this, 'smart_coupons_get_amount' ), 10, 2 );
76
+
77
+ // WooCommerce Price Filter Widget
78
+ add_action( 'wp_footer', array( $this, 'add_compatibility_with_price_filter_widget' ) );
79
+ add_action( 'wp_footer', array( $this, 'fix_price_filter_widget_currency_format' ) );
80
+ }
81
+
82
+ /**
83
+ * Adds compatibility with WooCommerce Price Filter widget
84
+ * @version 4.3.0
85
+ * @since 4.3.0
86
+ */
87
+ function add_compatibility_with_price_filter_widget() {
88
+ if ( ! is_active_widget( false, false, 'woocommerce_price_filter' ) ) {
89
+ return;
90
+ }
91
+ ?>
92
+ <?php
93
+ $exchange_rate = $this->get_currency_exchange_rate( $this->get_current_currency_code() );
94
+ ?>
95
+ <input type="hidden" id="wcj_mc_exchange_rate" value="<?php echo esc_html( $exchange_rate ) ?>"/>
96
+ <script>
97
+ var wcj_mc_pf_slider = {
98
+ slider: null,
99
+ convert_rate: 1,
100
+ original_min: 1,
101
+ original_max: 1,
102
+ original_values: [],
103
+ current_min: 1,
104
+ current_max: 1,
105
+ current_values: [],
106
+
107
+ init(slider, convert_rate) {
108
+ this.slider = slider;
109
+ this.convert_rate = convert_rate;
110
+ this.original_min = jQuery(this.slider).slider("option", "min");
111
+ this.original_max = jQuery(this.slider).slider("option", "max");
112
+ this.original_values = jQuery(this.slider).slider("option", "values");
113
+ this.current_min = this.original_min * this.convert_rate;
114
+ this.current_max = this.original_max * this.convert_rate;
115
+ this.current_values = this.original_values.map(function (elem) {
116
+ return elem * wcj_mc_pf_slider.convert_rate;
117
+ });
118
+ this.update_slider();
119
+ },
120
+
121
+ /**
122
+ * @see price-slider.js, init_price_filter()
123
+ */
124
+ update_slider() {
125
+ jQuery(this.slider).slider("destroy");
126
+ var current_min_price = Math.floor(this.current_min);
127
+ var current_max_price = Math.ceil(this.current_max);
128
+
129
+ jQuery(this.slider).slider({
130
+ range: true,
131
+ animate: true,
132
+ min: current_min_price,
133
+ max: current_max_price,
134
+ values: wcj_mc_pf_slider.current_values,
135
+ create: function () {
136
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #min_price').val(wcj_mc_pf_slider.current_values[0] / wcj_mc_pf_slider.convert_rate);
137
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #max_price').val(wcj_mc_pf_slider.current_values[1] / wcj_mc_pf_slider.convert_rate);
138
+ jQuery(document.body).trigger('price_slider_create', [Math.floor(wcj_mc_pf_slider.current_values[0]), Math.ceil(wcj_mc_pf_slider.current_values[1])]);
139
+ },
140
+ slide: function (event, ui) {
141
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #min_price').val(Math.floor(ui.values[0] / wcj_mc_pf_slider.convert_rate));
142
+ jQuery(wcj_mc_pf_slider.slider).parent().find('.price_slider_amount #max_price').val(Math.ceil(ui.values[1] / wcj_mc_pf_slider.convert_rate));
143
+ jQuery(document.body).trigger('price_slider_slide', [Math.floor(ui.values[0]), Math.ceil(ui.values[1])]);
144
+ },
145
+ change: function (event, ui) {
146
+ jQuery(document.body).trigger('price_slider_change', [Math.floor(ui.values[0]), Math.ceil(ui.values[1])]);
147
+ }
148
+ });
149
+ }
150
+ };
151
+ var wcj_mc_pf = {
152
+ price_filters: null,
153
+ rate: 1,
154
+ init: function (price_filters) {
155
+ this.price_filters = price_filters;
156
+ this.rate = document.getElementById('wcj_mc_exchange_rate').value;
157
+ this.update_slider();
158
+ },
159
+ update_slider: function () {
160
+ [].forEach.call(wcj_mc_pf.price_filters, function (el) {
161
+ wcj_mc_pf_slider.init(el, wcj_mc_pf.rate);
162
+ });
163
+ }
164
+ }
165
+ document.addEventListener("DOMContentLoaded", function () {
166
+ var price_filters = document.querySelectorAll('.price_slider.ui-slider');
167
+ if (price_filters.length) {
168
+ wcj_mc_pf.init(price_filters);
169
+ }
170
+ });
171
+ </script>
172
+ <?php
173
+ }
174
+
175
+ /**
176
+ * Fixes price filter widget currency format
177
+ *
178
+ * @version 4.3.0
179
+ * @since 4.3.0
180
+ */
181
+ function fix_price_filter_widget_currency_format() {
182
+ $price_args = apply_filters( 'wc_price_args', array(
183
+ 'ex_tax_label' => false,
184
+ 'currency' => '',
185
+ 'decimal_separator' => wc_get_price_decimal_separator(),
186
+ 'thousand_separator' => wc_get_price_thousand_separator(),
187
+ 'decimals' => wc_get_price_decimals(),
188
+ 'price_format' => get_woocommerce_price_format(),
189
+ ) );
190
+ $symbol = apply_filters( 'woocommerce_currency_symbol', get_woocommerce_currency_symbol(), get_woocommerce_currency() );
191
+ wp_localize_script(
192
+ 'wc-price-slider', 'woocommerce_price_slider_params', array(
193
+ 'currency_format_num_decimals' => $price_args['decimals'],
194
+ 'currency_format_symbol' => $symbol,
195
+ 'currency_format_decimal_sep' => esc_attr( $price_args['decimal_separator'] ),
196
+ 'currency_format_thousand_sep' => esc_attr( $price_args['thousand_separator'] ),
197
+ 'currency_format' => esc_attr( str_replace( array( '%1$s', '%2$s' ), array( '%s', '%v' ), $price_args['price_format'] ) ),
198
+ )
199
+ );
200
+ }
201
+
202
  /**
203
  * add_hooks.
204
  *
205
+ * @version 4.3.0
206
  */
207
  function add_hooks() {
208
  if ( wcj_is_frontend() ) {
218
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
219
 
220
  // "WooCommerce Product Add-ons" plugin
221
+ add_filter( 'woocommerce_get_item_data', array( $this, 'get_addons_item_data' ), 20, 2 );
222
+ add_filter( 'woocommerce_product_addons_option_price_raw', array( $this, 'product_addons_option_price_raw' ), 10, 2 );
223
+
224
+ // Third Party Compatibility
225
+ $this->handle_third_party_compatibility();
226
 
227
  // Additional Price Filters
228
  $this->additional_price_filters = get_option( 'wcj_multicurrency_switcher_additional_price_filters', '' );
238
  }
239
  }
240
 
241
+ /**
242
+ * Converts Smart Coupon currency.
243
+ *
244
+ * @version 4.3.0
245
+ * @since 4.3.0
246
+ *
247
+ * @param $value
248
+ * @param $coupon
249
+ *
250
+ * @return float|int
251
+ */
252
+ function smart_coupons_get_amount( $value, $coupon ) {
253
+ if (
254
+ ! is_a( $coupon, 'WC_Coupon' ) ||
255
+ 'smart_coupon' !== $coupon->get_discount_type()
256
+ ) {
257
+ return $value;
258
+ }
259
+ $value = $this->change_price( $value, null );
260
+ return $value;
261
+ }
262
+
263
  /**
264
  * init.
265
  *
274
  }
275
 
276
  /**
277
+ * Converts add-ons plugin prices.
278
+ *
279
+ * @version 4.3.0
280
+ * @since 4.3.0
281
  *
282
+ * @param $price
283
+ * @param $option
284
+ *
285
+ * @return float|int
286
  */
287
+ function product_addons_option_price_raw( $price, $option ) {
288
+ $price = $this->change_price( $price, null );
289
+ return $price;
290
+ }
291
+
292
+ /**
293
+ * Finds old add-ons fields on cart and replace by correct price.
294
+ *
295
+ * @version 4.3.0
296
+ * @since 4.3.0
297
+ *
298
+ * @param $other_data
299
+ * @param $cart_item
300
+ *
301
+ * @return mixed
302
+ */
303
+ function get_addons_item_data( $other_data, $cart_item ) {
304
+ if ( ! empty( $cart_item['addons'] ) ) {
305
+ foreach ( $cart_item['addons'] as $addon ) {
306
+ $price = isset( $cart_item['addons_price_before_calc'] ) ? $cart_item['addons_price_before_calc'] : $addon['price'];
307
+ $name_old = $addon['name'];
308
+
309
+ // Get old field name (with wrong currency price)
310
+ if ( 0 == $addon['price'] ) {
311
+ $name_old .= '';
312
+ } elseif ( 'percentage_based' === $addon['price_type'] && 0 == $price ) {
313
+ $name_old .= '';
314
+ } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
315
+ $name_old .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
316
+ } else {
317
+ $_product = new WC_Product( $cart_item['product_id'] );
318
+ $_product->set_price( $price * ( $addon['price'] / 100 ) );
319
+ $name_old .= ' (' . WC()->cart->get_product_price( $_product ) . ')';
320
+ }
321
+
322
+ // Get new field name (with correct currency price)
323
+ $name_new = $addon['name'];
324
+ $addon['price'] = $this->change_price( $addon['price'], null );
325
+ if ( 0 == $addon['price'] ) {
326
+ $name_new .= '';
327
+ } elseif ( 'percentage_based' === $addon['price_type'] && 0 == $price ) {
328
+ $name_new .= '';
329
+ } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
330
+ $name_new .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
331
+ } else {
332
+ $_product = new WC_Product( $cart_item['product_id'] );
333
+ $_product->set_price( $price * ( $addon['price'] / 100 ) );
334
+ $name_new .= ' (' . WC()->cart->get_product_price( $_product ) . ')';
335
+ }
336
+
337
+ // Find old field on cart and replace by correct price
338
+ foreach ( $other_data as $key => $data ) {
339
+ if ( $data['name'] == $name_old ) {
340
+ $other_data[ $key ]['name'] = $name_new;
341
  }
342
  }
343
  }
344
  }
345
+ return $other_data;
346
  }
347
 
348
  /**
449
  * @version 3.8.0
450
  */
451
  function change_price( $price, $_product ) {
 
452
  if ( '' === $price ) {
453
  return $price;
454
  }
includes/class-wcj-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
- * @version 3.8.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,8 +16,10 @@ class WCJ_My_Account extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.8.0
20
  * @since 2.9.0
 
 
21
  */
22
  function __construct() {
23
 
@@ -52,6 +54,13 @@ class WCJ_My_Account extends WCJ_Module {
52
  add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'maybe_add_my_account_order_actions' ), 10, 2 );
53
  add_action( 'wp_footer', array( $this, 'maybe_add_js_conformation' ) );
54
  add_action( 'init', array( $this, 'process_woocommerce_mark_order_status' ) );
 
 
 
 
 
 
 
55
  // Custom info
56
  if ( 'yes' === get_option( 'wcj_my_account_custom_info_enabled', 'no' ) ) {
57
  $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_my_account_custom_info_total_number', 1 ) );
@@ -85,6 +94,73 @@ class WCJ_My_Account extends WCJ_Module {
85
  }
86
  }
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  /**
89
  * customize_menu_custom_endpoints.
90
  *
@@ -105,12 +181,32 @@ class WCJ_My_Account extends WCJ_Module {
105
  /**
106
  * customize_dashboard.
107
  *
108
- * @version 3.8.0
109
  * @since 3.8.0
110
  * @see woocommerce/templates/myaccount/dashboard.php
111
  */
112
  function customize_dashboard( $value ) {
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  $current_user = get_user_by( 'id', get_current_user_id() );
115
 
116
  if ( '' != ( $custom_content = get_option( 'wcj_my_account_custom_dashboard_content', '' ) ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
+ * @version 4.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 4.3.0
20
  * @since 2.9.0
21
+ * @todo [dev] Custom Menu Pages: add "Type" option with values: "param" (i.e. as it is now) or "endpoint"
22
+ * @todo [dev] Custom Menu Pages: deprecate "Add Custom Menu Items" (and add "link" value in "Type" options)
23
  */
24
  function __construct() {
25
 
54
  add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'maybe_add_my_account_order_actions' ), 10, 2 );
55
  add_action( 'wp_footer', array( $this, 'maybe_add_js_conformation' ) );
56
  add_action( 'init', array( $this, 'process_woocommerce_mark_order_status' ) );
57
+ // Custom pages
58
+ if ( 'yes' === get_option( 'wcj_my_account_custom_pages_enabled', 'no' ) ) {
59
+ add_action( 'woocommerce_account_' . 'page' . '_endpoint', array( $this, 'customize_dashboard' ), PHP_INT_MAX );
60
+ add_filter( 'the_title', array( $this, 'set_custom_page_title' ), PHP_INT_MAX, 2 );
61
+ add_filter( 'woocommerce_account_menu_items', array( $this, 'add_custom_page_menu_item' ), PHP_INT_MAX );
62
+ add_filter( 'woocommerce_get_endpoint_url', array( $this, 'set_custom_page_url' ), PHP_INT_MAX, 4 );
63
+ }
64
  // Custom info
65
  if ( 'yes' === get_option( 'wcj_my_account_custom_info_enabled', 'no' ) ) {
66
  $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_my_account_custom_info_total_number', 1 ) );
94
  }
95
  }
96
 
97
+ /**
98
+ * get_custom_pages.
99
+ *
100
+ * @version 4.3.0
101
+ * @since 4.3.0
102
+ * @todo [dev] customizable ID (i.e. instead of `sanitize_title( $title[ $i ] )`)
103
+ */
104
+ function get_custom_pages() {
105
+ if ( isset( $this->custom_pages ) ) {
106
+ return $this->custom_pages;
107
+ }
108
+ $this->custom_pages = array();
109
+ $title = get_option( 'wcj_my_account_custom_pages_title', array() );
110
+ $content = get_option( 'wcj_my_account_custom_pages_content', array() );
111
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_my_account_custom_pages_total_number', 1 ) ); $i++ ) {
112
+ if ( ! empty( $title[ $i ] ) && ! empty( $content[ $i ] ) ) {
113
+ $this->custom_pages[ sanitize_title( $title[ $i ] ) ] = array( 'title' => $title[ $i ], 'content' => $content[ $i ] );
114
+ }
115
+ }
116
+ return $this->custom_pages;
117
+ }
118
+
119
+ /**
120
+ * set_custom_page_title.
121
+ *
122
+ * @version 4.3.0
123
+ * @since 4.3.0
124
+ */
125
+ function set_custom_page_title( $title, $id ) {
126
+ if ( isset( $_GET['section'] ) && $id == get_option( 'woocommerce_myaccount_page_id' ) ) {
127
+ if ( ! isset( $this->custom_pages ) ) {
128
+ $this->get_custom_pages();
129
+ }
130
+ $endpoint = $_GET['section'];
131
+ return ( isset( $this->custom_pages[ $endpoint ] ) ? $this->custom_pages[ $endpoint ]['title'] : $title );
132
+ }
133
+ return $title;
134
+ }
135
+
136
+ /**
137
+ * set_custom_page_url.
138
+ *
139
+ * @version 4.3.0
140
+ * @since 4.3.0
141
+ * @todo [dev] (maybe) customizable `section` (e.g. `wcj-section`)
142
+ */
143
+ function set_custom_page_url( $url, $endpoint, $value, $permalink ) {
144
+ if ( ! isset( $this->custom_pages ) ) {
145
+ $this->get_custom_pages();
146
+ }
147
+ return ( isset( $this->custom_pages[ $endpoint ] ) && ( $myaccount_page_id = get_option( 'woocommerce_myaccount_page_id' ) ) ?
148
+ add_query_arg( 'section', $endpoint, get_permalink( $myaccount_page_id ) ) : $url );
149
+ }
150
+
151
+ /**
152
+ * add_custom_page_menu_item.
153
+ *
154
+ * @version 4.3.0
155
+ * @since 4.3.0
156
+ */
157
+ function add_custom_page_menu_item( $items ) {
158
+ foreach ( $this->get_custom_pages() as $custom_menu_page_id => $custom_menu_page_data ) {
159
+ $items[ $custom_menu_page_id ] = $custom_menu_page_data['title'];
160
+ }
161
+ return $items;
162
+ }
163
+
164
  /**
165
  * customize_menu_custom_endpoints.
166
  *
181
  /**
182
  * customize_dashboard.
183
  *
184
+ * @version 4.3.0
185
  * @since 3.8.0
186
  * @see woocommerce/templates/myaccount/dashboard.php
187
  */
188
  function customize_dashboard( $value ) {
189
 
190
+ // Custom pages
191
+ if ( 'yes' === get_option( 'wcj_my_account_custom_pages_enabled', 'no' ) ) {
192
+ if ( isset( $_GET['section'] ) ) {
193
+ if ( ! isset( $this->custom_pages ) ) {
194
+ $this->get_custom_pages();
195
+ }
196
+ if ( isset( $this->custom_pages[ $_GET['section'] ] ) ) {
197
+ echo do_shortcode( $this->custom_pages[ $_GET['section'] ]['content'] );
198
+ return;
199
+ }
200
+ }
201
+ if ( 'no' === get_option( 'wcj_my_account_custom_dashboard_enabled', 'no' ) ) {
202
+ wc_get_template( 'myaccount/dashboard.php', array(
203
+ 'current_user' => get_user_by( 'id', get_current_user_id() ),
204
+ ) );
205
+ return;
206
+ }
207
+ }
208
+
209
+ // Dashboard customization
210
  $current_user = get_user_by( 'id', get_current_user_id() );
211
 
212
  if ( '' != ( $custom_content = get_option( 'wcj_my_account_custom_dashboard_content', '' ) ) ) {
includes/class-wcj-offer-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
- * @version 4.2.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Offer_Price extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 4.2.0
20
  * @since 2.9.0
21
  * @todo settings - more info about position priorities, e.g.: __( 'Standard priorities for "Inside single product summary": title - 5, rating - 10, price - 10, excerpt - 20, add to cart - 30, meta - 40, sharing - 50', 'woocommerce-jetpack' )
22
  * @todo (maybe) css - customizable fonts etc.
@@ -66,7 +66,7 @@ class WCJ_Offer_Price extends WCJ_Module {
66
  );
67
  }
68
  }
69
- add_action( 'woocommerce_before_main_content', array( $this, 'add_offer_price_form' ) );
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
71
  add_action( 'init', array( $this, 'offer_price' ) );
72
  if ( in_array( apply_filters( 'booster_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ), array( 'per_product', 'per_product_and_per_category' ) ) ) {
@@ -409,7 +409,7 @@ class WCJ_Offer_Price extends WCJ_Module {
409
  /**
410
  * offer_price.
411
  *
412
- * @version 2.9.0
413
  * @since 2.9.0
414
  * @todo (maybe) separate customer copy email template and subject
415
  * @todo (maybe) redirect (no notice though)
@@ -422,6 +422,9 @@ class WCJ_Offer_Price extends WCJ_Module {
422
  if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
423
  $product_id = $_POST['wcj-offer-price-product-id'];
424
  $_product = wc_get_product( $product_id );
 
 
 
425
  // Email address
426
  $email_address = get_option( 'wcj_offer_price_email_address', '%admin_email%' );
427
  if ( '' == $email_address ) {
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
+ * @version 4.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 4.3.0
20
  * @since 2.9.0
21
  * @todo settings - more info about position priorities, e.g.: __( 'Standard priorities for "Inside single product summary": title - 5, rating - 10, price - 10, excerpt - 20, add to cart - 30, meta - 40, sharing - 50', 'woocommerce-jetpack' )
22
  * @todo (maybe) css - customizable fonts etc.
66
  );
67
  }
68
  }
69
+ add_action( 'wp_footer', array( $this, 'add_offer_price_form' ) );
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
71
  add_action( 'init', array( $this, 'offer_price' ) );
72
  if ( in_array( apply_filters( 'booster_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ), array( 'per_product', 'per_product_and_per_category' ) ) ) {
409
  /**
410
  * offer_price.
411
  *
412
+ * @version 4.3.0
413
  * @since 2.9.0
414
  * @todo (maybe) separate customer copy email template and subject
415
  * @todo (maybe) redirect (no notice though)
422
  if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
423
  $product_id = $_POST['wcj-offer-price-product-id'];
424
  $_product = wc_get_product( $product_id );
425
+ if ( ! is_a( $_product, 'WC_Product' ) ) {
426
+ return;
427
+ }
428
  // Email address
429
  $email_address = get_option( 'wcj_offer_price_email_address', '%admin_email%' );
430
  if ( '' == $email_address ) {
includes/class-wcj-payment-gateways-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency Converter
4
  *
5
- * @version 4.0.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -130,7 +130,7 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
130
  /**
131
  * change_price_by_gateway.
132
  *
133
- * @version 3.9.0
134
  * @since 2.3.0
135
  */
136
  function change_price_by_gateway( $price, $product ) {
@@ -138,7 +138,8 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
138
  $current_gateway = $this->get_chosen_payment_method();
139
  if ( '' != $current_gateway ) {
140
  $gateway_currency_exchange_rate = get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
141
- $price = $price * $gateway_currency_exchange_rate;
 
142
  }
143
  }
144
  return $price;
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency Converter
4
  *
5
+ * @version 4.3.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
130
  /**
131
  * change_price_by_gateway.
132
  *
133
+ * @version 4.3.0
134
  * @since 2.3.0
135
  */
136
  function change_price_by_gateway( $price, $product ) {
138
  $current_gateway = $this->get_chosen_payment_method();
139
  if ( '' != $current_gateway ) {
140
  $gateway_currency_exchange_rate = get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
141
+ $gateway_currency_exchange_rate = str_replace( ',', '.', $gateway_currency_exchange_rate );
142
+ $price = $price * $gateway_currency_exchange_rate;
143
  }
144
  }
145
  return $price;
includes/class-wcj-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
- * @version 4.1.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.5.0
19
  */
20
  function __construct() {
21
 
@@ -43,8 +43,8 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
43
  add_action( 'init', array( $this, 'generate_pdf_on_init' ) );
44
 
45
  // Bulk actions
46
- add_action( 'admin_footer-edit.php', array( $this, 'bulk_actions_pdfs_admin_footer' ) );
47
- add_action( 'load-edit.php', array( $this, 'bulk_actions_pdfs' ) );
48
  add_action( 'admin_notices', array( $this, 'bulk_actions_pdfs_notices' ) );
49
 
50
  $this->the_pdf_invoicing_report_tool = include_once( 'pdf-invoices/class-wcj-pdf-invoicing-report-tool.php' );
@@ -74,43 +74,30 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
74
  }
75
 
76
  /**
77
- * Add extra bulk action options to generate/download documents.
78
- *
79
- * Using Javascript until WordPress core fixes: http://core.trac.wordpress.org/ticket/16031
80
  *
81
- * @see https://www.skyverge.com/blog/add-custom-bulk-action/
82
- * @version 3.5.0
83
  * @since 2.5.7
84
- * @todo add bulk actions in a correct way for newer WP
 
 
 
85
  */
86
- function bulk_actions_pdfs_admin_footer() {
87
- global $post_type;
88
- if ( 'shop_order' == $post_type ) {
89
- $invoice_types = wcj_get_enabled_invoice_types();
90
- $actions = array(
91
- 'generate' => __( 'Generate', 'woocommerce-jetpack' ),
92
- 'download' => __( 'Download (Zip)', 'woocommerce-jetpack' ),
93
- 'merge' => __( 'Merge (Print)', 'woocommerce-jetpack' ),
94
- );
95
- $html = '';
96
- $html .= '<script type="text/javascript">';
97
- foreach ( $actions as $action_id => $action_title ) {
98
- foreach ( $invoice_types as $invoice_type ) {
99
- $key = $invoice_type['id'];
100
- $title = $invoice_type['title'];
101
- $html .= 'jQuery(function() { ';
102
- foreach ( array( 'action', 'action2' ) as $action ) {
103
- $html .= 'jQuery(\'<option>\').' .
104
- 'val(\''. $action_id . '_' . $key . '\').' .
105
- 'text(\'' . $action_title . ' ' . $title . '\').' .
106
- 'appendTo(\'select[name="' . $action . '"]\'); ';
107
- }
108
- $html .= '}); ';
109
- }
110
  }
111
- $html .= '</script>';
112
- echo $html;
113
  }
 
 
114
  }
115
 
116
  /**
@@ -160,33 +147,34 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
160
  }
161
 
162
  /**
163
- * bulk_actions_pdfs.
164
  *
165
- * @version 4.1.0
166
  * @since 2.5.7
167
  * @todo on `generate` (and maybe other actions) validate user permissions/capabilities - `if ( ! current_user_can( $post_type_object->cap->export_post, $post_id ) ) { wp_die( __( 'You are not allowed to export this post.' ) ); }`
168
- * @todo add security check - `check_admin_referer( 'bulk-posts' )`
 
 
 
 
 
169
  */
170
- function bulk_actions_pdfs() {
171
-
172
- // Get the action
173
- $wp_list_table = _get_list_table( 'WP_Posts_List_Table' );
174
- $action = $wp_list_table->current_action();
175
-
176
- // Validate the action
177
- $action_exploded = explode( '_', $action, 2 );
178
  if (
179
- ! isset( $_GET['post'] ) || empty( $action_exploded ) || ! is_array( $action_exploded ) || 2 !== count( $action_exploded ) ||
180
- ! in_array( $action_exploded[0], array( 'generate', 'download', 'merge' ) )
 
181
  ) {
182
- return;
183
  }
184
 
 
 
 
185
  // Perform the action
186
- $post_ids = $_GET['post'];
187
  $the_action = $action_exploded[0];
188
  $the_type = $action_exploded[1];
189
- $sendback = false;
190
  switch( $the_action ) {
191
  case 'generate':
192
  $generated = 0;
@@ -196,28 +184,26 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
196
  }
197
  }
198
  // Build the redirect url
199
- $sendback = add_query_arg(
200
  array(
201
- 'post_type' => 'shop_order',
202
  'generated' => $generated,
203
  'generated_type' => $the_type,
204
  'generated_' . $the_type => 1,
205
  'ids' => join( ',', $post_ids ),
206
  'post_status' => $_GET['post_status'],
207
  ),
208
- $sendback
209
  );
210
  break;
211
  case 'download':
212
  if ( '' != ( $result = $this->get_invoices_zip( $the_type, $post_ids ) ) ) {
213
  // Build the redirect url
214
- $sendback = add_query_arg(
215
  array(
216
- 'post_type' => 'shop_order',
217
  'post_status' => $_GET['post_status'],
218
  'wcj_notice' => $result,
219
  ),
220
- $sendback
221
  );
222
  }
223
  break;
@@ -231,13 +217,12 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
231
  if ( ! empty( $merge_ids ) ) {
232
  if ( '' != ( $result = $this->merge_pdfs( $the_type, $merge_ids ) ) ) {
233
  // Build the redirect url
234
- $sendback = add_query_arg(
235
  array(
236
- 'post_type' => 'shop_order',
237
  'post_status' => $_GET['post_status'],
238
  'wcj_notice' => $result,
239
  ),
240
- $sendback
241
  );
242
  }
243
  }
@@ -245,10 +230,7 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
245
  default:
246
  return;
247
  }
248
-
249
- // Redirect client
250
- wp_redirect( esc_url_raw( $sendback ) );
251
- exit();
252
  }
253
 
254
  /**
@@ -455,7 +437,7 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
455
  /**
456
  * generate_pdf_on_init.
457
  *
458
- * @version 2.9.0
459
  */
460
  function generate_pdf_on_init() {
461
  // Check if all is OK
@@ -465,7 +447,11 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
465
  // Get PDF
466
  $the_invoice = wcj_get_pdf_invoice( $this->order_id, $this->invoice_type_id );
467
  $dest = ( true === $this->save_as_pdf ? 'D' : 'I' );
 
 
468
  $the_invoice->get_pdf( $dest );
 
 
469
  die();
470
  }
471
 
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 4.3.0
19
  */
20
  function __construct() {
21
 
43
  add_action( 'init', array( $this, 'generate_pdf_on_init' ) );
44
 
45
  // Bulk actions
46
+ add_filter( 'bulk_actions-edit-' . 'shop_order', array( $this, 'bulk_actions_register' ) );
47
+ add_filter( 'handle_bulk_actions-edit-' . 'shop_order', array( $this, 'bulk_actions_handle' ), 10, 3 );
48
  add_action( 'admin_notices', array( $this, 'bulk_actions_pdfs_notices' ) );
49
 
50
  $this->the_pdf_invoicing_report_tool = include_once( 'pdf-invoices/class-wcj-pdf-invoicing-report-tool.php' );
74
  }
75
 
76
  /**
77
+ * Adds extra bulk action options to generate/download documents.
 
 
78
  *
79
+ * @version 4.3.0
 
80
  * @since 2.5.7
81
+ *
82
+ * @param $actions
83
+ *
84
+ * @return array
85
  */
86
+ function bulk_actions_register( $actions ) {
87
+ $invoice_types = wcj_get_enabled_invoice_types();
88
+ $new_actions_source = array(
89
+ 'generate' => __( 'Generate', 'woocommerce-jetpack' ),
90
+ 'download' => __( 'Download (Zip)', 'woocommerce-jetpack' ),
91
+ 'merge' => __( 'Merge (Print)', 'woocommerce-jetpack' ),
92
+ );
93
+ $new_actions = array();
94
+ foreach ( $new_actions_source as $source_key => $source_value ) {
95
+ foreach ( $invoice_types as $type_key => $type_value ) {
96
+ $new_actions[ $source_key . '_' . $type_value['id'] ] = $source_value . ' ' . $type_value['title'];
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
 
 
98
  }
99
+ $actions = array_merge( $actions, $new_actions );
100
+ return $actions;
101
  }
102
 
103
  /**
147
  }
148
 
149
  /**
150
+ * Processes the PDF bulk actions.
151
  *
152
+ * @version 4.3.0
153
  * @since 2.5.7
154
  * @todo on `generate` (and maybe other actions) validate user permissions/capabilities - `if ( ! current_user_can( $post_type_object->cap->export_post, $post_id ) ) { wp_die( __( 'You are not allowed to export this post.' ) ); }`
155
+ *
156
+ * @param $redirect_to
157
+ * @param $action
158
+ * @param $post_ids
159
+ *
160
+ * @return string
161
  */
162
+ function bulk_actions_handle( $redirect_to, $action, $post_ids ) {
 
 
 
 
 
 
 
163
  if (
164
+ false === preg_match( '(generate|download|merge)', $action ) ||
165
+ false === preg_match( '(invoice|packing_slip|credit_note)', $action ) ||
166
+ false === check_admin_referer( 'bulk-posts' )
167
  ) {
168
+ return $redirect_to;
169
  }
170
 
171
+ // Validate the action
172
+ $action_exploded = explode( '_', $action, 2 );
173
+
174
  // Perform the action
 
175
  $the_action = $action_exploded[0];
176
  $the_type = $action_exploded[1];
177
+
178
  switch( $the_action ) {
179
  case 'generate':
180
  $generated = 0;
184
  }
185
  }
186
  // Build the redirect url
187
+ $redirect_to = add_query_arg(
188
  array(
 
189
  'generated' => $generated,
190
  'generated_type' => $the_type,
191
  'generated_' . $the_type => 1,
192
  'ids' => join( ',', $post_ids ),
193
  'post_status' => $_GET['post_status'],
194
  ),
195
+ $redirect_to
196
  );
197
  break;
198
  case 'download':
199
  if ( '' != ( $result = $this->get_invoices_zip( $the_type, $post_ids ) ) ) {
200
  // Build the redirect url
201
+ $redirect_to = add_query_arg(
202
  array(
 
203
  'post_status' => $_GET['post_status'],
204
  'wcj_notice' => $result,
205
  ),
206
+ $redirect_to
207
  );
208
  }
209
  break;
217
  if ( ! empty( $merge_ids ) ) {
218
  if ( '' != ( $result = $this->merge_pdfs( $the_type, $merge_ids ) ) ) {
219
  // Build the redirect url
220
+ $redirect_to = add_query_arg(
221
  array(
 
222
  'post_status' => $_GET['post_status'],
223
  'wcj_notice' => $result,
224
  ),
225
+ $redirect_to
226
  );
227
  }
228
  }
230
  default:
231
  return;
232
  }
233
+ return $redirect_to;
 
 
 
234
  }
235
 
236
  /**
437
  /**
438
  * generate_pdf_on_init.
439
  *
440
+ * @version 4.3.0
441
  */
442
  function generate_pdf_on_init() {
443
  // Check if all is OK
447
  // Get PDF
448
  $the_invoice = wcj_get_pdf_invoice( $this->order_id, $this->invoice_type_id );
449
  $dest = ( true === $this->save_as_pdf ? 'D' : 'I' );
450
+ ob_clean();
451
+ ob_flush();
452
  $the_invoice->get_pdf( $dest );
453
+ ob_end_flush();
454
+ ob_end_clean();
455
  die();
456
  }
457
 
includes/class-wcj-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
- * @version 3.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.8.0
20
  * @todo (maybe) move "Display radio buttons instead of drop box for variable products" to new module
21
  * @todo (maybe) rename to "Add to Cart Button (Options)"
22
  */
@@ -68,7 +68,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
68
  // Variable Add to Cart Template
69
  if ( 'yes' === apply_filters( 'booster_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
71
- add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
72
  }
73
 
74
  // Replace Add to Cart Loop with Single
@@ -318,16 +318,24 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
318
  }
319
 
320
  /**
321
- * change_variable_add_to_cart_template.
322
- *
323
- * @version 2.4.8
324
- * @since 2.4.8
325
  */
326
- function change_variable_add_to_cart_template( $located, $template_name, $args, $template_path, $default_path ) {
327
- if ( 'single-product/add-to-cart/variable.php' == $template_name ) {
328
- $located = untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/..' ) ) . '/includes/templates/wcj-add-to-cart-variable.php';
329
- }
330
- return $located;
 
 
 
 
 
 
 
 
331
  }
332
 
333
  /*
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
+ * @version 4.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 4.3.0
20
  * @todo (maybe) move "Display radio buttons instead of drop box for variable products" to new module
21
  * @todo (maybe) rename to "Add to Cart Button (Options)"
22
  */
68
  // Variable Add to Cart Template
69
  if ( 'yes' === apply_filters( 'booster_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
71
+ add_action( 'woocommerce_before_variations_form', array( $this, 'add_variations_radio_buttons_template' ) );
72
  }
73
 
74
  // Replace Add to Cart Loop with Single
318
  }
319
 
320
  /**
321
+ * Adds radio buttons template for variations
322
+ * @version 4.3.0
323
+ * @since 4.3.0
324
+ * @see woocommerce_variable_add_to_cart()
325
  */
326
+ function add_variations_radio_buttons_template() {
327
+ global $product;
328
+ $get_variations = count( $product->get_children() ) <= apply_filters( 'woocommerce_ajax_variation_threshold', 30, $product );
329
+ wc_get_template( 'wcj-radio-for-variations.php', array(
330
+ 'available_variations' => $get_variations ? $product->get_available_variations() : false,
331
+ 'attributes' => $product->get_variation_attributes(),
332
+ 'selected_attributes' => $product->get_default_attributes(),
333
+ ), '', WCJ_PLUGIN_PATH . '/includes/templates/' );
334
+ ?>
335
+ <style>
336
+ table.variations{display:none}
337
+ </style>
338
+ <?php
339
  }
340
 
341
  /*
includes/class-wcj-product-bookings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Bookings
4
  *
5
- * @version 3.9.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -120,22 +120,25 @@ class WCJ_Product_Bookings extends WCJ_Module {
120
  /**
121
  * enqueue_scripts.
122
  *
123
- * @version 2.8.0
124
  * @since 2.5.0
125
  * @todo add "calculating price" progress message
126
  */
127
  function enqueue_scripts() {
128
- if ( is_product() ) {
129
- $the_product = wc_get_product();
130
- if ( $this->is_bookings_product( $the_product ) ) {
131
- wp_enqueue_script( 'wcj-bookings', wcj_plugin_url() . '/includes/js/wcj-bookings.js', array(), WCJ()->version, true );
132
- wp_localize_script( 'wcj-bookings', 'ajax_object', array(
133
- 'ajax_url' => admin_url( 'admin-ajax.php' ),
134
- 'product_id' => get_the_ID(),
135
- 'wrong_dates_message' => get_option( 'wcj_product_bookings_message_date_to_before_date_from', __( '"Date to" must be after "Date from"', 'woocommerce-jetpack' ) ),
136
- ) );
137
- }
138
  }
 
 
 
 
 
 
 
139
  }
140
 
141
  /**
@@ -302,10 +305,46 @@ class WCJ_Product_Bookings extends WCJ_Module {
302
  return $cart_item_data;
303
  }
304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  /**
306
  * add_input_fields_to_frontend.
307
  *
308
- * @version 3.8.0
309
  * @since 2.5.0
310
  * @todo more options: exclude days (1-31), exact availability dates, mindate, maxdate, firstday, dateformat etc.
311
  */
@@ -314,6 +353,7 @@ class WCJ_Product_Bookings extends WCJ_Module {
314
  return;
315
  }
316
  if ( $this->is_bookings_product( wc_get_product() ) ) {
 
317
  $data_table = array();
318
  $date_from_value = ( isset( $_POST['wcj_product_bookings_date_from'] ) ) ? $_POST['wcj_product_bookings_date_from'] : '';
319
  $date_to_value = ( isset( $_POST['wcj_product_bookings_date_to'] ) ) ? $_POST['wcj_product_bookings_date_to'] : '';
@@ -334,6 +374,7 @@ class WCJ_Product_Bookings extends WCJ_Module {
334
  '<input firstday="0"' . $date_to_exclude_days . $date_to_exclude_months . ' dateformat="mm/dd/yy" mindate="0" type="datepicker" display="date" id="wcj_product_bookings_date_to" name="wcj_product_bookings_date_to" placeholder="" value="' . $date_to_value . '">',
335
  );
336
  echo wcj_get_table_html( $data_table, array( 'table_heading_type' => 'none', ) );
 
337
  echo '<div style="display:none !important;" name="wcj_bookings_message"><p style="color:red;"></p></div>';
338
  $this->are_bookings_input_fields_displayed = true;
339
  }
@@ -342,20 +383,32 @@ class WCJ_Product_Bookings extends WCJ_Module {
342
  /**
343
  * add_per_day_label.
344
  *
345
- * @version 2.5.2
346
  * @since 2.5.0
347
  */
348
  function add_per_day_label( $price_html, $_product ) {
 
 
 
 
 
 
349
  return ( $this->is_bookings_product( $_product ) ) ? $price_html . ' ' . get_option( 'wcj_product_bookings_label_per_day', __( '/ day', 'woocommerce-jetpack' ) ) : $price_html;
350
  }
351
 
352
  /**
353
  * change_price.
354
  *
355
- * @version 2.5.0
356
  * @since 2.5.0
357
  */
358
  function change_price( $price, $_product ) {
 
 
 
 
 
 
359
  return ( $this->is_bookings_product( $_product ) && isset( $_product->wcj_bookings_price ) ) ? $_product->wcj_bookings_price : $price;
360
  }
361
 
2
  /**
3
  * Booster for WooCommerce - Module - Bookings
4
  *
5
+ * @version 4.3.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
120
  /**
121
  * enqueue_scripts.
122
  *
123
+ * @version 4.3.0
124
  * @since 2.5.0
125
  * @todo add "calculating price" progress message
126
  */
127
  function enqueue_scripts() {
128
+ if (
129
+ ! is_product() ||
130
+ ! $this->is_bookings_product( $the_product = wc_get_product() ) ||
131
+ ( 'no' === get_option( 'wcj_product_bookings_price_per_day_variable_products', 'yes' ) && ( $the_product->is_type( 'variable' ) || $the_product->is_type( 'variation' ) ) )
132
+ ) {
133
+ return;
 
 
 
 
134
  }
135
+
136
+ wp_enqueue_script( 'wcj-bookings', wcj_plugin_url() . '/includes/js/wcj-bookings.js', array(), WCJ()->version, true );
137
+ wp_localize_script( 'wcj-bookings', 'ajax_object', array(
138
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
139
+ 'product_id' => get_the_ID(),
140
+ 'wrong_dates_message' => get_option( 'wcj_product_bookings_message_date_to_before_date_from', __( '"Date to" must be after "Date from"', 'woocommerce-jetpack' ) ),
141
+ ) );
142
  }
143
 
144
  /**
305
  return $cart_item_data;
306
  }
307
 
308
+ /**
309
+ * Create custom style for bookings product page
310
+ *
311
+ * @version 4.3.0
312
+ * @since 2.5.0
313
+ */
314
+ function create_custom_style(){
315
+ ?>
316
+ <style>
317
+ .wcj-loader {
318
+ display:none;
319
+ border: 4px solid #f3f3f3;
320
+ border-radius: 50%;
321
+ border-top: 4px solid #999999;
322
+ width: 25px;height: 25px;
323
+ -webkit-animation: spin 1s linear infinite; animation: spin 1s linear infinite;
324
+ }
325
+ /* Safari */
326
+ @-webkit-keyframes spin {
327
+ 0% { -webkit-transform: rotate(0deg); }
328
+ 100% { -webkit-transform: rotate(360deg); }
329
+ }
330
+ @keyframes spin {
331
+ 0% { transform: rotate(0deg); }
332
+ 100% { transform: rotate(360deg); }
333
+ }
334
+ .wcj-bookings-price-wrapper{
335
+ margin-bottom:25px;
336
+ }
337
+ .wcj-bookings-price-wrapper.loading .wcj-loader{
338
+ display:block;
339
+ }
340
+ </style>
341
+ <?php
342
+ }
343
+
344
  /**
345
  * add_input_fields_to_frontend.
346
  *
347
+ * @version 4.3.0
348
  * @since 2.5.0
349
  * @todo more options: exclude days (1-31), exact availability dates, mindate, maxdate, firstday, dateformat etc.
350
  */
353
  return;
354
  }
355
  if ( $this->is_bookings_product( wc_get_product() ) ) {
356
+ $this->create_custom_style();
357
  $data_table = array();
358
  $date_from_value = ( isset( $_POST['wcj_product_bookings_date_from'] ) ) ? $_POST['wcj_product_bookings_date_from'] : '';
359
  $date_to_value = ( isset( $_POST['wcj_product_bookings_date_to'] ) ) ? $_POST['wcj_product_bookings_date_to'] : '';
374
  '<input firstday="0"' . $date_to_exclude_days . $date_to_exclude_months . ' dateformat="mm/dd/yy" mindate="0" type="datepicker" display="date" id="wcj_product_bookings_date_to" name="wcj_product_bookings_date_to" placeholder="" value="' . $date_to_value . '">',
375
  );
376
  echo wcj_get_table_html( $data_table, array( 'table_heading_type' => 'none', ) );
377
+ echo '<div class="wcj-bookings-price-wrapper"><div class="wcj-value"></div><div class="wcj-loader"></div></div>';
378
  echo '<div style="display:none !important;" name="wcj_bookings_message"><p style="color:red;"></p></div>';
379
  $this->are_bookings_input_fields_displayed = true;
380
  }
383
  /**
384
  * add_per_day_label.
385
  *
386
+ * @version 4.3.0
387
  * @since 2.5.0
388
  */
389
  function add_per_day_label( $price_html, $_product ) {
390
+ if (
391
+ 'no' === get_option( 'wcj_product_bookings_price_per_day_variable_products', 'yes' ) &&
392
+ ( $_product->is_type( 'variable' ) || $_product->is_type( 'variation' ) )
393
+ ) {
394
+ return $price_html;
395
+ }
396
  return ( $this->is_bookings_product( $_product ) ) ? $price_html . ' ' . get_option( 'wcj_product_bookings_label_per_day', __( '/ day', 'woocommerce-jetpack' ) ) : $price_html;
397
  }
398
 
399
  /**
400
  * change_price.
401
  *
402
+ * @version 4.3.0
403
  * @since 2.5.0
404
  */
405
  function change_price( $price, $_product ) {
406
+ if (
407
+ 'no' === get_option( 'wcj_product_bookings_price_per_day_variable_products', 'yes' ) &&
408
+ ( $_product->is_type( 'variable' ) || $_product->is_type( 'variation' ) )
409
+ ) {
410
+ return $price;
411
+ }
412
  return ( $this->is_bookings_product( $_product ) && isset( $_product->wcj_bookings_price ) ) ? $_product->wcj_bookings_price : $price;
413
  }
414
 
includes/class-wcj-product-images.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
- * @version 4.1.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_Images extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.9.0
20
  * @todo add watermarks to images (http://php.net/manual/en/image.examples-watermark.php); Filter: `wp_get_attachment_image_src`.
21
  */
22
  function __construct() {
@@ -59,7 +59,40 @@ class WCJ_Product_Images extends WCJ_Module {
59
  add_filter( 'woocommerce_placeholder_img_src', array( $this, 'placeholder_img_src' ), PHP_INT_MAX );
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
 
63
  }
64
 
65
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
+ * @version 4.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 4.3.0
20
  * @todo add watermarks to images (http://php.net/manual/en/image.examples-watermark.php); Filter: `wp_get_attachment_image_src`.
21
  */
22
  function __construct() {
59
  add_filter( 'woocommerce_placeholder_img_src', array( $this, 'placeholder_img_src' ), PHP_INT_MAX );
60
  }
61
 
62
+ // Get callbacks from database
63
+ add_filter( 'wcj_product_images_loop_product_thumbnail_filter', array( $this, 'get_callback_and_priority' ) );
64
+ add_filter( 'wcj_product_images_cb_loop_product_thumbnail_priority', array( $this, 'get_callback_and_priority' ) );
65
+ add_filter( 'wcj_product_images_single_product_images_filter', array( $this, 'get_callback_and_priority' ) );
66
+ add_filter( 'wcj_product_images_single_product_images_filter_priority', array( $this, 'get_callback_and_priority' ) );
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Gets callbacks and priorities from database.
72
+ *
73
+ * @version 4.3.0
74
+ * @since 4.3.0
75
+ *
76
+ * @param $value
77
+ *
78
+ * @return mixed
79
+ */
80
+ function get_callback_and_priority( $value ) {
81
+ switch ( current_filter() ) {
82
+ case 'wcj_product_images_loop_product_thumbnail_filter':
83
+ $value = get_option( 'wcj_product_images_cb_loop_product_thumbnail', 'woocommerce_template_loop_product_thumbnail' );
84
+ break;
85
+ case 'wcj_product_images_loop_product_thumbnail_filter_priority':
86
+ $value = get_option( 'wcj_product_images_cb_loop_product_thumbnail_priority', 10 );
87
+ break;
88
+ case 'wcj_product_images_single_product_images_filter':
89
+ $value = get_option( 'wcj_product_images_cb_show_product_images', 'woocommerce_show_product_images' );
90
+ break;
91
+ case 'wcj_product_images_single_product_images_filter_priority':
92
+ $value = get_option( 'wcj_product_images_cb_show_product_images_priority', 30 );
93
+ break;
94
  }
95
+ return $value;
96
  }
97
 
98
  /**
includes/class-wcj-shipping-by-order-amount.php CHANGED
@@ -39,6 +39,7 @@ class WCJ_Shipping_By_Order_Amount extends WCJ_Module {
39
  *
40
  * @version 3.5.0
41
  * @since 3.2.1
 
42
  * @todo apply_filters( 'booster_option' )
43
  * @todo (maybe) add option to include or exclude taxes when calculating cart total
44
  */
39
  *
40
  * @version 3.5.0
41
  * @since 3.2.1
42
+ * @todo [dev] currency conversion
43
  * @todo apply_filters( 'booster_option' )
44
  * @todo (maybe) add option to include or exclude taxes when calculating cart total
45
  */
includes/class-wcj-shipping-by-order-qty.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Shipping Methods by Min/Max Order Quantity
4
+ *
5
+ * @version 4.3.0
6
+ * @since 4.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Shipping_By_Order_Qty' ) ) :
13
+
14
+ class WCJ_Shipping_By_Order_Qty extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 4.3.0
20
+ * @since 4.3.0
21
+ * @todo (maybe) add customer messages on cart and checkout pages (if some shipping method is not available)
22
+ */
23
+ function __construct() {
24
+
25
+ $this->id = 'shipping_by_order_qty';
26
+ $this->short_desc = __( 'Shipping Methods by Min/Max Order Quantity', 'woocommerce-jetpack' );
27
+ $this->desc = __( 'Set minimum and/or maximum order quantity for shipping methods to show up.', 'woocommerce-jetpack' );
28
+ $this->link_slug = 'woocommerce-shipping-methods-by-min-max-order-quantity';
29
+ parent::__construct();
30
+
31
+ if ( $this->is_enabled() ) {
32
+ $this->use_shipping_instances = ( 'yes' === get_option( 'wcj_shipping_by_order_qty_use_shipping_instance', 'no' ) );
33
+ $min_option_name = 'wcj_shipping_by_order_qty_min';
34
+ $max_option_name = 'wcj_shipping_by_order_qty_max';
35
+ if ( $this->use_shipping_instances ) {
36
+ $min_option_name .= '_instance';
37
+ $max_option_name .= '_instance';
38
+ }
39
+ $this->min_qty = get_option( $min_option_name, array() );
40
+ $this->max_qty = get_option( $max_option_name, array() );
41
+ add_filter( 'woocommerce_package_rates', array( $this, 'available_shipping_methods' ), PHP_INT_MAX, 2 );
42
+ }
43
+ }
44
+
45
+ /**
46
+ * get_min_max_qty.
47
+ *
48
+ * @version 4.3.0
49
+ * @since 4.3.0
50
+ */
51
+ function get_min_max_qty( $rate, $min_or_max ) {
52
+ $key = ( $this->use_shipping_instances ? $rate->instance_id : $rate->method_id );
53
+ switch ( $min_or_max ) {
54
+ case 'min':
55
+ return ( isset( $this->min_qty[ $key ] ) ? $this->min_qty[ $key ] : 0 );
56
+ case 'max':
57
+ return ( isset( $this->max_qty[ $key ] ) ? $this->max_qty[ $key ] : 0 );
58
+ }
59
+ }
60
+
61
+ /**
62
+ * available_shipping_methods.
63
+ *
64
+ * @version 4.3.0
65
+ * @since 4.3.0
66
+ * @todo apply_filters( 'booster_option' )
67
+ */
68
+ function available_shipping_methods( $rates, $package ) {
69
+ if ( ! isset( WC()->cart ) || WC()->cart->is_empty() ) {
70
+ return $rates;
71
+ }
72
+ $total_qty = WC()->cart->get_cart_contents_count();
73
+ foreach ( $rates as $rate_key => $rate ) {
74
+ if ( 0 != ( $min = $this->get_min_max_qty( $rate, 'min' ) ) && $total_qty < $min ) {
75
+ unset( $rates[ $rate_key ] );
76
+ } elseif ( 0 != ( $max = $this->get_min_max_qty( $rate, 'max' ) ) && $total_qty > $max ) {
77
+ unset( $rates[ $rate_key ] );
78
+ }
79
+ }
80
+ return $rates;
81
+ }
82
+
83
+ }
84
+
85
+ endif;
86
+
87
+ return new WCJ_Shipping_By_Order_Qty();
includes/class-wcj-sorting.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Sorting
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -16,7 +16,7 @@ class WCJ_Sorting extends WCJ_Module {
16
  * WCJ_Sorting Constructor.
17
  *
18
  * @access public
19
- * @version 2.8.0
20
  */
21
  function __construct() {
22
 
@@ -54,11 +54,59 @@ class WCJ_Sorting extends WCJ_Module {
54
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'rearrange_sorting' ), PHP_INT_MAX );
55
  add_filter( 'woocommerce_default_catalog_orderby_options', array( $this, 'rearrange_sorting' ), PHP_INT_MAX );
56
  }
 
 
 
 
 
57
  }
58
 
59
  }
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  /**
63
  * remove_sorting_template.
64
  *
2
  /**
3
  * Booster for WooCommerce - Module - Sorting
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
16
  * WCJ_Sorting Constructor.
17
  *
18
  * @access public
19
+ * @version 4.3.0
20
  */
21
  function __construct() {
22
 
54
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'rearrange_sorting' ), PHP_INT_MAX );
55
  add_filter( 'woocommerce_default_catalog_orderby_options', array( $this, 'rearrange_sorting' ), PHP_INT_MAX );
56
  }
57
+
58
+ // Restore Default WooCommerce Sorting
59
+ if ( 'yes' === get_option( 'wcj_sorting_restore_default_sorting', 'no' ) ) {
60
+ $this->restore_default_sorting();
61
+ }
62
  }
63
 
64
  }
65
  }
66
 
67
+ /**
68
+ * Restores default WooCommerce sorting on Avada Theme.
69
+ *
70
+ * @version 4.3.0
71
+ * @since 4.3.0
72
+ */
73
+ function restore_default_sorting_on_avada() {
74
+ add_action( 'wp_head', function () {
75
+ ?>
76
+ <style>
77
+ form.woocommerce-ordering {
78
+ display: inline-block;
79
+ }
80
+ </style>
81
+ <?php
82
+ } );
83
+ add_action( 'woocommerce_before_shop_loop', function () {
84
+ echo '<div class="catalog-ordering fusion-clearfix">';
85
+ }, 9 );
86
+ add_action( 'woocommerce_before_shop_loop', function () {
87
+ echo '</div>';
88
+ }, 31 );
89
+ add_action( 'after_setup_theme', function () {
90
+ global $avada_woocommerce;
91
+ remove_action( 'pre_get_posts', array( $avada_woocommerce, 'product_ordering' ), 5 );
92
+ } );
93
+ }
94
+
95
+ /**
96
+ * Restores default WooCommerce sorting
97
+ *
98
+ * @version 4.3.0
99
+ * @since 4.3.0
100
+ */
101
+ function restore_default_sorting() {
102
+ $theme = get_option( 'wcj_sorting_restore_default_sorting_theme', 'avada' );
103
+ switch ( $theme ) {
104
+ case 'avada':
105
+ $this->restore_default_sorting_on_avada();
106
+ break;
107
+ }
108
+ }
109
+
110
  /**
111
  * remove_sorting_template.
112
  *
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 4.0.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo [dev] maybe should be `abstract` ?
@@ -143,17 +143,22 @@ class WCJ_Module {
143
  /**
144
  * maybe_fix_settings.
145
  *
146
- * @version 3.2.1
147
  * @since 3.2.1
148
  */
149
  function maybe_fix_settings( $settings ) {
150
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
151
  foreach ( $settings as &$setting ) {
152
  if ( isset( $setting['type'] ) && 'select' === $setting['type'] ) {
153
- if ( ! isset( $setting['class'] ) || '' === $setting['class'] ) {
154
- $setting['class'] = 'wc-enhanced-select';
155
- } else {
156
- $setting['class'] .= ' ' . 'wc-enhanced-select';
 
 
 
 
 
157
  }
158
  }
159
  if ( isset( $setting['type'] ) && 'text' === $setting['type'] && isset( $setting['class'] ) && 'widefat' === $setting['class'] ) {
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 4.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo [dev] maybe should be `abstract` ?
143
  /**
144
  * maybe_fix_settings.
145
  *
146
+ * @version 4.3.0
147
  * @since 3.2.1
148
  */
149
  function maybe_fix_settings( $settings ) {
150
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
151
  foreach ( $settings as &$setting ) {
152
  if ( isset( $setting['type'] ) && 'select' === $setting['type'] ) {
153
+ if (
154
+ ! isset( $setting['ignore_enhanced_select_class'] ) ||
155
+ ( isset( $setting['ignore_enhanced_select_class'] ) && false === $setting['ignore_enhanced_select_class'] )
156
+ ) {
157
+ if ( ! isset( $setting['class'] ) || '' === $setting['class'] ) {
158
+ $setting['class'] = 'wc-enhanced-select';
159
+ } else {
160
+ $setting['class'] .= ' ' . 'wc-enhanced-select';
161
+ }
162
  }
163
  }
164
  if ( isset( $setting['type'] ) && 'text' === $setting['type'] && isset( $setting['class'] ) && 'widefat' === $setting['class'] ) {
includes/classes/class-wcj-tcpdf.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - TCPDF
4
  *
5
- * @version 4.2.0
6
  * @author Algoritmika Ltd.
7
  * @todo (maybe) `Header()`
8
  */
@@ -16,7 +16,9 @@ define( 'K_TCPDF_EXTERNAL_CONFIG', true );
16
  require_once( wcj_plugin_path() . '/includes/lib/tcpdf_config.php' );
17
 
18
  // Include TCPDF library
19
- require_once( wcj_plugin_path() . '/includes/lib/tcpdf/tcpdf.php' );
 
 
20
 
21
  class WCJ_TCPDF extends TCPDF {
22
 
2
  /**
3
  * Booster for WooCommerce - TCPDF
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  * @todo (maybe) `Header()`
8
  */
16
  require_once( wcj_plugin_path() . '/includes/lib/tcpdf_config.php' );
17
 
18
  // Include TCPDF library
19
+ if ( ! class_exists( 'TCPDF' ) ) {
20
+ require_once( wcj_plugin_path() . '/includes/lib/tcpdf/tcpdf.php' );
21
+ }
22
 
23
  class WCJ_TCPDF extends TCPDF {
24
 
includes/core/wcj-modules.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
- * @version 4.1.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -86,6 +86,7 @@ $wcj_module_files = array(
86
  'class-wcj-shipping-by-cities.php',
87
  'class-wcj-shipping-by-time.php',
88
  'class-wcj-shipping-by-order-amount.php',
 
89
  'class-wcj-address-formats.php',
90
  'class-wcj-orders.php',
91
  'class-wcj-admin-orders-list.php',
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
+ * @version 4.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
86
  'class-wcj-shipping-by-cities.php',
87
  'class-wcj-shipping-by-time.php',
88
  'class-wcj-shipping-by-order-amount.php',
89
+ 'class-wcj-shipping-by-order-qty.php',
90
  'class-wcj-address-formats.php',
91
  'class-wcj-orders.php',
92
  'class-wcj-admin-orders-list.php',
includes/functions/wcj-functions-admin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
- * @version 3.6.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -117,26 +117,79 @@ if ( ! function_exists( 'wcj_admin_notices_version_updated' ) ) {
117
  }
118
  }
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  if ( ! function_exists( 'wcj_get_settings_as_multiselect_or_text' ) ) {
121
  /**
122
  * wcj_get_settings_as_multiselect_or_text.
123
  *
124
- * @version 3.1.0
125
  * @since 2.9.1
126
  */
127
  function wcj_get_settings_as_multiselect_or_text( $values, $multiselect_options, $is_multiselect ) {
128
  $prev_desc = ( isset( $values['desc'] ) ? $values['desc'] . ' ' : '' );
129
- return ( $is_multiselect ?
130
- array_merge( $values, array(
131
- 'type' => 'multiselect',
132
- 'class' => 'chosen_select',
133
- 'options' => $multiselect_options,
134
- ) ) :
135
- array_merge( $values, array(
136
- 'type' => 'text',
137
- 'desc' => $prev_desc . __( 'Enter comma separated list of IDs.', 'woocommerce-jetpack' ),
138
- ) )
139
- );
 
 
 
 
 
 
140
  }
141
  }
142
 
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
+ * @version 4.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
117
  }
118
  }
119
 
120
+ if ( ! function_exists( 'wcj_get_ajax_settings' ) ) {
121
+ /**
122
+ * wcj_get_ajax_settings
123
+ *
124
+ * @version 4.3.0
125
+ * @since 4.3.0
126
+ *
127
+ * @param $values
128
+ * @param string $search_type Possible values 'woocommerce_json_search_products', 'woocommerce_json_search_products_and_variations' , 'woocommerce_json_search_categories'
129
+ * @param bool $allow_multiple_values
130
+ *
131
+ * @return array
132
+ */
133
+ function wcj_get_ajax_settings( $values, $allow_multiple_values = false, $search_type = 'woocommerce_json_search_products' ) {
134
+ $options_raw = get_option( $values['id'], isset( $values['default'] ) ? $values['default'] : '' );
135
+ $options = array();
136
+ $class = '';
137
+ if ( $search_type == 'woocommerce_json_search_products' || $search_type == 'woocommerce_json_search_products_and_variations' ) {
138
+ $class = 'wc-product-search';
139
+ foreach ( $options_raw as $product_id ) {
140
+ $product = wc_get_product( $product_id );
141
+ $options[ $product_id ] = wp_kses_post( $product->get_formatted_name() );
142
+ }
143
+ } elseif ( $search_type == 'woocommerce_json_search_categories' ) {
144
+ $class = 'wc-category-search';
145
+ foreach ( $options_raw as $term_id ) {
146
+ $term = get_term_by( 'slug', $term_id, 'product_cat' );
147
+ $options[ $term_id ] = wp_kses_post( $term->name );
148
+ }
149
+ }
150
+ $placeholder = isset( $values['placeholder'] ) ? isset( $values['placeholder'] ) : __( "Search&hellip;", 'woocommerce-jetpack' );
151
+ return array_merge( $values, array(
152
+ 'custom_attributes' => array(
153
+ 'data-action' => $search_type,
154
+ 'data-allow_clear' => "true",
155
+ 'aria-hidden' => "true",
156
+ 'data-sortable' => "true",
157
+ 'data-placeholder' => $placeholder
158
+ ),
159
+ 'type' => $allow_multiple_values ? 'multiselect' : 'select',
160
+ 'options' => $options,
161
+ 'class' => $class,
162
+ 'ignore_enhanced_select_class' => true
163
+ ) );
164
+ }
165
+ }
166
+
167
  if ( ! function_exists( 'wcj_get_settings_as_multiselect_or_text' ) ) {
168
  /**
169
  * wcj_get_settings_as_multiselect_or_text.
170
  *
171
+ * @version 4.3.0
172
  * @since 2.9.1
173
  */
174
  function wcj_get_settings_as_multiselect_or_text( $values, $multiselect_options, $is_multiselect ) {
175
  $prev_desc = ( isset( $values['desc'] ) ? $values['desc'] . ' ' : '' );
176
+
177
+ if ( $is_multiselect ) {
178
+ if ( ! empty( $multiselect_options ) ) {
179
+ return array_merge( $values, array(
180
+ 'type' => 'multiselect',
181
+ 'class' => 'chosen_select',
182
+ 'options' => $multiselect_options,
183
+ ) );
184
+ } else {
185
+ return wcj_get_ajax_settings( $values, true );
186
+ }
187
+ } else {
188
+ return array_merge( $values, array(
189
+ 'type' => 'text',
190
+ 'desc' => $prev_desc . __( 'Enter comma separated list of IDs.', 'woocommerce-jetpack' ),
191
+ ) );
192
+ }
193
  }
194
  }
195
 
includes/functions/wcj-functions-booster-core.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Booster Core
4
  *
5
- * @version 3.8.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -47,35 +47,72 @@ if ( ! function_exists( 'wcj_plugin_path' ) ) {
47
  }
48
  }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
51
  /*
52
  * wcj_is_module_enabled.
53
  *
54
- * @version 3.3.0
55
  * @since 2.4.0
56
  * @return boolean
57
  */
58
  function wcj_is_module_enabled( $module_id ) {
59
- if ( 'modules_by_user_roles' != $module_id && wcj_is_module_enabled( 'modules_by_user_roles' ) ) {
60
- global $wcj_modules_by_user_roles_data;
61
- if ( ! isset( $wcj_modules_by_user_roles_data ) ) {
62
- if( ! function_exists( 'wp_get_current_user' ) ) {
63
- require_once( ABSPATH . 'wp-includes/pluggable.php' );
64
- }
65
- $current_user = wp_get_current_user();
66
- $wcj_modules_by_user_roles_data['role'] = ( isset( $current_user->roles ) && is_array( $current_user->roles ) && ! empty( $current_user->roles ) ?
67
- reset( $current_user->roles ) : 'guest' );
68
- $wcj_modules_by_user_roles_data['role'] = ( '' != $wcj_modules_by_user_roles_data['role'] ? $wcj_modules_by_user_roles_data['role'] : 'guest' );
69
- $wcj_modules_by_user_roles_data['modules_incl'] = get_option( 'wcj_modules_by_user_roles_incl_' . $wcj_modules_by_user_roles_data['role'], '' );
70
- $wcj_modules_by_user_roles_data['modules_excl'] = get_option( 'wcj_modules_by_user_roles_excl_' . $wcj_modules_by_user_roles_data['role'], '' );
71
- }
72
- if ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! in_array( $module_id, $wcj_modules_by_user_roles_data['modules_incl'] ) ) {
73
- return false;
74
- }
75
- if ( ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) && in_array( $module_id, $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
76
- return false;
77
- }
78
- }
79
- return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) );
80
  }
81
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Booster Core
4
  *
5
+ * @version 4.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
47
  }
48
  }
49
 
50
+ if ( ! function_exists( 'wcj_is_rest' ) ) {
51
+ /**
52
+ * Checks if the current request is a WP REST API request.
53
+ *
54
+ * @version 4.3.0
55
+ * @since 4.3.0
56
+ *
57
+ * @author matzeeable
58
+ * @see https://wordpress.stackexchange.com/a/317041/25264
59
+ * @return boolean
60
+ */
61
+ function wcj_is_rest() {
62
+ $prefix = rest_get_url_prefix();
63
+ if (
64
+ defined( 'REST_REQUEST' ) && REST_REQUEST || // After WP_REST_Request initialisation
65
+ isset( $_GET['rest_route'] ) && 0 === strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) // Support "plain" permalink settings
66
+ ) {
67
+ return true;
68
+ }
69
+ // URL Path begins with wp-json/ (your REST prefix)
70
+ // Also supports WP installations in subfolders
71
+ $rest_url = wp_parse_url( site_url( $prefix ) );
72
+ $current_url = wp_parse_url( add_query_arg( array() ) );
73
+ return ( 0 === strpos( $current_url['path'], $rest_url['path'], 0 ) );
74
+ }
75
+ }
76
+
77
+ if ( ! function_exists( 'wcj_check_modules_by_user_roles' ) ) {
78
+ /**
79
+ * wcj_check_modules_by_user_roles.
80
+ *
81
+ * @version 4.3.0
82
+ * @since 4.3.0
83
+ * @return boolean
84
+ * @todo [fix] re-implement `wcj_wp_get_current_user()` instead of requiring `pluggable.php`
85
+ */
86
+ function wcj_check_modules_by_user_roles( $module_id ) {
87
+ global $wcj_modules_by_user_roles_data;
88
+ if ( ! isset( $wcj_modules_by_user_roles_data ) ) {
89
+ if ( ! function_exists( 'wp_get_current_user' ) ) {
90
+ require_once( ABSPATH . 'wp-includes/pluggable.php' );
91
+ }
92
+ $current_user = wp_get_current_user();
93
+ $wcj_modules_by_user_roles_data['role'] = ( isset( $current_user->roles ) && is_array( $current_user->roles ) && ! empty( $current_user->roles ) ?
94
+ reset( $current_user->roles ) : 'guest' );
95
+ $wcj_modules_by_user_roles_data['role'] = ( '' != $wcj_modules_by_user_roles_data['role'] ? $wcj_modules_by_user_roles_data['role'] : 'guest' );
96
+ $wcj_modules_by_user_roles_data['modules_incl'] = get_option( 'wcj_modules_by_user_roles_incl_' . $wcj_modules_by_user_roles_data['role'], '' );
97
+ $wcj_modules_by_user_roles_data['modules_excl'] = get_option( 'wcj_modules_by_user_roles_excl_' . $wcj_modules_by_user_roles_data['role'], '' );
98
+ }
99
+ return (
100
+ ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! in_array( $module_id, $wcj_modules_by_user_roles_data['modules_incl'] ) ) ||
101
+ ( ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) && in_array( $module_id, $wcj_modules_by_user_roles_data['modules_excl'] ) )
102
+ ) ? false : true;
103
+ }
104
+ }
105
+
106
  if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
107
  /*
108
  * wcj_is_module_enabled.
109
  *
110
+ * @version 4.3.0
111
  * @since 2.4.0
112
  * @return boolean
113
  */
114
  function wcj_is_module_enabled( $module_id ) {
115
+ return ( 'modules_by_user_roles' != $module_id && wcj_is_module_enabled( 'modules_by_user_roles' ) && ! wcj_is_rest() && ! wcj_check_modules_by_user_roles( $module_id ) ?
116
+ false : ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
  }
includes/functions/wcj-functions-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
- * @version 3.9.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -125,7 +125,7 @@ if ( ! function_exists( 'wcj_get_exchange_rate' ) ) {
125
  /*
126
  * wcj_get_exchange_rate.
127
  *
128
- * @version 3.9.0
129
  * @since 2.6.0
130
  */
131
  function wcj_get_exchange_rate( $currency_from, $currency_to ) {
@@ -156,7 +156,7 @@ if ( ! function_exists( 'wcj_get_exchange_rate' ) ) {
156
  break;
157
  }
158
  $return = apply_filters( 'wcj_currency_exchange_rate', $return, $exchange_rates_server, $currency_from, $currency_to );
159
- return ( 'yes' === $calculate_by_invert ) ? round( ( 1 / $return ), 6 ) : $return;
160
  }
161
  }
162
 
@@ -378,13 +378,17 @@ if ( ! function_exists( 'wcj_ecb_get_exchange_rate' ) ) {
378
  /*
379
  * wcj_ecb_get_exchange_rate.
380
  *
381
- * @version 2.7.0
382
  * @since 2.6.0
383
  */
384
  function wcj_ecb_get_exchange_rate( $currency_from, $currency_to ) {
385
  $final_rate = false;
386
  if ( function_exists( 'simplexml_load_file' ) ) {
387
- $xml = simplexml_load_file( 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml' );
 
 
 
 
388
  if ( isset( $xml->Cube->Cube->Cube ) ) {
389
  if ( 'EUR' === $currency_from ) {
390
  $EUR_currency_from_rate = 1;
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
+ * @version 4.3.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
125
  /*
126
  * wcj_get_exchange_rate.
127
  *
128
+ * @version 4.3.0
129
  * @since 2.6.0
130
  */
131
  function wcj_get_exchange_rate( $currency_from, $currency_to ) {
156
  break;
157
  }
158
  $return = apply_filters( 'wcj_currency_exchange_rate', $return, $exchange_rates_server, $currency_from, $currency_to );
159
+ return ( 'yes' === $calculate_by_invert && ! empty( $return ) ) ? round( ( 1 / $return ), 6 ) : $return;
160
  }
161
  }
162
 
378
  /*
379
  * wcj_ecb_get_exchange_rate.
380
  *
381
+ * @version 4.3.0
382
  * @since 2.6.0
383
  */
384
  function wcj_ecb_get_exchange_rate( $currency_from, $currency_to ) {
385
  $final_rate = false;
386
  if ( function_exists( 'simplexml_load_file' ) ) {
387
+ if ( WP_DEBUG === true ) {
388
+ $xml = simplexml_load_file( 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml' );
389
+ } else {
390
+ $xml = @simplexml_load_file( 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml' );
391
+ }
392
  if ( isset( $xml->Cube->Cube->Cube ) ) {
393
  if ( 'EUR' === $currency_from ) {
394
  $EUR_currency_from_rate = 1;
includes/functions/wcj-functions-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - General
4
  *
5
- * @version 4.0.0
6
  * @author Algoritmika Ltd.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  */
@@ -308,7 +308,7 @@ if ( ! function_exists( 'wcj_session_maybe_start' ) ) {
308
  /**
309
  * wcj_session_maybe_start.
310
  *
311
- * @version 3.4.0
312
  * @since 3.1.0
313
  */
314
  function wcj_session_maybe_start() {
@@ -318,9 +318,10 @@ if ( ! function_exists( 'wcj_session_maybe_start' ) ) {
318
  WC()->session->set_customer_session_cookie( true );
319
  }
320
  break;
321
- default: // 'standard'
322
- if ( ! session_id() ) {
323
- session_start();
 
324
  }
325
  break;
326
  }
@@ -713,10 +714,10 @@ if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
713
  }
714
 
715
  if ( ! function_exists( 'wcj_get_select_options' ) ) {
716
- /*
717
  * wcj_get_select_options()
718
  *
719
- * @version 3.6.0
720
  * @since 2.3.0
721
  * @return array
722
  */
@@ -727,7 +728,7 @@ if ( ! function_exists( 'wcj_get_select_options' ) ) {
727
  $select_options_raw = array_map( 'trim', explode( PHP_EOL, $select_options_raw ) );
728
  $select_options = array();
729
  foreach ( $select_options_raw as $select_options_title ) {
730
- $select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
731
  $select_options[ $select_options_key ] = $select_options_title;
732
  }
733
  return $select_options;
@@ -735,7 +736,7 @@ if ( ! function_exists( 'wcj_get_select_options' ) ) {
735
  }
736
 
737
  if ( ! function_exists( 'wcj_is_frontend' ) ) {
738
- /*
739
  * wcj_is_frontend()
740
  *
741
  * @since 4.0.0
@@ -795,16 +796,19 @@ if ( ! function_exists( 'wcj_get_the_ip' ) ) {
795
  /**
796
  * wcj_get_the_ip.
797
  *
 
798
  * @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
799
  */
800
- function wcj_get_the_ip( ) {
801
- $ip = null;
802
- if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
803
- $ip = $_SERVER['HTTP_CLIENT_IP'];
804
- } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
805
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
806
- } else {
807
- $ip = $_SERVER['REMOTE_ADDR'];
 
 
808
  }
809
  return $ip;
810
  }
2
  /**
3
  * Booster for WooCommerce - Functions - General
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  */
308
  /**
309
  * wcj_session_maybe_start.
310
  *
311
+ * @version 4.3.0
312
  * @since 3.1.0
313
  */
314
  function wcj_session_maybe_start() {
318
  WC()->session->set_customer_session_cookie( true );
319
  }
320
  break;
321
+ default:
322
+ if ( session_status() == PHP_SESSION_NONE && ! headers_sent() ) {
323
+ $read_and_close = ( 'yes' === get_option( 'wcj_general_advanced_session_read_and_close', 'no' ) ) && PHP_VERSION_ID > 70000 ? array( 'read_and_close' => true ) : array();
324
+ session_start( $read_and_close );
325
  }
326
  break;
327
  }
714
  }
715
 
716
  if ( ! function_exists( 'wcj_get_select_options' ) ) {
717
+ /**
718
  * wcj_get_select_options()
719
  *
720
+ * @version 4.3.0
721
  * @since 2.3.0
722
  * @return array
723
  */
728
  $select_options_raw = array_map( 'trim', explode( PHP_EOL, $select_options_raw ) );
729
  $select_options = array();
730
  foreach ( $select_options_raw as $select_options_title ) {
731
+ $select_options_key = ( $do_sanitize ) ? urldecode( sanitize_title( $select_options_title ) ) : $select_options_title;
732
  $select_options[ $select_options_key ] = $select_options_title;
733
  }
734
  return $select_options;
736
  }
737
 
738
  if ( ! function_exists( 'wcj_is_frontend' ) ) {
739
+ /**
740
  * wcj_is_frontend()
741
  *
742
  * @since 4.0.0
796
  /**
797
  * wcj_get_the_ip.
798
  *
799
+ * @version 4.3.0
800
  * @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
801
  */
802
+ function wcj_get_the_ip() {
803
+ $ip = null;
804
+ $ip_detection_methods = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR' );
805
+ $ip_detection_methods = 'yes' === get_option( 'wcj_general_enabled', 'no' ) ? explode( PHP_EOL, get_option( 'wcj_general_advanced_ip_detection', implode( PHP_EOL, $ip_detection_methods ) ) ) : $ip_detection_methods;
806
+ foreach ( $ip_detection_methods as $method ) {
807
+ if ( empty( $_SERVER[ sanitize_text_field( $method ) ] ) ) {
808
+ continue;
809
+ }
810
+ $ip = sanitize_text_field( wp_unslash( $_SERVER[ sanitize_text_field( $method ) ] ) );
811
+ break;
812
  }
813
  return $ip;
814
  }
includes/js/wcj-bookings.js CHANGED
@@ -1,12 +1,20 @@
1
  /**
2
  * wcj-bookings.
3
  *
4
- * version 2.8.0
5
  * since 2.5.0
6
  */
7
 
8
  var _ajax_object = ajax_object;
9
 
 
 
 
 
 
 
 
 
10
  function change_price() {
11
  var date_from = jQuery("input[name='wcj_product_bookings_date_from']").val();
12
  var date_to = jQuery("input[name='wcj_product_bookings_date_to']").val();
@@ -32,10 +40,12 @@ function change_price() {
32
  'date_from': date_from,
33
  'date_to': date_to
34
  };
 
 
35
  jQuery.post(_ajax_object.ajax_url, data, function(response) {
36
  if ( '' != response ) {
37
- jQuery("p[class='price']").css("display", "none");
38
- jQuery("p[class='price']").after('<p class="price wcj-price-bookings">'+response+'</p>');
39
  }
40
  });
41
  jQuery("div[name='wcj_bookings_message']").css("display", "none");
@@ -43,12 +53,11 @@ function change_price() {
43
  } else {
44
  jQuery("div[name='wcj_bookings_message']").css("display", "block");
45
  jQuery("div[name='wcj_bookings_message'] p").text(_ajax_object.wrong_dates_message);
46
- jQuery("p[class='price wcj-price-bookings']").css("display", "none");
47
- jQuery("p[class='price']").css("display", "block");
48
  }
49
  } else {
 
50
  jQuery("p[class='price wcj-price-bookings']").css("display", "none");
51
- jQuery("p[class='price']").css("display", "block");
52
  }
53
  }
54
 
1
  /**
2
  * wcj-bookings.
3
  *
4
+ * version 4.3.0
5
  * since 2.5.0
6
  */
7
 
8
  var _ajax_object = ajax_object;
9
 
10
+ function wcj_hide_loader(){
11
+ jQuery('.wcj-bookings-price-wrapper').removeClass('loading');
12
+ }
13
+
14
+ function wcj_show_loader(){
15
+ jQuery('.wcj-bookings-price-wrapper').addClass('loading');
16
+ }
17
+
18
  function change_price() {
19
  var date_from = jQuery("input[name='wcj_product_bookings_date_from']").val();
20
  var date_to = jQuery("input[name='wcj_product_bookings_date_to']").val();
40
  'date_from': date_from,
41
  'date_to': date_to
42
  };
43
+ wcj_show_loader();
44
+ jQuery('.wcj-bookings-price-wrapper .wcj-value').html('');
45
  jQuery.post(_ajax_object.ajax_url, data, function(response) {
46
  if ( '' != response ) {
47
+ jQuery('.wcj-bookings-price-wrapper .wcj-value').html('<p class="price wcj-price-bookings">'+response+'</p>');
48
+ wcj_hide_loader();
49
  }
50
  });
51
  jQuery("div[name='wcj_bookings_message']").css("display", "none");
53
  } else {
54
  jQuery("div[name='wcj_bookings_message']").css("display", "block");
55
  jQuery("div[name='wcj_bookings_message'] p").text(_ajax_object.wrong_dates_message);
56
+ jQuery('.wcj-bookings-price-wrapper .wcj-value').html('');
 
57
  }
58
  } else {
59
+ jQuery('.wcj-bookings-price-wrapper .wcj-value').html('');
60
  jQuery("p[class='price wcj-price-bookings']").css("display", "none");
 
61
  }
62
  }
63
 
includes/js/wcj-variations-frontend.js CHANGED
@@ -1,37 +1,52 @@
1
  /**
2
  * Booster for WooCommerce - Variations Radio Buttons
3
  *
4
- * @version 2.9.0
5
  * @author Algoritmika Ltd.
6
  */
7
 
8
  /**
9
- * maybe_hide_unavailable.
 
10
  *
11
- * @version 2.9.0
12
- * @since 2.9.0
 
13
  */
14
- function maybe_hide_unavailable(variation) {
15
- if ( ! variation.is_purchasable || ! variation.is_in_stock || ! variation.variation_is_visible ) {
16
- jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-selection-needed' ).addClass( 'disabled wc-variation-is-unavailable' );
17
- jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
19
  }
20
 
21
  /**
22
  * process_variations.
23
  *
24
- * @version 2.9.0
25
  * @since 2.9.0
26
  */
27
  function process_variations(variation_id) {
28
  var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr('data-product_variations'));
29
- data_product_variations.forEach(function(variation){
30
- if(variation_id == variation.variation_id){
31
- maybe_hide_unavailable(variation);
32
- jQuery("form.variations_form.cart").wc_variations_image_update(variation);
33
- jQuery("div.woocommerce-variation-price").html(variation.price_html);
34
- jQuery("div.woocommerce-variation-availability").html(variation.availability_html);
35
  }
36
  });
37
  }
1
  /**
2
  * Booster for WooCommerce - Variations Radio Buttons
3
  *
4
+ * @version 4.3.0
5
  * @author Algoritmika Ltd.
6
  */
7
 
8
  /**
9
+ * Finds correspondent WooCommerce dropdown and triggers the 'change' event manually.
10
+ * That will make WooCommerce itself do the rest, like update image, prices, and so on.
11
  *
12
+ * @version 4.3.0
13
+ * @since 4.3.0
14
+ * @param variation_id
15
  */
16
+ function select_wc_dropdown_programmatically(variation_id) {
17
+ var variations = jQuery("form.variations_form.cart").data('product_variations');
18
+ var attributes = {};
19
+ variations.forEach(function (variation, index) {
20
+ if (variation.variation_id == variation_id) {
21
+ attributes = variation.attributes;
22
+ }
23
+ });
24
+ if (Object.keys(attributes).length !== 0) {
25
+ Object.keys(attributes).forEach(function (index) {
26
+ var select = jQuery("[name*='" + index + "']");
27
+ var value = attributes[index];
28
+ if (value != "") {
29
+ var opt = select.find('option[value="' + value + '"]');
30
+ } else {
31
+ var opt = select.find('option[value!=""]').eq(0);
32
+ }
33
+ opt.prop('selected', true);
34
+ select.trigger('change');
35
+ });
36
  }
37
  }
38
 
39
  /**
40
  * process_variations.
41
  *
42
+ * @version 4.3.0
43
  * @since 2.9.0
44
  */
45
  function process_variations(variation_id) {
46
  var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr('data-product_variations'));
47
+ data_product_variations.forEach(function (variation) {
48
+ if (variation_id == variation.variation_id) {
49
+ select_wc_dropdown_programmatically(variation_id);
 
 
 
50
  }
51
  });
52
  }
includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
- * @version 4.0.0
6
  * @since 2.2.1
7
  * @author Algoritmika Ltd.
8
  */
@@ -310,7 +310,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
310
  /**
311
  * Invoices Report Data function.
312
  *
313
- * @version 3.6.0
314
  * @since 2.5.7
315
  */
316
  function get_invoices_report_data( $year, $month, $invoice_type_id ) {
@@ -447,7 +447,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
447
  break;
448
  }
449
  }
450
- $data[] = $row;
451
  }
452
  }
453
  $offset += $block_size;
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
+ * @version 4.3.0
6
  * @since 2.2.1
7
  * @author Algoritmika Ltd.
8
  */
310
  /**
311
  * Invoices Report Data function.
312
  *
313
+ * @version 4.3.0
314
  * @since 2.5.7
315
  */
316
  function get_invoices_report_data( $year, $month, $invoice_type_id ) {
447
  break;
448
  }
449
  }
450
+ $data[] = apply_filters( 'wcj_pdf_invoicing_report_tool_row', $row );
451
  }
452
  }
453
  $offset += $block_size;
includes/settings/wcj-settings-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - General
4
  *
5
- * @version 4.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -60,6 +60,22 @@ $settings = array(
60
  'wc' => __( 'WC sessions', 'woocommerce-jetpack' ),
61
  ),
62
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  array(
64
  'title' => __( 'Datepicker/Weekpicker CSS Loading', 'woocommerce-jetpack' ),
65
  'desc_tip' => __( 'Disables datepicker/weekpicker CSS loading.', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - General
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
60
  'wc' => __( 'WC sessions', 'woocommerce-jetpack' ),
61
  ),
62
  ),
63
+ array(
64
+ 'title' => __( 'Read and Close', 'woocommerce-jetpack' ),
65
+ 'desc' => __( 'Enable <strong>Read and Close</strong> parameter on <strong>session_start()</strong>.', 'woocommerce-jetpack' ),
66
+ 'desc_tip' => __( 'Requires Session Type option set as Standard PHP Sessions and PHP version >= 7.0', 'woocommerce-jetpack' ),
67
+ 'id' => 'wcj_general_advanced_session_read_and_close',
68
+ 'default' => 'no',
69
+ 'type' => 'checkbox',
70
+ ),
71
+ array(
72
+ 'title' => __( 'IP Detection', 'woocommerce-jetpack' ),
73
+ 'desc' => __( 'IP Detection Methods used by some Booster modules when not using IP detection from WooCommerce. Change order for different results.', 'woocommerce-jetpack' ),
74
+ 'desc_tip' => __( 'Default values are:', 'woocommerce-jetpack' ).'<br />'.implode( PHP_EOL, array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR' ) ),
75
+ 'id' => 'wcj_general_advanced_ip_detection',
76
+ 'default' => implode( PHP_EOL, array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR' ) ),
77
+ 'type' => 'textarea',
78
+ ),
79
  array(
80
  'title' => __( 'Datepicker/Weekpicker CSS Loading', 'woocommerce-jetpack' ),
81
  'desc_tip' => __( 'Disables datepicker/weekpicker CSS loading.', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-left-to-free-shipping.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
- * @version 3.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -116,6 +116,8 @@ return array(
116
  'woocommerce_checkout_after_customer_details' => __( 'After customer details', 'woocommerce-jetpack' ),
117
  'woocommerce_checkout_before_order_review' => __( 'Before order review', 'woocommerce-jetpack' ),
118
  'woocommerce_checkout_order_review' => __( 'Order review', 'woocommerce-jetpack' ),
 
 
119
  'woocommerce_review_order_before_submit' => __( 'Order review: Payment: Before submit button', 'woocommerce-jetpack' ),
120
  'woocommerce_review_order_after_submit' => __( 'Order review: Payment: After submit button', 'woocommerce-jetpack' ),
121
  'woocommerce_checkout_after_order_review' => __( 'After order review', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
116
  'woocommerce_checkout_after_customer_details' => __( 'After customer details', 'woocommerce-jetpack' ),
117
  'woocommerce_checkout_before_order_review' => __( 'Before order review', 'woocommerce-jetpack' ),
118
  'woocommerce_checkout_order_review' => __( 'Order review', 'woocommerce-jetpack' ),
119
+ 'woocommerce_review_order_before_shipping' => __( 'Order review: Before shipping', 'woocommerce-jetpack' ),
120
+ 'woocommerce_review_order_after_shipping' => __( 'Order review: After shipping', 'woocommerce-jetpack' ),
121
  'woocommerce_review_order_before_submit' => __( 'Order review: Payment: Before submit button', 'woocommerce-jetpack' ),
122
  'woocommerce_review_order_after_submit' => __( 'Order review: Payment: After submit button', 'woocommerce-jetpack' ),
123
  'woocommerce_checkout_after_order_review' => __( 'After order review', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - My Account
4
  *
5
- * @version 3.8.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -124,6 +124,57 @@ $settings = array_merge( $settings, array(
124
  'id' => 'wcj_my_account_menu_options',
125
  ),
126
  ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  $settings = array_merge( $settings, array(
128
  array(
129
  'title' => __( 'Dashboard Customization', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - My Account
4
  *
5
+ * @version 4.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
124
  'id' => 'wcj_my_account_menu_options',
125
  ),
126
  ) );
127
+ $settings = array_merge( $settings, array(
128
+ array(
129
+ 'title' => __( 'Custom Pages', 'woocommerce-jetpack' ),
130
+ 'type' => 'title',
131
+ 'id' => 'wcj_my_account_custom_pages_main_options',
132
+ ),
133
+ array(
134
+ 'title' => __( 'Custom Pages', 'woocommerce-jetpack' ),
135
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
136
+ 'id' => 'wcj_my_account_custom_pages_enabled',
137
+ 'default' => 'no',
138
+ 'type' => 'checkbox',
139
+ ),
140
+ array(
141
+ 'title' => __( 'Total Pages', 'woocommerce-jetpack' ),
142
+ 'id' => 'wcj_my_account_custom_pages_total_number',
143
+ 'default' => 1,
144
+ 'type' => 'custom_number',
145
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
146
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
147
+ ),
148
+ array(
149
+ 'type' => 'sectionend',
150
+ 'id' => 'wcj_my_account_custom_pages_main_options',
151
+ ),
152
+ ) );
153
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_my_account_custom_pages_total_number', 1 ) ); $i++ ) {
154
+ $settings = array_merge( $settings, array(
155
+ array(
156
+ 'title' => __( 'Custom Page', 'woocommerce-jetpack' ) . ' #' . $i,
157
+ 'type' => 'title',
158
+ 'id' => "wcj_my_account_custom_pages_options[{$i}]",
159
+ ),
160
+ array(
161
+ 'title' => __( 'Title', 'woocommerce-jetpack' ),
162
+ 'type' => 'text',
163
+ 'id' => "wcj_my_account_custom_pages_title[{$i}]",
164
+ ),
165
+ array(
166
+ 'title' => __( 'Content', 'woocommerce-jetpack' ),
167
+ 'desc_tip' => __( 'You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
168
+ 'type' => 'textarea',
169
+ 'id' => "wcj_my_account_custom_pages_content[{$i}]",
170
+ 'css' => 'width:100%;height:100px;',
171
+ ),
172
+ array(
173
+ 'type' => 'sectionend',
174
+ 'id' => "wcj_my_account_custom_pages_options[{$i}]",
175
+ ),
176
+ ) );
177
+ }
178
  $settings = array_merge( $settings, array(
179
  array(
180
  'title' => __( 'Dashboard Customization', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-bookings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Bookings
4
  *
5
- * @version 3.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -87,6 +87,14 @@ return array(
87
  'type' => 'title',
88
  'id' => 'wcj_product_bookings_options',
89
  ),
 
 
 
 
 
 
 
 
90
  array(
91
  'title' => __( 'Hide Quantity Selector for Bookings Products', 'woocommerce-jetpack' ),
92
  'desc' => __( 'Hide', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Bookings
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
87
  'type' => 'title',
88
  'id' => 'wcj_product_bookings_options',
89
  ),
90
+ array(
91
+ 'title' => __( 'Price per Day on Variable Products', 'woocommerce-jetpack' ),
92
+ 'desc' => __( 'Calculate Variable Products final price per day, according to calendar', 'woocommerce-jetpack' ),
93
+ 'desc_tip' => __( 'Disable it will make the Variable Product final price be calculated regardless of the chosen days on the calendar', 'woocommerce-jetpack' ),
94
+ 'id' => 'wcj_product_bookings_price_per_day_variable_products',
95
+ 'default' => 'yes',
96
+ 'type' => 'checkbox',
97
+ ),
98
  array(
99
  'title' => __( 'Hide Quantity Selector for Bookings Products', 'woocommerce-jetpack' ),
100
  'desc' => __( 'Hide', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-custom-info.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Info
4
  *
5
- * @version 3.7.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -12,7 +12,6 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
  $is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
13
  $is_multiselect_cats = ( 'yes' === get_option( 'wcj_list_for_products_cats', 'yes' ) );
14
  $is_multiselect_tags = ( 'yes' === get_option( 'wcj_list_for_products_tags', 'yes' ) );
15
- $products = ( $is_multiselect_products ? wcj_get_products() : false );
16
  $product_cats = ( $is_multiselect_cats ? wcj_get_terms( 'product_cat' ) : false );
17
  $product_tags = ( $is_multiselect_tags ? wcj_get_terms( 'product_tag' ) : false );
18
  $settings = array();
@@ -164,7 +163,7 @@ foreach ( $single_or_archive_array as $single_or_archive ) {
164
  'desc_tip' => __( 'Leave blank to disable the option.', 'woocommerce-jetpack' ),
165
  'id' => 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i,
166
  'default' => '' ),
167
- $products,
168
  $is_multiselect_products
169
  ),
170
  wcj_get_settings_as_multiselect_or_text( array(
@@ -172,7 +171,7 @@ foreach ( $single_or_archive_array as $single_or_archive ) {
172
  'desc_tip' => __( 'Leave blank to disable the option.', 'woocommerce-jetpack' ),
173
  'id' => 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i,
174
  'default' => '' ),
175
- $products,
176
  $is_multiselect_products
177
  ),
178
  array(
2
  /**
3
  * Booster for WooCommerce - Settings - Product Info
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
12
  $is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
13
  $is_multiselect_cats = ( 'yes' === get_option( 'wcj_list_for_products_cats', 'yes' ) );
14
  $is_multiselect_tags = ( 'yes' === get_option( 'wcj_list_for_products_tags', 'yes' ) );
 
15
  $product_cats = ( $is_multiselect_cats ? wcj_get_terms( 'product_cat' ) : false );
16
  $product_tags = ( $is_multiselect_tags ? wcj_get_terms( 'product_tag' ) : false );
17
  $settings = array();
163
  'desc_tip' => __( 'Leave blank to disable the option.', 'woocommerce-jetpack' ),
164
  'id' => 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i,
165
  'default' => '' ),
166
+ '',
167
  $is_multiselect_products
168
  ),
169
  wcj_get_settings_as_multiselect_or_text( array(
171
  'desc_tip' => __( 'Leave blank to disable the option.', 'woocommerce-jetpack' ),
172
  'id' => 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i,
173
  'default' => '' ),
174
+ '',
175
  $is_multiselect_products
176
  ),
177
  array(
includes/settings/wcj-settings-product-images.php CHANGED
@@ -97,4 +97,40 @@ return array(
97
  'type' => 'sectionend',
98
  'id' => 'wcj_product_images_placeholder_options',
99
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  );
97
  'type' => 'sectionend',
98
  'id' => 'wcj_product_images_placeholder_options',
99
  ),
100
+ array(
101
+ 'title' => __( 'Callbacks', 'woocommerce-jetpack' ),
102
+ 'desc' => __( 'Callback functions used by WooCommerce and the current theme in order to customize images and thumbnails', 'woocommerce-jetpack' ),
103
+ 'type' => 'title',
104
+ 'id' => 'wcj_product_images_cb',
105
+ ),
106
+ array(
107
+ 'title' => __( 'Loop Thumbnail', 'woocommerce-jetpack' ),
108
+ 'desc' => __( 'Used on hook <strong>woocommerce_before_shop_loop_item_title</strong>', 'woocommerce-jetpack' ),
109
+ 'id' => 'wcj_product_images_cb_loop_product_thumbnail',
110
+ 'default' => 'woocommerce_template_loop_product_thumbnail',
111
+ 'type' => 'text',
112
+ ),
113
+ array(
114
+ 'title' => __( 'Loop Thumbnail Priority', 'woocommerce-jetpack' ),
115
+ 'id' => 'wcj_product_images_cb_loop_product_thumbnail_priority',
116
+ 'default' => 10,
117
+ 'type' => 'text',
118
+ ),
119
+ array(
120
+ 'title' => __( 'Show Images', 'woocommerce-jetpack' ),
121
+ 'desc' => __( 'Used on hook <strong>woocommerce_before_single_product_summary</strong>', 'woocommerce-jetpack' ),
122
+ 'id' => 'wcj_product_images_cb_show_product_images',
123
+ 'default' => 'woocommerce_show_product_images',
124
+ 'type' => 'text',
125
+ ),
126
+ array(
127
+ 'title' => __( 'Show Images Priority', 'woocommerce-jetpack' ),
128
+ 'id' => 'wcj_product_images_cb_show_product_images_priority',
129
+ 'default' => 20,
130
+ 'type' => 'text',
131
+ ),
132
+ array(
133
+ 'type' => 'sectionend',
134
+ 'id' => 'wcj_product_images_cb',
135
+ ),
136
  );
includes/settings/wcj-settings-product-input-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Input Fields
4
  *
5
- * @version 4.2.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo [dev] maybe set "Strip slashes" option to `yes` by default (or even remove the option completely and always strip slashes)
@@ -75,7 +75,6 @@ $settings = array(
75
  ),
76
  );
77
  $is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
78
- $products = ( $is_multiselect_products ? wcj_get_products() : false );
79
  $product_cats = wcj_get_terms( 'product_cat' );
80
  $product_tags = wcj_get_terms( 'product_tag' );
81
  $options = $this->get_global_product_fields_options();
@@ -160,7 +159,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product
160
  'default' => '',
161
  'css' => 'width: 450px;',
162
  ),
163
- $products,
164
  $is_multiselect_products
165
  ),
166
  wcj_get_settings_as_multiselect_or_text(
@@ -172,7 +171,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product
172
  'default' => '',
173
  'css' => 'width: 450px;',
174
  ),
175
- $products,
176
  $is_multiselect_products
177
  ),
178
  array(
2
  /**
3
  * Booster for WooCommerce - Settings - Product Input Fields
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo [dev] maybe set "Strip slashes" option to `yes` by default (or even remove the option completely and always strip slashes)
75
  ),
76
  );
77
  $is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
 
78
  $product_cats = wcj_get_terms( 'product_cat' );
79
  $product_tags = wcj_get_terms( 'product_tag' );
80
  $options = $this->get_global_product_fields_options();
159
  'default' => '',
160
  'css' => 'width: 450px;',
161
  ),
162
+ '',
163
  $is_multiselect_products
164
  ),
165
  wcj_get_settings_as_multiselect_or_text(
171
  'default' => '',
172
  'css' => 'width: 450px;',
173
  ),
174
+ '',
175
  $is_multiselect_products
176
  ),
177
  array(
includes/settings/wcj-settings-shipping-by-order-qty.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce Settings - Shipping Methods by Min/Max Order Quantity
4
+ *
5
+ * @version 4.3.0
6
+ * @since 4.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $use_shipping_instances = ( 'yes' === get_option( 'wcj_shipping_by_order_qty_use_shipping_instance', 'no' ) );
13
+ $settings = array(
14
+ array(
15
+ 'title' => __( 'General Options', 'woocommerce-jetpack' ),
16
+ 'type' => 'title',
17
+ 'id' => 'wcj_shipping_by_order_qty_general_options',
18
+ ),
19
+ array(
20
+ 'title' => __( 'Use Shipping Instances', 'woocommerce-jetpack' ),
21
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
22
+ 'desc_tip' => __( 'Enable this if you want to use shipping methods instances instead of shipping methods.', 'woocommerce-jetpack' ) . ' ' .
23
+ __( 'Save changes after enabling this option.', 'woocommerce-jetpack' ),
24
+ 'type' => 'checkbox',
25
+ 'id' => 'wcj_shipping_by_order_qty_use_shipping_instance',
26
+ 'default' => 'no',
27
+ ),
28
+ array(
29
+ 'type' => 'sectionend',
30
+ 'id' => 'wcj_shipping_by_order_qty_general_options',
31
+ ),
32
+ array(
33
+ 'title' => __( 'Shipping Methods by Min/Max Order Quantity', 'woocommerce-jetpack' ),
34
+ 'type' => 'title',
35
+ 'desc' => __( 'Set to zero to disable.', 'woocommerce-jetpack' ),
36
+ 'id' => 'wcj_shipping_by_order_qty_options',
37
+ ),
38
+ );
39
+ $shipping_methods = ( $use_shipping_instances ? wcj_get_shipping_methods_instances( true ) : WC()->shipping()->load_shipping_methods() );
40
+ foreach ( $shipping_methods as $method ) {
41
+ $method_id = ( $use_shipping_instances ? $method['shipping_method_id'] : $method->id );
42
+ if ( ! in_array( $method_id, array( 'flat_rate', 'free_shipping' ) ) ) {
43
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
44
+ if ( '' == $custom_attributes ) {
45
+ $custom_attributes = array();
46
+ }
47
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
48
+ } else {
49
+ $custom_attributes = array();
50
+ $desc_tip = '';
51
+ }
52
+ $custom_attributes = array_merge( $custom_attributes, array( 'min' => 0 ) );
53
+ $settings = array_merge( $settings, array(
54
+ array(
55
+ 'title' => ( $use_shipping_instances ? $method['zone_name'] . ': ' . $method['shipping_method_title']: $method->get_method_title() ),
56
+ 'desc_tip' => $desc_tip,
57
+ 'desc' => '<br>' . __( 'Minimum order quantity', 'woocommerce-jetpack' ),
58
+ 'id' => 'wcj_shipping_by_order_qty_min' . ( $use_shipping_instances ? '_instance[' . $method['shipping_method_instance_id'] . ']' : '[' . $method->id . ']' ),
59
+ 'default' => 0,
60
+ 'type' => 'number',
61
+ 'custom_attributes' => $custom_attributes,
62
+ ),
63
+ array(
64
+ 'desc_tip' => $desc_tip,
65
+ 'desc' => '<br>' . __( 'Maximum order quantity', 'woocommerce-jetpack' ),
66
+ 'id' => 'wcj_shipping_by_order_qty_max' . ( $use_shipping_instances ? '_instance[' . $method['shipping_method_instance_id'] . ']' : '[' . $method->id . ']' ),
67
+ 'default' => 0,
68
+ 'type' => 'number',
69
+ 'custom_attributes' => $custom_attributes,
70
+ ),
71
+ ) );
72
+ }
73
+ $settings = array_merge( $settings, array(
74
+ array(
75
+ 'type' => 'sectionend',
76
+ 'id' => 'wcj_shipping_by_order_qty_options',
77
+ ),
78
+ ) );
79
+ return $settings;
includes/settings/wcj-settings-sorting.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Sorting
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -170,5 +170,32 @@ $settings = array_merge( $settings, array(
170
  'type' => 'sectionend',
171
  'id' => 'wcj_sorting_remove_all_options',
172
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  ) );
174
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Sorting
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
170
  'type' => 'sectionend',
171
  'id' => 'wcj_sorting_remove_all_options',
172
  ),
173
+ array(
174
+ 'title' => __( 'Restore Default WooCommerce Sorting', 'woocommerce-jetpack' ),
175
+ 'desc' => __( "Replaces theme's sorting by default WooCommerce sorting", 'woocommerce-jetpack' ),
176
+ 'type' => 'title',
177
+ 'default' => 'no',
178
+ 'id' => 'wcj_sorting_restore_default_sorting_opt',
179
+ ),
180
+ array(
181
+ 'title' => __( 'Restore', 'woocommerce-jetpack' ),
182
+ 'desc' => __( "Restore", 'woocommerce-jetpack' ),
183
+ 'type' => 'checkbox',
184
+ 'id' => 'wcj_sorting_restore_default_sorting',
185
+ ),
186
+ array(
187
+ 'title' => __( 'Theme', 'woocommerce-jetpack' ),
188
+ 'desc_tip' => __( "Theme that will have its sorting replaced.", 'woocommerce-jetpack' ),
189
+ 'type' => 'select',
190
+ 'options' => array(
191
+ 'avada' => __( 'Avada', 'woocommerce-jetpack' ),
192
+ ),
193
+ 'default'=>'avada',
194
+ 'id' => 'wcj_sorting_restore_default_sorting_theme',
195
+ ),
196
+ array(
197
+ 'type' => 'sectionend',
198
+ 'id' => 'wcj_sorting_restore_default_sorting_opt',
199
+ ),
200
  ) );
201
  return $settings;
includes/settings/wcj-settings-wholesale-price.php CHANGED
@@ -2,14 +2,13 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Wholesale Price
4
  *
5
- * @version 4.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
- $products = wcj_get_products();
13
  $product_cats = wcj_get_terms( 'product_cat' );
14
  $settings = array(
15
  array(
@@ -79,22 +78,18 @@ $settings = array(
79
  'fixed' => __( 'Fixed', 'woocommerce-jetpack' ),
80
  ),
81
  ),
82
- array(
83
  'title' => __( 'Products to Include', 'woocommerce-jetpack' ),
84
  'desc' => __( 'Leave blank to include all products.', 'woocommerce-jetpack' ),
85
  'id' => 'wcj_wholesale_price_products_to_include',
86
- 'default' => '',
87
- 'type' => 'multiselect',
88
- 'class' => 'chosen_select',
89
- 'options' => $products,
90
  ),
91
- array(
92
  'title' => __( 'Products to Exclude', 'woocommerce-jetpack' ),
93
  'id' => 'wcj_wholesale_price_products_to_exclude',
94
- 'default' => '',
95
- 'type' => 'multiselect',
96
- 'class' => 'chosen_select',
97
- 'options' => $products,
98
  ),
99
  array(
100
  'title' => __( 'Product Categories to Include', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Wholesale Price
4
  *
5
+ * @version 4.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
 
12
  $product_cats = wcj_get_terms( 'product_cat' );
13
  $settings = array(
14
  array(
78
  'fixed' => __( 'Fixed', 'woocommerce-jetpack' ),
79
  ),
80
  ),
81
+ wcj_get_ajax_settings( array(
82
  'title' => __( 'Products to Include', 'woocommerce-jetpack' ),
83
  'desc' => __( 'Leave blank to include all products.', 'woocommerce-jetpack' ),
84
  'id' => 'wcj_wholesale_price_products_to_include',
85
+ 'default' => '' ),
86
+ true
 
 
87
  ),
88
+ wcj_get_ajax_settings( array(
89
  'title' => __( 'Products to Exclude', 'woocommerce-jetpack' ),
90
  'id' => 'wcj_wholesale_price_products_to_exclude',
91
+ 'default' => '' ),
92
+ true
 
 
93
  ),
94
  array(
95
  'title' => __( 'Product Categories to Include', 'woocommerce-jetpack' ),
includes/shortcodes/class-wcj-shortcodes-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
- * @version 4.1.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -886,12 +886,18 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
886
  /**
887
  * wcj_country_select_drop_down_list.
888
  *
889
- * @version 4.0.0
890
  */
891
  function wcj_country_select_drop_down_list( $atts, $content ) {
892
  $form_method = $atts['form_method'];
893
  $select_class = $atts['class'];
894
  $select_style = $atts['style'];
 
 
 
 
 
 
895
  $countries = wcj_get_countries();
896
  $shortcode_countries = ( empty( $atts['countries'] ) ? array() : array_map( 'trim', explode( ',', $atts['countries'] ) ) );
897
  $selected_country = ( null !== ( $session_value = wcj_session_get( 'wcj-country' ) ) ? $session_value : '' );
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
+ * @version 4.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
886
  /**
887
  * wcj_country_select_drop_down_list.
888
  *
889
+ * @version 4.3.0
890
  */
891
  function wcj_country_select_drop_down_list( $atts, $content ) {
892
  $form_method = $atts['form_method'];
893
  $select_class = $atts['class'];
894
  $select_style = $atts['style'];
895
+ if ( ! isset( $atts['force_display'] ) || ! filter_var( $atts['force_display'], FILTER_VALIDATE_BOOLEAN ) ) {
896
+ if ( ! wcj_is_module_enabled( 'price_by_country' ) ) {
897
+ return;
898
+ }
899
+ }
900
+
901
  $countries = wcj_get_countries();
902
  $shortcode_countries = ( empty( $atts['countries'] ) ? array() : array_map( 'trim', explode( ',', $atts['countries'] ) ) );
903
  $selected_country = ( null !== ( $session_value = wcj_session_get( 'wcj-country' ) ) ? $session_value : '' );
includes/templates/wcj-add-to-cart-variable.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
- /**
3
- * Variable product add to cart - radio inputs
4
- *
5
- * Original WC template version: 3.4.1
6
- *
7
- * @version 3.7.0
8
- * @since 2.4.8
9
- * @author Algoritmika Ltd.
10
- */
11
-
12
- defined( 'ABSPATH' ) || exit;
13
-
14
- global $product;
15
-
16
- $attribute_keys = array_keys( $attributes );
17
-
18
- do_action( 'woocommerce_before_add_to_cart_form' ); ?>
19
-
20
- <form class="variations_form cart" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data' data-product_id="<?php echo absint( wcj_get_product_id( $product ) ); ?>" data-product_variations="<?php echo htmlspecialchars( wp_json_encode( $available_variations ) ); // WPCS: XSS ok. ?>">
21
- <?php do_action( 'woocommerce_before_variations_form' ); ?>
22
-
23
- <?php if ( empty( $available_variations ) && false !== $available_variations ) : ?>
24
- <p class="stock out-of-stock"><?php esc_html_e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
25
- <?php else : ?>
26
- <table class="" cellspacing="0">
27
- <tbody>
28
- <?php foreach ( $available_variations as $variation ) : ?>
29
- <tr>
30
- <?php wcj_variation_radio_button( $product, $variation ); ?>
31
- </tr>
32
- <?php endforeach; ?>
33
- </tbody>
34
- </table>
35
- <?php
36
- foreach ( $product->get_attributes() as $attribute_name => $options ) {
37
- echo '<input type="hidden" name="attribute_' . $attribute_name . '" value="">';
38
- }
39
- ?>
40
-
41
- <div class="single_variation_wrap">
42
- <?php
43
- /**
44
- * Hook: woocommerce_before_single_variation.
45
- */
46
- do_action( 'woocommerce_before_single_variation' );
47
-
48
- /**
49
- * Hook: woocommerce_single_variation. Used to output the cart button and placeholder for variation data.
50
- *
51
- * @since 2.4.0
52
- * @hooked woocommerce_single_variation - 10 Empty div for variation data.
53
- * @hooked woocommerce_single_variation_add_to_cart_button - 20 Qty and cart button.
54
- */
55
- do_action( 'woocommerce_single_variation' );
56
-
57
- /**
58
- * Hook: woocommerce_after_single_variation.
59
- */
60
- do_action( 'woocommerce_after_single_variation' );
61
- ?>
62
- </div>
63
- <?php endif; ?>
64
-
65
- <?php do_action( 'woocommerce_after_variations_form' ); ?>
66
- </form>
67
-
68
- <?php
69
- do_action( 'woocommerce_after_add_to_cart_form' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/templates/wcj-radio-for-variations.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Variable product add to cart - radio inputs
4
+ *
5
+ * @version 4.3.0
6
+ * @since 2.4.8
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ global $product;
11
+ $attribute_keys = array_keys( $attributes );
12
+
13
+ ?>
14
+
15
+ <?php if ( empty( $available_variations ) && false !== $available_variations ) : ?>
16
+ <p class="stock out-of-stock"><?php esc_html_e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
17
+ <?php else : ?>
18
+ <table class="" cellspacing="0">
19
+ <tbody>
20
+ <tr>
21
+ <th colspan="2">
22
+ <?php $attribute_labels = array_map( 'wc_attribute_label', array_keys( $attributes ) ); ?>
23
+ <?php echo implode( ' X ', $attribute_labels ); ?>
24
+ <?php echo wp_kses_post( apply_filters( 'woocommerce_reset_variations_link', '<a style="float:right" class="reset_variations" href="#">' . esc_html__( 'Clear', 'woocommerce' ) . '</a>' ) ); ?>
25
+ </th>
26
+ </tr>
27
+ <?php foreach ( $available_variations as $variation ) : ?>
28
+ <tr>
29
+ <?php wcj_variation_radio_button( $product, $variation ); ?>
30
+ </tr>
31
+ <?php endforeach; ?>
32
+ </tbody>
33
+ </table>
34
+ <?php
35
+ foreach ( $product->get_attributes() as $attribute_name => $options ) {
36
+ echo '<input type="hidden" name="attribute_' . $attribute_name . '" value="">';
37
+ }
38
+ ?>
39
+ <?php endif; ?>
langs/woocommerce-jetpack.pot CHANGED
@@ -77,11 +77,11 @@ msgstr ""
77
 
78
  #: includes/class-wcj-admin-bar.php:172
79
  #: includes/admin/class-wc-settings-jetpack.php:416
80
- #: includes/classes/class-wcj-module.php:689
81
  msgid "Documentation"
82
  msgstr ""
83
 
84
- #: includes/class-wcj-admin-bar.php:214 includes/class-wcj-my-account.php:31
85
  #: includes/admin/class-wc-settings-jetpack.php:146
86
  #: includes/admin/wcj-modules-cats.php:14
87
  msgid "Dashboard"
@@ -96,7 +96,7 @@ msgstr ""
96
 
97
  #: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
98
  #: includes/class-wcj-admin-bar.php:632
99
- #: includes/classes/class-wcj-module.php:522
100
  #: includes/settings/wcj-settings-wpml.php:74
101
  msgid "Tools"
102
  msgstr ""
@@ -119,8 +119,8 @@ msgstr ""
119
  #: includes/class-wcj-track-users.php:251
120
  #: includes/admin/class-wc-settings-jetpack.php:24
121
  #: includes/admin/class-wc-settings-jetpack.php:221
122
- #: includes/classes/class-wcj-module.php:349
123
- #: includes/classes/class-wcj-module.php:549
124
  #: includes/settings/wcj-settings-price-by-country.php:169
125
  msgid "Booster"
126
  msgstr ""
@@ -182,8 +182,8 @@ msgid "WooCommerce settings"
182
  msgstr ""
183
 
184
  #: includes/class-wcj-admin-bar.php:391 includes/class-wcj-admin-bar.php:395
185
- #: includes/class-wcj-admin-bar.php:413 includes/class-wcj-my-account.php:32
186
- #: includes/class-wcj-my-account.php:40 includes/class-wcj-orders.php:26
187
  #: includes/reports/wcj-class-reports-sales-gateways.php:153
188
  #: includes/settings/wcj-settings-reports.php:21
189
  #: includes/settings/wcj-settings-reports.php:59
@@ -1724,54 +1724,54 @@ msgstr ""
1724
  msgid "<strong>PHP code:</strong> by using %s function, e.g.: %s"
1725
  msgstr ""
1726
 
1727
- #: includes/class-wcj-my-account.php:25
1728
  msgid "My Account"
1729
  msgstr ""
1730
 
1731
- #: includes/class-wcj-my-account.php:26
1732
  msgid "WooCommerce \"My Account\" page customization."
1733
  msgstr ""
1734
 
1735
- #: includes/class-wcj-my-account.php:33 includes/class-wcj-my-account.php:42
1736
  msgid "Downloads"
1737
  msgstr ""
1738
 
1739
- #: includes/class-wcj-my-account.php:34 includes/class-wcj-my-account.php:44
1740
  msgid "Addresses"
1741
  msgstr ""
1742
 
1743
- #: includes/class-wcj-my-account.php:35 includes/class-wcj-my-account.php:45
1744
  #: includes/settings/wcj-settings-orders.php:112
1745
  msgid "Payment methods"
1746
  msgstr ""
1747
 
1748
- #: includes/class-wcj-my-account.php:36 includes/class-wcj-my-account.php:43
1749
  msgid "Account details"
1750
  msgstr ""
1751
 
1752
- #: includes/class-wcj-my-account.php:37 includes/class-wcj-my-account.php:47
1753
  msgid "Logout"
1754
  msgstr ""
1755
 
1756
- #: includes/class-wcj-my-account.php:41
1757
- #: includes/settings/wcj-settings-my-account.php:251
1758
  msgid "View order"
1759
  msgstr ""
1760
 
1761
- #: includes/class-wcj-my-account.php:43
1762
  msgid "Edit account"
1763
  msgstr ""
1764
 
1765
- #: includes/class-wcj-my-account.php:46
1766
  msgid "Lost password"
1767
  msgstr ""
1768
 
1769
- #: includes/class-wcj-my-account.php:124
1770
  #, php-format
1771
  msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
1772
  msgstr ""
1773
 
1774
- #: includes/class-wcj-my-account.php:134
1775
  #, php-format
1776
  msgid ""
1777
  "From your account dashboard you can view your <a href=\"%1$s\">recent "
@@ -1779,16 +1779,16 @@ msgid ""
1779
  "and <a href=\"%3$s\">edit your password and account details</a>."
1780
  msgstr ""
1781
 
1782
- #: includes/class-wcj-my-account.php:240
1783
  msgid "User role"
1784
  msgstr ""
1785
 
1786
- #: includes/class-wcj-my-account.php:320
1787
  #: includes/class-wcj-product-bulk-meta-editor.php:279
1788
  #: includes/class-wcj-product-by-user.php:206
1789
  #: includes/class-wcj-purchase-data.php:94
1790
  #: includes/class-wcj-track-users.php:334
1791
- #: includes/classes/class-wcj-module.php:658
1792
  #: includes/functions/wcj-functions-general.php:189
1793
  #: includes/functions/wcj-functions-html.php:117
1794
  #: includes/reports/wcj-class-reports-monthly-sales.php:351
@@ -1918,36 +1918,36 @@ msgstr ""
1918
  msgid "Make an offer"
1919
  msgstr ""
1920
 
1921
- #: includes/class-wcj-offer-price.php:457
1922
  #: includes/settings/wcj-settings-offer-price.php:332
1923
  #, php-format
1924
  msgid "Product: %s"
1925
  msgstr ""
1926
 
1927
- #: includes/class-wcj-offer-price.php:458
1928
  #: includes/settings/wcj-settings-offer-price.php:333
1929
  #, php-format
1930
  msgid "Offered price: %s"
1931
  msgstr ""
1932
 
1933
- #: includes/class-wcj-offer-price.php:459
1934
  #: includes/settings/wcj-settings-offer-price.php:334
1935
  #, php-format
1936
  msgid "From: %s %s"
1937
  msgstr ""
1938
 
1939
- #: includes/class-wcj-offer-price.php:460
1940
  #: includes/settings/wcj-settings-offer-price.php:335
1941
  #, php-format
1942
  msgid "Message: %s"
1943
  msgstr ""
1944
 
1945
- #: includes/class-wcj-offer-price.php:471
1946
  #: includes/settings/wcj-settings-offer-price.php:323
1947
  msgid "Price Offer"
1948
  msgstr ""
1949
 
1950
- #: includes/class-wcj-offer-price.php:481
1951
  #: includes/settings/wcj-settings-offer-price.php:254
1952
  msgid "Your price offer has been sent."
1953
  msgstr ""
@@ -2331,26 +2331,26 @@ msgstr ""
2331
  msgid "Invoices Monthly Reports."
2332
  msgstr ""
2333
 
2334
- #: includes/class-wcj-pdf-invoicing.php:91
2335
  msgid "Generate"
2336
  msgstr ""
2337
 
2338
- #: includes/class-wcj-pdf-invoicing.php:92
2339
  msgid "Download (Zip)"
2340
  msgstr ""
2341
 
2342
- #: includes/class-wcj-pdf-invoicing.php:93
2343
  msgid "Merge (Print)"
2344
  msgstr ""
2345
 
2346
- #: includes/class-wcj-pdf-invoicing.php:126
2347
  #, php-format
2348
  msgid "Document generated."
2349
  msgid_plural "%s documents generated."
2350
  msgstr[0] ""
2351
  msgstr[1] ""
2352
 
2353
- #: includes/class-wcj-pdf-invoicing.php:133
2354
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:172
2355
  #, php-format
2356
  msgid ""
@@ -2358,27 +2358,27 @@ msgid ""
2358
  "hosting provider."
2359
  msgstr ""
2360
 
2361
- #: includes/class-wcj-pdf-invoicing.php:139
2362
  msgid "Booster: ZipArchive error."
2363
  msgstr ""
2364
 
2365
- #: includes/class-wcj-pdf-invoicing.php:144
2366
  msgid "Booster: Merge PDFs: No files."
2367
  msgstr ""
2368
 
2369
- #: includes/class-wcj-pdf-invoicing.php:149
2370
  #, php-format
2371
  msgid ""
2372
  "Booster: Merge PDFs: Command requires PHP version 5.3.0 at least. You have "
2373
  "PHP version %s installed."
2374
  msgstr ""
2375
 
2376
- #: includes/class-wcj-pdf-invoicing.php:154
2377
  #, php-format
2378
  msgid "Booster: %s."
2379
  msgstr ""
2380
 
2381
- #: includes/class-wcj-pdf-invoicing.php:452
2382
  msgid "You are not allowed to view the invoice."
2383
  msgstr ""
2384
 
@@ -2518,8 +2518,8 @@ msgstr ""
2518
  #: includes/settings/wcj-settings-emails-verification.php:36
2519
  #: includes/settings/wcj-settings-general.php:21
2520
  #: includes/settings/wcj-settings-general.php:48
2521
- #: includes/settings/wcj-settings-general.php:113
2522
- #: includes/settings/wcj-settings-general.php:164
2523
  #: includes/settings/wcj-settings-global-discount.php:52
2524
  #: includes/settings/wcj-settings-global-discount.php:181
2525
  #: includes/settings/wcj-settings-left-to-free-shipping.php:28
@@ -2589,7 +2589,7 @@ msgstr ""
2589
  #: includes/settings/wcj-settings-product-addons.php:74
2590
  #: includes/settings/wcj-settings-product-addons.php:179
2591
  #: includes/settings/wcj-settings-product-addons.php:249
2592
- #: includes/settings/wcj-settings-product-bookings.php:99
2593
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
2594
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
2595
  #: includes/settings/wcj-settings-product-by-condition.php:21
@@ -2607,9 +2607,9 @@ msgstr ""
2607
  #: includes/settings/wcj-settings-product-info.php:68
2608
  #: includes/settings/wcj-settings-product-input-fields.php:24
2609
  #: includes/settings/wcj-settings-product-input-fields.php:54
2610
- #: includes/settings/wcj-settings-product-input-fields.php:319
2611
- #: includes/settings/wcj-settings-product-input-fields.php:339
2612
- #: includes/settings/wcj-settings-product-input-fields.php:347
2613
  #: includes/settings/wcj-settings-product-open-pricing.php:102
2614
  #: includes/settings/wcj-settings-product-open-pricing.php:109
2615
  #: includes/settings/wcj-settings-product-open-pricing.php:140
@@ -2631,6 +2631,7 @@ msgstr ""
2631
  #: includes/settings/wcj-settings-related-products.php:149
2632
  #: includes/settings/wcj-settings-shipping-by-condition.php:26
2633
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:21
 
2634
  #: includes/settings/wcj-settings-shipping-calculator.php:20
2635
  #: includes/settings/wcj-settings-shipping-calculator.php:27
2636
  #: includes/settings/wcj-settings-shipping-calculator.php:34
@@ -2654,9 +2655,9 @@ msgstr ""
2654
  #: includes/settings/wcj-settings-stock.php:154
2655
  #: includes/settings/wcj-settings-track-users.php:47
2656
  #: includes/settings/wcj-settings-upsells.php:81
2657
- #: includes/settings/wcj-settings-wholesale-price.php:25
2658
- #: includes/settings/wcj-settings-wholesale-price.php:43
2659
- #: includes/settings/wcj-settings-wholesale-price.php:52
2660
  #: includes/settings/wcj-settings-wpml.php:28
2661
  #: includes/settings/wcj-settings-wpml.php:45
2662
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
@@ -2789,13 +2790,13 @@ msgid ""
2789
  "product's edit page."
2790
  msgstr ""
2791
 
2792
- #: includes/class-wcj-product-bookings.php:135
2793
- #: includes/class-wcj-product-bookings.php:244
2794
  #: includes/settings/wcj-settings-product-bookings.php:77
2795
  msgid "\"Date to\" must be after \"Date from\""
2796
  msgstr ""
2797
 
2798
- #: includes/class-wcj-product-bookings.php:148
2799
  #: includes/class-wcj-product-open-pricing.php:253
2800
  #: includes/settings/wcj-settings-add-to-cart.php:140
2801
  #: includes/settings/wcj-settings-add-to-cart.php:167
@@ -2803,37 +2804,37 @@ msgstr ""
2803
  msgid "Read more"
2804
  msgstr ""
2805
 
2806
- #: includes/class-wcj-product-bookings.php:202
2807
  #: includes/settings/wcj-settings-product-bookings.php:49
2808
  msgid "Period"
2809
  msgstr ""
2810
 
2811
- #: includes/class-wcj-product-bookings.php:234
2812
  #: includes/settings/wcj-settings-product-bookings.php:63
2813
  msgid "\"Date from\" must be set"
2814
  msgstr ""
2815
 
2816
- #: includes/class-wcj-product-bookings.php:238
2817
  #: includes/settings/wcj-settings-product-bookings.php:70
2818
  msgid "\"Date to\" must be set"
2819
  msgstr ""
2820
 
2821
- #: includes/class-wcj-product-bookings.php:329
2822
  #: includes/settings/wcj-settings-product-bookings.php:35
2823
  msgid "Date from"
2824
  msgstr ""
2825
 
2826
- #: includes/class-wcj-product-bookings.php:333
2827
  #: includes/settings/wcj-settings-product-bookings.php:42
2828
  msgid "Date to"
2829
  msgstr ""
2830
 
2831
- #: includes/class-wcj-product-bookings.php:349
2832
  #: includes/settings/wcj-settings-product-bookings.php:56
2833
  msgid "/ day"
2834
  msgstr ""
2835
 
2836
- #: includes/class-wcj-product-bookings.php:417
2837
  msgid ""
2838
  "Booster: Free plugin's version is limited to only one bookings product "
2839
  "enabled at a time. You will need to get <a href=\"https://booster.io/plus/\" "
@@ -2879,7 +2880,7 @@ msgstr ""
2879
 
2880
  #: includes/class-wcj-product-bulk-meta-editor.php:232
2881
  #: includes/settings/wcj-settings-product-msrp.php:31
2882
- #: includes/settings/wcj-settings-wholesale-price.php:59
2883
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:19
2884
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:38
2885
  msgid "Show"
@@ -3233,6 +3234,7 @@ msgstr ""
3233
  #: includes/settings/wcj-settings-export.php:75
3234
  #: includes/settings/wcj-settings-export.php:143
3235
  #: includes/settings/wcj-settings-export.php:225
 
3236
  #: includes/settings/wcj-settings-product-add-to-cart.php:300
3237
  #: includes/settings/wcj-settings-product-addons.php:92
3238
  #: includes/settings/wcj-settings-product-by-user.php:167
@@ -3266,7 +3268,7 @@ msgstr ""
3266
  #: includes/admin/class-wc-settings-jetpack.php:480
3267
  #: includes/admin/class-wc-settings-jetpack.php:492
3268
  #: includes/admin/class-wc-settings-jetpack.php:501
3269
- #: includes/functions/wcj-functions-general.php:448
3270
  msgid "Product Info"
3271
  msgstr ""
3272
 
@@ -3333,7 +3335,7 @@ msgstr ""
3333
  #: includes/settings/wcj-settings-track-users.php:14
3334
  #: includes/settings/wcj-settings-upsells.php:14
3335
  #: includes/settings/wcj-settings-url-coupons.php:14
3336
- #: includes/settings/wcj-settings-wholesale-price.php:16
3337
  msgid "Options"
3338
  msgstr ""
3339
 
@@ -3362,33 +3364,33 @@ msgstr ""
3362
  #: includes/class-wcj-product-info.php:123
3363
  #: includes/settings/wcj-settings-offer-price.php:108
3364
  #: includes/settings/wcj-settings-product-add-to-cart.php:326
3365
- #: includes/settings/wcj-settings-product-custom-info.php:116
3366
  msgid "Before product"
3367
  msgstr ""
3368
 
3369
  #: includes/class-wcj-product-info.php:124
3370
  #: includes/settings/wcj-settings-product-add-to-cart.php:327
3371
- #: includes/settings/wcj-settings-product-custom-info.php:117
3372
  msgid "Before product title"
3373
  msgstr ""
3374
 
3375
  #: includes/class-wcj-product-info.php:125
3376
  #: includes/settings/wcj-settings-offer-price.php:109
3377
  #: includes/settings/wcj-settings-product-add-to-cart.php:328
3378
- #: includes/settings/wcj-settings-product-custom-info.php:120
3379
  msgid "After product"
3380
  msgstr ""
3381
 
3382
  #: includes/class-wcj-product-info.php:126
3383
  #: includes/settings/wcj-settings-product-add-to-cart.php:329
3384
- #: includes/settings/wcj-settings-product-custom-info.php:119
3385
  msgid "After product title"
3386
  msgstr ""
3387
 
3388
  #: includes/class-wcj-product-info.php:138
3389
  #: includes/settings/wcj-settings-offer-price.php:87
3390
  #: includes/settings/wcj-settings-product-add-to-cart.php:292
3391
- #: includes/settings/wcj-settings-product-custom-info.php:105
3392
  #: includes/settings/wcj-settings-upsells.php:60
3393
  msgid "Inside single product summary"
3394
  msgstr ""
@@ -3396,7 +3398,7 @@ msgstr ""
3396
  #: includes/class-wcj-product-info.php:139
3397
  #: includes/settings/wcj-settings-offer-price.php:86
3398
  #: includes/settings/wcj-settings-product-add-to-cart.php:291
3399
- #: includes/settings/wcj-settings-product-custom-info.php:104
3400
  #: includes/settings/wcj-settings-upsells.php:59
3401
  msgid "Before single product summary"
3402
  msgstr ""
@@ -3404,7 +3406,7 @@ msgstr ""
3404
  #: includes/class-wcj-product-info.php:140
3405
  #: includes/settings/wcj-settings-offer-price.php:90
3406
  #: includes/settings/wcj-settings-product-add-to-cart.php:293
3407
- #: includes/settings/wcj-settings-product-custom-info.php:106
3408
  #: includes/settings/wcj-settings-upsells.php:61
3409
  msgid "After single product summary"
3410
  msgstr ""
@@ -3417,10 +3419,10 @@ msgstr ""
3417
  #: includes/settings/wcj-settings-left-to-free-shipping.php:73
3418
  #: includes/settings/wcj-settings-left-to-free-shipping.php:107
3419
  #: includes/settings/wcj-settings-mini-cart.php:46
3420
- #: includes/settings/wcj-settings-my-account.php:210
3421
  #: includes/settings/wcj-settings-product-add-to-cart.php:286
3422
  #: includes/settings/wcj-settings-product-add-to-cart.php:321
3423
- #: includes/settings/wcj-settings-product-custom-info.php:97
3424
  #: includes/settings/wcj-settings-product-info.php:50
3425
  #: includes/settings/wcj-settings-product-info.php:83
3426
  #: includes/settings/wcj-settings-product-msrp.php:37
@@ -3616,8 +3618,9 @@ msgstr ""
3616
  #: includes/settings/wcj-settings-left-to-free-shipping.php:65
3617
  #: includes/settings/wcj-settings-left-to-free-shipping.php:99
3618
  #: includes/settings/wcj-settings-mini-cart.php:39
3619
- #: includes/settings/wcj-settings-my-account.php:202
3620
- #: includes/settings/wcj-settings-product-custom-info.php:89
 
3621
  #: includes/settings/wcj-settings-product-tabs.php:92
3622
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:59
3623
  msgid "Content"
@@ -3968,6 +3971,16 @@ msgid ""
3968
  "Set minimum and/or maximum order amount for shipping methods to show up."
3969
  msgstr ""
3970
 
 
 
 
 
 
 
 
 
 
 
3971
  #: includes/class-wcj-shipping-by-products.php:26
3972
  #: includes/settings/wcj-settings-shipping-options.php:57
3973
  msgid "Shipping Methods by Products"
@@ -4048,6 +4061,7 @@ msgstr ""
4048
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:25
4049
  #: includes/settings/wcj-settings-shipping-by-condition.php:28
4050
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:23
 
4051
  #: includes/settings/wcj-settings-shipping-description.php:61
4052
  #: includes/settings/wcj-settings-shipping-icons.php:63
4053
  #: includes/settings/wcj-settings-shipping-time.php:33
@@ -4286,27 +4300,27 @@ msgid ""
4286
  "rearrange sorting options on frontend."
4287
  msgstr ""
4288
 
4289
- #: includes/class-wcj-sorting.php:166
4290
  msgid "Default sorting"
4291
  msgstr ""
4292
 
4293
- #: includes/class-wcj-sorting.php:167
4294
  msgid "Sort by popularity"
4295
  msgstr ""
4296
 
4297
- #: includes/class-wcj-sorting.php:168
4298
  msgid "Sort by average rating"
4299
  msgstr ""
4300
 
4301
- #: includes/class-wcj-sorting.php:169
4302
  msgid "Sort by newness"
4303
  msgstr ""
4304
 
4305
- #: includes/class-wcj-sorting.php:170
4306
  msgid "Sort by price: low to high"
4307
  msgstr ""
4308
 
4309
- #: includes/class-wcj-sorting.php:171
4310
  msgid "Sort by price: high to low"
4311
  msgstr ""
4312
 
@@ -4731,19 +4745,19 @@ msgid ""
4731
  "Methods and more."
4732
  msgstr ""
4733
 
4734
- #: includes/admin/wcj-modules-cats.php:161
4735
  msgid "PDF Invoicing & Packing Slips"
4736
  msgstr ""
4737
 
4738
- #: includes/admin/wcj-modules-cats.php:162
4739
  msgid "PDF Documents"
4740
  msgstr ""
4741
 
4742
- #: includes/admin/wcj-modules-cats.php:178
4743
  msgid "Emails & Misc."
4744
  msgstr ""
4745
 
4746
- #: includes/admin/wcj-modules-cats.php:179
4747
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
4748
  msgstr ""
4749
 
@@ -4770,30 +4784,30 @@ msgid ""
4770
  "\"%1$s\" products."
4771
  msgstr ""
4772
 
4773
- #: includes/classes/class-wcj-module.php:441
4774
  #, php-format
4775
  msgid "Selected: %s."
4776
  msgstr ""
4777
 
4778
- #: includes/classes/class-wcj-module.php:510
4779
  msgid "Back to Module Settings"
4780
  msgstr ""
4781
 
4782
- #: includes/classes/class-wcj-module.php:528
4783
  #: includes/settings/wcj-settings-wpml.php:79
4784
  msgid "Module Tools"
4785
  msgstr ""
4786
 
4787
- #: includes/classes/class-wcj-module.php:601
4788
  #: includes/settings/wcj-settings-checkout-core-fields.php:64
4789
  msgid "enabled"
4790
  msgstr ""
4791
 
4792
- #: includes/classes/class-wcj-module.php:602
4793
  msgid "disabled"
4794
  msgstr ""
4795
 
4796
- #: includes/classes/class-wcj-module.php:610
4797
  #: includes/settings/wcj-settings-product-tabs.php:172
4798
  #: includes/settings/wcj-settings-product-tabs.php:184
4799
  #: includes/settings/wcj-settings-product-tabs.php:196
@@ -4801,27 +4815,27 @@ msgstr ""
4801
  msgid "Deprecated"
4802
  msgstr ""
4803
 
4804
- #: includes/classes/class-wcj-module.php:648
4805
  msgid "Reset Settings"
4806
  msgstr ""
4807
 
4808
- #: includes/classes/class-wcj-module.php:654
4809
  msgid "Reset Module to Default Settings"
4810
  msgstr ""
4811
 
4812
- #: includes/classes/class-wcj-module.php:655
4813
  msgid "Reset Submodule to Default Settings"
4814
  msgstr ""
4815
 
4816
- #: includes/classes/class-wcj-module.php:659
4817
  msgid "Reset settings"
4818
  msgstr ""
4819
 
4820
- #: includes/classes/class-wcj-module.php:693
4821
  msgid "Module Options"
4822
  msgstr ""
4823
 
4824
- #: includes/classes/class-wcj-module.php:700
4825
  msgid "Enable Module"
4826
  msgstr ""
4827
 
@@ -4842,7 +4856,7 @@ msgstr ""
4842
  msgid "\"%s\" module is not enabled!"
4843
  msgstr ""
4844
 
4845
- #: includes/classes/class-wcj-tcpdf.php:38
4846
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:31
4847
  msgid "Page %page_number% / %total_pages%"
4848
  msgstr ""
@@ -5526,11 +5540,15 @@ msgid ""
5526
  "version <strong>%s</strong>."
5527
  msgstr ""
5528
 
5529
- #: includes/functions/wcj-functions-admin.php:137
 
 
 
 
5530
  msgid "Enter comma separated list of IDs."
5531
  msgstr ""
5532
 
5533
- #: includes/functions/wcj-functions-admin.php:211
5534
  #: includes/settings/wcj-settings-emails-verification.php:67
5535
  #: includes/settings/wcj-settings-emails-verification.php:75
5536
  #: includes/settings/wcj-settings-emails-verification.php:122
@@ -5538,60 +5556,60 @@ msgstr ""
5538
  msgid "Replaced value: %s"
5539
  msgstr ""
5540
 
5541
- #: includes/functions/wcj-functions-admin.php:211
5542
  #, php-format
5543
  msgid "Replaced values: %s"
5544
  msgstr ""
5545
 
5546
- #: includes/functions/wcj-functions-admin.php:240
5547
  msgid "Install Booster Plus to unlock all features"
5548
  msgstr ""
5549
 
5550
- #: includes/functions/wcj-functions-admin.php:241
5551
  #, php-format
5552
  msgid ""
5553
  "Some settings fields are locked and you will need %s to modify all locked "
5554
  "fields."
5555
  msgstr ""
5556
 
5557
- #: includes/functions/wcj-functions-admin.php:244
5558
  msgid "Buy now"
5559
  msgstr ""
5560
 
5561
- #: includes/functions/wcj-functions-admin.php:245
5562
  msgid "Visit Booster Site"
5563
  msgstr ""
5564
 
5565
- #: includes/functions/wcj-functions-admin.php:250
5566
  #, php-format
5567
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
5568
  msgstr ""
5569
 
5570
- #: includes/functions/wcj-functions-admin.php:253
5571
  #, php-format
5572
  msgid ""
5573
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
5574
  "option."
5575
  msgstr ""
5576
 
5577
- #: includes/functions/wcj-functions-admin.php:256
5578
  #, php-format
5579
  msgid "Get Booster Plus to enable \"%s\" option."
5580
  msgstr ""
5581
 
5582
- #: includes/functions/wcj-functions-admin.php:259
5583
  #, php-format
5584
  msgid ""
5585
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
5586
  msgstr ""
5587
 
5588
- #: includes/functions/wcj-functions-admin.php:262
5589
  #, php-format
5590
  msgid ""
5591
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
5592
  msgstr ""
5593
 
5594
- #: includes/functions/wcj-functions-admin.php:265
5595
  msgid "Get Booster Plus to change value."
5596
  msgstr ""
5597
 
@@ -6677,92 +6695,92 @@ msgstr ""
6677
  msgid "CoinMarketCap"
6678
  msgstr ""
6679
 
6680
- #: includes/functions/wcj-functions-general.php:651
6681
  #: includes/settings/wcj-settings-cross-sells.php:73
6682
  #: includes/settings/wcj-settings-empty-cart.php:47
6683
  msgid "Before cart"
6684
  msgstr ""
6685
 
6686
- #: includes/functions/wcj-functions-general.php:652
6687
  msgid "Before cart table"
6688
  msgstr ""
6689
 
6690
- #: includes/functions/wcj-functions-general.php:653
6691
  msgid "Before cart contents"
6692
  msgstr ""
6693
 
6694
- #: includes/functions/wcj-functions-general.php:654
6695
  msgid "Cart contents"
6696
  msgstr ""
6697
 
6698
- #: includes/functions/wcj-functions-general.php:655
6699
  msgid "Cart coupon"
6700
  msgstr ""
6701
 
6702
- #: includes/functions/wcj-functions-general.php:656
6703
  msgid "Cart actions"
6704
  msgstr ""
6705
 
6706
- #: includes/functions/wcj-functions-general.php:657
6707
  msgid "After cart contents"
6708
  msgstr ""
6709
 
6710
- #: includes/functions/wcj-functions-general.php:658
6711
  msgid "After cart table"
6712
  msgstr ""
6713
 
6714
- #: includes/functions/wcj-functions-general.php:659
6715
  #: includes/settings/wcj-settings-cross-sells.php:74
6716
  msgid "Cart collaterals"
6717
  msgstr ""
6718
 
6719
- #: includes/functions/wcj-functions-general.php:660
6720
  #: includes/settings/wcj-settings-cross-sells.php:75
6721
  #: includes/settings/wcj-settings-empty-cart.php:56
6722
  msgid "After cart"
6723
  msgstr ""
6724
 
6725
- #: includes/functions/wcj-functions-general.php:662
6726
  msgid "Before cart totals"
6727
  msgstr ""
6728
 
6729
- #: includes/functions/wcj-functions-general.php:663
6730
  #: includes/settings/wcj-settings-empty-cart.php:49
6731
  msgid "Cart totals: Before shipping"
6732
  msgstr ""
6733
 
6734
- #: includes/functions/wcj-functions-general.php:664
6735
  #: includes/settings/wcj-settings-empty-cart.php:50
6736
  msgid "Cart totals: After shipping"
6737
  msgstr ""
6738
 
6739
- #: includes/functions/wcj-functions-general.php:665
6740
  #: includes/settings/wcj-settings-empty-cart.php:51
6741
  msgid "Cart totals: Before order total"
6742
  msgstr ""
6743
 
6744
- #: includes/functions/wcj-functions-general.php:666
6745
  #: includes/settings/wcj-settings-empty-cart.php:52
6746
  msgid "Cart totals: After order total"
6747
  msgstr ""
6748
 
6749
- #: includes/functions/wcj-functions-general.php:667
6750
  msgid "Proceed to checkout"
6751
  msgstr ""
6752
 
6753
- #: includes/functions/wcj-functions-general.php:668
6754
  msgid "After cart totals"
6755
  msgstr ""
6756
 
6757
- #: includes/functions/wcj-functions-general.php:670
6758
  msgid "Before shipping calculator"
6759
  msgstr ""
6760
 
6761
- #: includes/functions/wcj-functions-general.php:671
6762
  msgid "After shipping calculator"
6763
  msgstr ""
6764
 
6765
- #: includes/functions/wcj-functions-general.php:673
6766
  msgid "If cart is empty"
6767
  msgstr ""
6768
 
@@ -6880,7 +6898,7 @@ msgstr ""
6880
 
6881
  #: includes/functions/wcj-functions-shipping.php:222
6882
  #: includes/functions/wcj-functions-shipping.php:279
6883
- #: includes/settings/wcj-settings-left-to-free-shipping.php:136
6884
  msgid "You have Free delivery"
6885
  msgstr ""
6886
 
@@ -7030,7 +7048,7 @@ msgstr ""
7030
 
7031
  #: includes/input-fields/class-wcj-product-input-fields-core.php:223
7032
  #: includes/input-fields/class-wcj-product-input-fields-core.php:394
7033
- #: includes/settings/wcj-settings-product-input-fields.php:85
7034
  msgid "Product Input Field"
7035
  msgstr ""
7036
 
@@ -7979,7 +7997,8 @@ msgstr ""
7979
  #: includes/settings/wcj-settings-max-products-per-user.php:43
7980
  #: includes/settings/wcj-settings-my-account.php:67
7981
  #: includes/settings/wcj-settings-my-account.php:135
7982
- #: includes/settings/wcj-settings-my-account.php:176
 
7983
  #: includes/settings/wcj-settings-order-quantities.php:85
7984
  #: includes/settings/wcj-settings-order-quantities.php:143
7985
  #: includes/settings/wcj-settings-order-quantities.php:201
@@ -8011,10 +8030,10 @@ msgstr ""
8011
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:30
8012
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:56
8013
  #: includes/settings/wcj-settings-general.php:30
8014
- #: includes/settings/wcj-settings-general.php:66
8015
- #: includes/settings/wcj-settings-general.php:81
8016
- #: includes/settings/wcj-settings-general.php:89
8017
  #: includes/settings/wcj-settings-general.php:97
 
 
8018
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:84
8019
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:109
8020
  #: includes/settings/wcj-settings-price-by-user-role.php:56
@@ -8114,7 +8133,7 @@ msgstr ""
8114
  #: includes/settings/wcj-settings-add-to-cart.php:21
8115
  #: includes/settings/wcj-settings-add-to-cart.php:92
8116
  #: includes/settings/wcj-settings-add-to-cart.php:110
8117
- #: includes/settings/wcj-settings-general.php:130
8118
  #: includes/settings/wcj-settings-shipping-calculator.php:69
8119
  #: includes/settings/wcj-settings-sorting.php:20
8120
  #: includes/settings/wcj-settings-sorting.php:99
@@ -8228,7 +8247,7 @@ msgstr ""
8228
  #: includes/settings/wcj-settings-add-to-cart.php:213
8229
  #: includes/settings/wcj-settings-add-to-cart.php:222
8230
  #: includes/settings/wcj-settings-payment-gateways-fees.php:24
8231
- #: includes/settings/wcj-settings-product-custom-info.php:192
8232
  msgid "Leave blank to disable."
8233
  msgstr ""
8234
 
@@ -8436,11 +8455,11 @@ msgstr ""
8436
  #: includes/settings/wcj-settings-checkout-customization.php:68
8437
  #: includes/settings/wcj-settings-cross-sells.php:87
8438
  #: includes/settings/wcj-settings-currency.php:22
8439
- #: includes/settings/wcj-settings-my-account.php:151
8440
- #: includes/settings/wcj-settings-my-account.php:158
8441
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
8442
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:48
8443
- #: includes/settings/wcj-settings-product-bookings.php:92
8444
  #: includes/settings/wcj-settings-product-images.php:20
8445
  #: includes/settings/wcj-settings-product-images.php:27
8446
  #: includes/settings/wcj-settings-product-images.php:34
@@ -8733,23 +8752,23 @@ msgstr ""
8733
  #: includes/settings/wcj-settings-cart.php:24
8734
  #: includes/settings/wcj-settings-checkout-custom-info.php:20
8735
  #: includes/settings/wcj-settings-mini-cart.php:19
8736
- #: includes/settings/wcj-settings-my-account.php:182
8737
- #: includes/settings/wcj-settings-product-custom-info.php:53
8738
  msgid "Total Blocks"
8739
  msgstr ""
8740
 
8741
  #: includes/settings/wcj-settings-cart.php:39
8742
  #: includes/settings/wcj-settings-checkout-custom-info.php:36
8743
  #: includes/settings/wcj-settings-mini-cart.php:34
8744
- #: includes/settings/wcj-settings-my-account.php:197
8745
  msgid "Info Block"
8746
  msgstr ""
8747
 
8748
  #: includes/settings/wcj-settings-cart.php:58
8749
  #: includes/settings/wcj-settings-checkout-custom-info.php:85
8750
  #: includes/settings/wcj-settings-mini-cart.php:57
8751
- #: includes/settings/wcj-settings-my-account.php:255
8752
- #: includes/settings/wcj-settings-product-custom-info.php:125
8753
  msgid "Position Order (i.e. Priority)"
8754
  msgstr ""
8755
 
@@ -8783,6 +8802,7 @@ msgstr ""
8783
  #: includes/settings/wcj-settings-product-tabs.php:15
8784
  #: includes/settings/wcj-settings-shipping-by-condition.php:20
8785
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:15
 
8786
  #: includes/settings/wcj-settings-shipping-time.php:25
8787
  #: includes/settings/wcj-settings-wpml.php:22
8788
  msgid "General Options"
@@ -9017,6 +9037,7 @@ msgstr ""
9017
 
9018
  #: includes/settings/wcj-settings-checkout-custom-fields.php:210
9019
  #: includes/settings/wcj-settings-eu-vat-number.php:56
 
9020
  #: includes/tools/class-wcj-order-statuses-tool.php:213
9021
  msgid "Clear"
9022
  msgstr ""
@@ -9212,14 +9233,14 @@ msgid "Order review"
9212
  msgstr ""
9213
 
9214
  #: includes/settings/wcj-settings-checkout-custom-info.php:61
9215
- #: includes/settings/wcj-settings-left-to-free-shipping.php:121
9216
  msgid "After order review"
9217
  msgstr ""
9218
 
9219
  #: includes/settings/wcj-settings-checkout-custom-info.php:62
9220
  #: includes/settings/wcj-settings-checkout-files-upload.php:57
9221
  #: includes/settings/wcj-settings-empty-cart.php:69
9222
- #: includes/settings/wcj-settings-left-to-free-shipping.php:122
9223
  msgid "After checkout form"
9224
  msgstr ""
9225
 
@@ -9406,8 +9427,9 @@ msgid "Customize Message"
9406
  msgstr ""
9407
 
9408
  #: includes/settings/wcj-settings-checkout-customization.php:157
9409
- #: includes/settings/wcj-settings-my-account.php:143
9410
- #: includes/settings/wcj-settings-my-account.php:203
 
9411
  #: includes/settings/wcj-settings-sale-flash.php:27
9412
  #: includes/settings/wcj-settings-sale-flash.php:111
9413
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:30
@@ -9470,7 +9492,7 @@ msgstr ""
9470
  #: includes/settings/wcj-settings-payment-gateways-fees.php:37
9471
  #: includes/settings/wcj-settings-price-by-user-role.php:32
9472
  #: includes/settings/wcj-settings-purchase-data.php:77
9473
- #: includes/settings/wcj-settings-wholesale-price.php:79
9474
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
9475
  msgid "Fixed"
9476
  msgstr ""
@@ -9479,7 +9501,7 @@ msgstr ""
9479
  #: includes/settings/wcj-settings-global-discount.php:64
9480
  #: includes/settings/wcj-settings-payment-gateways-fees.php:38
9481
  #: includes/settings/wcj-settings-purchase-data.php:78
9482
- #: includes/settings/wcj-settings-wholesale-price.php:78
9483
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
9484
  msgid "Percent"
9485
  msgstr ""
@@ -9663,24 +9685,24 @@ msgid "Add notice"
9663
  msgstr ""
9664
 
9665
  #: includes/settings/wcj-settings-checkout-files-upload.php:250
9666
- #: includes/settings/wcj-settings-product-input-fields.php:288
9667
  msgid "Emails Options"
9668
  msgstr ""
9669
 
9670
  #: includes/settings/wcj-settings-checkout-files-upload.php:255
9671
- #: includes/settings/wcj-settings-product-input-fields.php:293
9672
  msgid "Attach Files to Admin's New Order Emails"
9673
  msgstr ""
9674
 
9675
  #: includes/settings/wcj-settings-checkout-files-upload.php:256
9676
  #: includes/settings/wcj-settings-checkout-files-upload.php:263
9677
- #: includes/settings/wcj-settings-product-input-fields.php:294
9678
- #: includes/settings/wcj-settings-product-input-fields.php:301
9679
  msgid "Attach"
9680
  msgstr ""
9681
 
9682
  #: includes/settings/wcj-settings-checkout-files-upload.php:262
9683
- #: includes/settings/wcj-settings-product-input-fields.php:300
9684
  msgid "Attach Files to Customer's Processing Order Emails"
9685
  msgstr ""
9686
 
@@ -9775,8 +9797,8 @@ msgstr ""
9775
  #: includes/settings/wcj-settings-payment-gateways.php:49
9776
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:43
9777
  #: includes/settings/wcj-settings-product-by-date.php:117
9778
- #: includes/settings/wcj-settings-product-custom-info.php:186
9779
- #: includes/settings/wcj-settings-product-input-fields.php:333
9780
  #: includes/settings/wcj-settings-shipping-by-condition.php:108
9781
  msgid "Advanced Options"
9782
  msgstr ""
@@ -9989,7 +10011,7 @@ msgid "No changes (default)"
9989
  msgstr ""
9990
 
9991
  #: includes/settings/wcj-settings-cross-sells.php:79
9992
- #: includes/settings/wcj-settings-product-input-fields.php:201
9993
  #: includes/settings/wcj-settings-upsells.php:66
9994
  msgid "Position priority"
9995
  msgstr ""
@@ -10953,108 +10975,138 @@ msgid "WC sessions"
10953
  msgstr ""
10954
 
10955
  #: includes/settings/wcj-settings-general.php:64
10956
- msgid "Datepicker/Weekpicker CSS Loading"
10957
  msgstr ""
10958
 
10959
  #: includes/settings/wcj-settings-general.php:65
10960
- msgid "Disables datepicker/weekpicker CSS loading."
 
 
 
 
 
 
 
 
10961
  msgstr ""
10962
 
10963
  #: includes/settings/wcj-settings-general.php:72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10964
  msgid "Datepicker/Weekpicker CSS Source"
10965
  msgstr ""
10966
 
10967
- #: includes/settings/wcj-settings-general.php:79
10968
  msgid "Datepicker/Weekpicker JavaScript Loading"
10969
  msgstr ""
10970
 
10971
- #: includes/settings/wcj-settings-general.php:80
10972
  msgid "Disables datepicker/weekpicker JavaScript loading."
10973
  msgstr ""
10974
 
10975
- #: includes/settings/wcj-settings-general.php:87
10976
  msgid "Timepicker CSS Loading"
10977
  msgstr ""
10978
 
10979
- #: includes/settings/wcj-settings-general.php:88
10980
  msgid "Disables timepicker CSS loading."
10981
  msgstr ""
10982
 
10983
- #: includes/settings/wcj-settings-general.php:95
10984
  msgid "Timepicker JavaScript Loading"
10985
  msgstr ""
10986
 
10987
- #: includes/settings/wcj-settings-general.php:96
10988
  msgid "Disables timepicker JavaScript loading."
10989
  msgstr ""
10990
 
10991
- #: includes/settings/wcj-settings-general.php:107
10992
  msgid "PayPal Email per Product Options"
10993
  msgstr ""
10994
 
10995
- #: includes/settings/wcj-settings-general.php:112
10996
  msgid "PayPal Email per Product"
10997
  msgstr ""
10998
 
10999
- #: includes/settings/wcj-settings-general.php:114
11000
  #: includes/settings/wcj-settings-max-products-per-user.php:44
11001
  #: includes/settings/wcj-settings-product-by-date.php:54
11002
  #: includes/settings/wcj-settings-product-by-time.php:54
11003
- #: includes/settings/wcj-settings-wholesale-price.php:24
11004
  msgid "This will add new meta box to each product's edit page."
11005
  msgstr ""
11006
 
11007
- #: includes/settings/wcj-settings-general.php:124
11008
  msgid "Session Expiration Options"
11009
  msgstr ""
11010
 
11011
- #: includes/settings/wcj-settings-general.php:129
11012
- #: includes/settings/wcj-settings-general.php:144
11013
  msgid "Session Expiration"
11014
  msgstr ""
11015
 
11016
- #: includes/settings/wcj-settings-general.php:136
11017
  msgid "Session Expiring"
11018
  msgstr ""
11019
 
11020
- #: includes/settings/wcj-settings-general.php:137
11021
  msgid "In seconds. Default: 47 hours (60 * 60 * 47)"
11022
  msgstr ""
11023
 
11024
- #: includes/settings/wcj-settings-general.php:145
11025
  msgid "In seconds. Default: 48 hours (60 * 60 * 48)"
11026
  msgstr ""
11027
 
11028
- #: includes/settings/wcj-settings-general.php:156
11029
  msgid "Booster User Roles Changer Options"
11030
  msgstr ""
11031
 
11032
- #: includes/settings/wcj-settings-general.php:157
11033
  msgid "This will add user roles changer tool to admin bar."
11034
  msgstr ""
11035
 
11036
- #: includes/settings/wcj-settings-general.php:163
11037
  msgid "Booster User Roles Changer"
11038
  msgstr ""
11039
 
11040
- #: includes/settings/wcj-settings-general.php:172
11041
  msgid "Enabled for"
11042
  msgstr ""
11043
 
11044
- #: includes/settings/wcj-settings-general.php:184
11045
  msgid "PHP Options"
11046
  msgstr ""
11047
 
11048
- #: includes/settings/wcj-settings-general.php:189
11049
  msgid "PHP Memory Limit"
11050
  msgstr ""
11051
 
11052
- #: includes/settings/wcj-settings-general.php:190
11053
  msgid "megabytes."
11054
  msgstr ""
11055
 
11056
- #: includes/settings/wcj-settings-general.php:191
11057
- #: includes/settings/wcj-settings-general.php:200
11058
  #: includes/settings/wcj-settings-offer-price.php:175
11059
  #: includes/settings/wcj-settings-offer-price.php:183
11060
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:43
@@ -11062,11 +11114,11 @@ msgstr ""
11062
  msgid "Set zero to disable."
11063
  msgstr ""
11064
 
11065
- #: includes/settings/wcj-settings-general.php:198
11066
  msgid "PHP Time Limit"
11067
  msgstr ""
11068
 
11069
- #: includes/settings/wcj-settings-general.php:199
11070
  msgid "seconds."
11071
  msgstr ""
11072
 
@@ -11234,7 +11286,7 @@ msgstr ""
11234
  #: includes/settings/wcj-settings-price-by-user-role.php:70
11235
  #: includes/settings/wcj-settings-product-addons.php:242
11236
  #: includes/settings/wcj-settings-product-price-by-formula.php:101
11237
- #: includes/settings/wcj-settings-wholesale-price.php:126
11238
  msgid ""
11239
  "Priority for all module's price filters. Set to zero to use default priority."
11240
  msgstr ""
@@ -11267,7 +11319,7 @@ msgstr ""
11267
  #: includes/settings/wcj-settings-left-to-free-shipping.php:35
11268
  #: includes/settings/wcj-settings-left-to-free-shipping.php:66
11269
  #: includes/settings/wcj-settings-left-to-free-shipping.php:100
11270
- #: includes/settings/wcj-settings-left-to-free-shipping.php:133
11271
  msgid "You can use HTML and/or shortcodes (e.g. [wcj_wpml]) here."
11272
  msgstr ""
11273
 
@@ -11285,7 +11337,7 @@ msgstr ""
11285
 
11286
  #: includes/settings/wcj-settings-left-to-free-shipping.php:50
11287
  #: includes/settings/wcj-settings-left-to-free-shipping.php:84
11288
- #: includes/settings/wcj-settings-left-to-free-shipping.php:126
11289
  msgid "Position Order (Priority)"
11290
  msgstr ""
11291
 
@@ -11313,18 +11365,26 @@ msgid "Info on Checkout"
11313
  msgstr ""
11314
 
11315
  #: includes/settings/wcj-settings-left-to-free-shipping.php:119
11316
- msgid "Order review: Payment: Before submit button"
11317
  msgstr ""
11318
 
11319
  #: includes/settings/wcj-settings-left-to-free-shipping.php:120
 
 
 
 
 
 
 
 
11320
  msgid "Order review: Payment: After submit button"
11321
  msgstr ""
11322
 
11323
- #: includes/settings/wcj-settings-left-to-free-shipping.php:132
11324
  msgid "Message on Free Shipping Reached"
11325
  msgstr ""
11326
 
11327
- #: includes/settings/wcj-settings-left-to-free-shipping.php:134
11328
  msgid "Set empty to disable."
11329
  msgstr ""
11330
 
@@ -11445,7 +11505,7 @@ msgstr ""
11445
  #: includes/settings/wcj-settings-price-by-country.php:156
11446
  #: includes/settings/wcj-settings-price-by-user-role.php:69
11447
  #: includes/settings/wcj-settings-product-addons.php:241
11448
- #: includes/settings/wcj-settings-wholesale-price.php:125
11449
  msgid "Advanced: Price Filters Priority"
11450
  msgstr ""
11451
 
@@ -11580,7 +11640,7 @@ msgid "Roles"
11580
  msgstr ""
11581
 
11582
  #: includes/settings/wcj-settings-multicurrency.php:186
11583
- #: includes/settings/wcj-settings-wholesale-price.php:185
11584
  msgid "Save settings after you change this option. Leave blank to disable."
11585
  msgstr ""
11586
 
@@ -11665,21 +11725,34 @@ msgstr ""
11665
 
11666
  #: includes/settings/wcj-settings-my-account.php:129
11667
  #: includes/settings/wcj-settings-my-account.php:134
11668
- msgid "Dashboard Customization"
11669
  msgstr ""
11670
 
11671
  #: includes/settings/wcj-settings-my-account.php:141
 
 
 
 
 
 
 
 
 
 
 
 
 
11672
  msgid "Custom Dashboard Content"
11673
  msgstr ""
11674
 
11675
- #: includes/settings/wcj-settings-my-account.php:142
11676
  msgid ""
11677
  "This will add content at the beginning of dashboard. If you need to add "
11678
  "custom content to the end of the dashboard, use <strong>Custom Info Blocks</"
11679
  "strong> section and select <strong>Account dashboard</strong> position."
11680
  msgstr ""
11681
 
11682
- #: includes/settings/wcj-settings-my-account.php:143
11683
  #: includes/settings/wcj-settings-payment-gateways-fees.php:115
11684
  #: includes/settings/wcj-settings-payment-gateways-fees.php:127
11685
  #: includes/settings/wcj-settings-stock.php:42
@@ -11687,160 +11760,160 @@ msgstr ""
11687
  msgid "Ignored if empty."
11688
  msgstr ""
11689
 
11690
- #: includes/settings/wcj-settings-my-account.php:150
11691
  msgid "Hide \"Hello ...\" Message"
11692
  msgstr ""
11693
 
11694
- #: includes/settings/wcj-settings-my-account.php:157
11695
  msgid "Hide \"From your account dashboard ...\" Message"
11696
  msgstr ""
11697
 
11698
- #: includes/settings/wcj-settings-my-account.php:170
11699
- #: includes/settings/wcj-settings-my-account.php:175
11700
  msgid "Custom Info Blocks"
11701
  msgstr ""
11702
 
11703
- #: includes/settings/wcj-settings-my-account.php:215
11704
  msgid "Account content"
11705
  msgstr ""
11706
 
11707
- #: includes/settings/wcj-settings-my-account.php:216
11708
  msgid "Account dashboard"
11709
  msgstr ""
11710
 
11711
- #: includes/settings/wcj-settings-my-account.php:217
11712
  msgid "Account navigation"
11713
  msgstr ""
11714
 
11715
- #: includes/settings/wcj-settings-my-account.php:218
11716
  msgid "After account downloads"
11717
  msgstr ""
11718
 
11719
- #: includes/settings/wcj-settings-my-account.php:219
11720
  msgid "After account navigation"
11721
  msgstr ""
11722
 
11723
- #: includes/settings/wcj-settings-my-account.php:220
11724
  msgid "After account orders"
11725
  msgstr ""
11726
 
11727
- #: includes/settings/wcj-settings-my-account.php:221
11728
  msgid "After account payment methods"
11729
  msgstr ""
11730
 
11731
- #: includes/settings/wcj-settings-my-account.php:222
11732
  msgid "After available downloads"
11733
  msgstr ""
11734
 
11735
- #: includes/settings/wcj-settings-my-account.php:223
11736
  msgid "After customer login form"
11737
  msgstr ""
11738
 
11739
- #: includes/settings/wcj-settings-my-account.php:224
11740
  msgid "After edit account address form"
11741
  msgstr ""
11742
 
11743
- #: includes/settings/wcj-settings-my-account.php:225
11744
  msgid "After edit account form"
11745
  msgstr ""
11746
 
11747
- #: includes/settings/wcj-settings-my-account.php:226
11748
  msgid "After my account"
11749
  msgstr ""
11750
 
11751
- #: includes/settings/wcj-settings-my-account.php:227
11752
  msgid "Available download end"
11753
  msgstr ""
11754
 
11755
- #: includes/settings/wcj-settings-my-account.php:228
11756
  msgid "Available download start"
11757
  msgstr ""
11758
 
11759
- #: includes/settings/wcj-settings-my-account.php:229
11760
  msgid "Available downloads"
11761
  msgstr ""
11762
 
11763
- #: includes/settings/wcj-settings-my-account.php:230
11764
  msgid "Before account downloads"
11765
  msgstr ""
11766
 
11767
- #: includes/settings/wcj-settings-my-account.php:231
11768
  msgid "Before account navigation"
11769
  msgstr ""
11770
 
11771
- #: includes/settings/wcj-settings-my-account.php:232
11772
  msgid "Before account orders"
11773
  msgstr ""
11774
 
11775
- #: includes/settings/wcj-settings-my-account.php:233
11776
  msgid "Before account orders pagination"
11777
  msgstr ""
11778
 
11779
- #: includes/settings/wcj-settings-my-account.php:234
11780
  msgid "Before account payment methods"
11781
  msgstr ""
11782
 
11783
- #: includes/settings/wcj-settings-my-account.php:235
11784
  msgid "Before Available downloads"
11785
  msgstr ""
11786
 
11787
- #: includes/settings/wcj-settings-my-account.php:236
11788
  msgid "Before customer login form"
11789
  msgstr ""
11790
 
11791
- #: includes/settings/wcj-settings-my-account.php:237
11792
  msgid "Before edit account address form"
11793
  msgstr ""
11794
 
11795
- #: includes/settings/wcj-settings-my-account.php:238
11796
  msgid "Before edit account form"
11797
  msgstr ""
11798
 
11799
- #: includes/settings/wcj-settings-my-account.php:239
11800
  msgid "Before my account"
11801
  msgstr ""
11802
 
11803
- #: includes/settings/wcj-settings-my-account.php:240
11804
  msgid "Edit account form"
11805
  msgstr ""
11806
 
11807
- #: includes/settings/wcj-settings-my-account.php:241
11808
  msgid "Edit account form end"
11809
  msgstr ""
11810
 
11811
- #: includes/settings/wcj-settings-my-account.php:242
11812
  msgid "Edit account form start"
11813
  msgstr ""
11814
 
11815
- #: includes/settings/wcj-settings-my-account.php:243
11816
  msgid "Login form"
11817
  msgstr ""
11818
 
11819
- #: includes/settings/wcj-settings-my-account.php:244
11820
  msgid "Login form end"
11821
  msgstr ""
11822
 
11823
- #: includes/settings/wcj-settings-my-account.php:245
11824
  msgid "Login form start"
11825
  msgstr ""
11826
 
11827
- #: includes/settings/wcj-settings-my-account.php:246
11828
  msgid "Lost password form"
11829
  msgstr ""
11830
 
11831
- #: includes/settings/wcj-settings-my-account.php:247
11832
  msgid "Register form"
11833
  msgstr ""
11834
 
11835
- #: includes/settings/wcj-settings-my-account.php:248
11836
  msgid "Register form end"
11837
  msgstr ""
11838
 
11839
- #: includes/settings/wcj-settings-my-account.php:249
11840
  msgid "Register form start"
11841
  msgstr ""
11842
 
11843
- #: includes/settings/wcj-settings-my-account.php:250
11844
  msgid "Reset password form"
11845
  msgstr ""
11846
 
@@ -11900,23 +11973,23 @@ msgid "Position On Single Product Page"
11900
  msgstr ""
11901
 
11902
  #: includes/settings/wcj-settings-offer-price.php:85
11903
- #: includes/settings/wcj-settings-product-custom-info.php:103
11904
  #: includes/settings/wcj-settings-upsells.php:58
11905
  msgid "Before single product"
11906
  msgstr ""
11907
 
11908
  #: includes/settings/wcj-settings-offer-price.php:88
11909
- #: includes/settings/wcj-settings-product-custom-info.php:108
11910
  msgid "Before add to cart form"
11911
  msgstr ""
11912
 
11913
  #: includes/settings/wcj-settings-offer-price.php:89
11914
- #: includes/settings/wcj-settings-product-custom-info.php:111
11915
  msgid "After add to cart form"
11916
  msgstr ""
11917
 
11918
  #: includes/settings/wcj-settings-offer-price.php:91
11919
- #: includes/settings/wcj-settings-product-custom-info.php:107
11920
  #: includes/settings/wcj-settings-upsells.php:62
11921
  msgid "After single product"
11922
  msgstr ""
@@ -12482,6 +12555,7 @@ msgstr ""
12482
  #: includes/settings/wcj-settings-order-quantities.php:150
12483
  #: includes/settings/wcj-settings-order-quantities.php:166
12484
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:35
 
12485
  msgid "Set to zero to disable."
12486
  msgstr ""
12487
 
@@ -12740,6 +12814,7 @@ msgstr ""
12740
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:22
12741
  #: includes/settings/wcj-settings-shipping-by-condition.php:25
12742
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:20
 
12743
  #: includes/settings/wcj-settings-shipping-description.php:58
12744
  #: includes/settings/wcj-settings-shipping-icons.php:60
12745
  #: includes/settings/wcj-settings-shipping-time.php:30
@@ -12749,6 +12824,7 @@ msgstr ""
12749
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:24
12750
  #: includes/settings/wcj-settings-shipping-by-condition.php:27
12751
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:22
 
12752
  #: includes/settings/wcj-settings-shipping-description.php:60
12753
  #: includes/settings/wcj-settings-shipping-icons.php:62
12754
  #: includes/settings/wcj-settings-shipping-time.php:32
@@ -12980,7 +13056,7 @@ msgstr ""
12980
 
12981
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:49
12982
  #: includes/settings/wcj-settings-price-labels.php:125
12983
- #: includes/settings/wcj-settings-product-input-fields.php:111
12984
  msgid "Product Categories - Include"
12985
  msgstr ""
12986
 
@@ -12992,7 +13068,7 @@ msgstr ""
12992
 
12993
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:60
12994
  #: includes/settings/wcj-settings-price-labels.php:134
12995
- #: includes/settings/wcj-settings-product-input-fields.php:122
12996
  msgid "Product Categories - Exclude"
12997
  msgstr ""
12998
 
@@ -13004,7 +13080,7 @@ msgstr ""
13004
 
13005
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:72
13006
  #: includes/settings/wcj-settings-price-labels.php:107
13007
- #: includes/settings/wcj-settings-product-input-fields.php:156
13008
  msgid "Products - Include"
13009
  msgstr ""
13010
 
@@ -13016,7 +13092,7 @@ msgstr ""
13016
 
13017
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:85
13018
  #: includes/settings/wcj-settings-price-labels.php:116
13019
- #: includes/settings/wcj-settings-product-input-fields.php:168
13020
  msgid "Products - Exclude"
13021
  msgstr ""
13022
 
@@ -13801,7 +13877,7 @@ msgid "Disable Price based on User Role for Bots"
13801
  msgstr ""
13802
 
13803
  #: includes/settings/wcj-settings-price-by-user-role.php:76
13804
- #: includes/settings/wcj-settings-wholesale-price.php:117
13805
  msgid "Advanced: Price Changes"
13806
  msgstr ""
13807
 
@@ -13810,7 +13886,7 @@ msgid "Disable price based on user role for products with \"Price Changes\""
13810
  msgstr ""
13811
 
13812
  #: includes/settings/wcj-settings-price-by-user-role.php:78
13813
- #: includes/settings/wcj-settings-wholesale-price.php:119
13814
  msgid ""
13815
  "Try enabling this checkbox, if you are having compatibility issues with "
13816
  "other plugins."
@@ -14354,15 +14430,15 @@ msgid "Position on Frontend"
14354
  msgstr ""
14355
 
14356
  #: includes/settings/wcj-settings-product-addons.php:206
14357
- #: includes/settings/wcj-settings-product-custom-info.php:109
14358
- #: includes/settings/wcj-settings-product-input-fields.php:196
14359
  #: includes/settings/wcj-settings-product-open-pricing.php:17
14360
  msgid "Before add to cart button"
14361
  msgstr ""
14362
 
14363
  #: includes/settings/wcj-settings-product-addons.php:207
14364
- #: includes/settings/wcj-settings-product-custom-info.php:110
14365
- #: includes/settings/wcj-settings-product-input-fields.php:197
14366
  #: includes/settings/wcj-settings-product-open-pricing.php:18
14367
  msgid "After add to cart button"
14368
  msgstr ""
@@ -14393,14 +14469,14 @@ msgid ""
14393
  msgstr ""
14394
 
14395
  #: includes/settings/wcj-settings-product-addons.php:248
14396
- #: includes/settings/wcj-settings-product-bookings.php:98
14397
  #: includes/settings/wcj-settings-product-open-pricing.php:139
14398
  msgid "Advanced: Check for Outputted Data"
14399
  msgstr ""
14400
 
14401
  #: includes/settings/wcj-settings-product-addons.php:250
14402
- #: includes/settings/wcj-settings-product-bookings.php:100
14403
- #: includes/settings/wcj-settings-product-input-fields.php:340
14404
  #: includes/settings/wcj-settings-product-open-pricing.php:141
14405
  msgid ""
14406
  "Ensures that data outputted only once. Enable this if you see data outputted "
@@ -14482,40 +14558,54 @@ msgid "Message: \"Date to\" is missing"
14482
  msgstr ""
14483
 
14484
  #: includes/settings/wcj-settings-product-bookings.php:91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14485
  msgid "Hide Quantity Selector for Bookings Products"
14486
  msgstr ""
14487
 
14488
- #: includes/settings/wcj-settings-product-bookings.php:110
14489
  msgid "Datepicker Options"
14490
  msgstr ""
14491
 
14492
- #: includes/settings/wcj-settings-product-bookings.php:111
14493
  msgid "This settings will be applied to all your bookings products."
14494
  msgstr ""
14495
 
14496
- #: includes/settings/wcj-settings-product-bookings.php:116
14497
  msgid "Date from: Exclude Days"
14498
  msgstr ""
14499
 
14500
- #: includes/settings/wcj-settings-product-bookings.php:117
14501
- #: includes/settings/wcj-settings-product-bookings.php:126
14502
  msgid "Leave blank to include all days."
14503
  msgstr ""
14504
 
14505
- #: includes/settings/wcj-settings-product-bookings.php:125
14506
  msgid "Date to: Exclude Days"
14507
  msgstr ""
14508
 
14509
- #: includes/settings/wcj-settings-product-bookings.php:134
14510
  msgid "Date from: Exclude Months"
14511
  msgstr ""
14512
 
14513
- #: includes/settings/wcj-settings-product-bookings.php:135
14514
- #: includes/settings/wcj-settings-product-bookings.php:144
14515
  msgid "Leave blank to include all months."
14516
  msgstr ""
14517
 
14518
- #: includes/settings/wcj-settings-product-bookings.php:143
14519
  msgid "Date to: Exclude Months"
14520
  msgstr ""
14521
 
@@ -14838,21 +14928,21 @@ msgstr ""
14838
  msgid "Custom Taxonomy"
14839
  msgstr ""
14840
 
14841
- #: includes/settings/wcj-settings-product-custom-info.php:45
14842
  msgid "Single Product Pages"
14843
  msgstr ""
14844
 
14845
- #: includes/settings/wcj-settings-product-custom-info.php:45
14846
  #: includes/settings/wcj-settings-product-msrp.php:14
14847
  msgid "Archives"
14848
  msgstr ""
14849
 
14850
- #: includes/settings/wcj-settings-product-custom-info.php:84
14851
  #, php-format
14852
  msgid "Block #%s"
14853
  msgstr ""
14854
 
14855
- #: includes/settings/wcj-settings-product-custom-info.php:93
14856
  #: includes/settings/wcj-settings-product-images.php:49
14857
  #: includes/settings/wcj-settings-product-images.php:58
14858
  #: includes/settings/wcj-settings-product-images.php:67
@@ -14862,66 +14952,66 @@ msgstr ""
14862
  msgid "You can use shortcodes here."
14863
  msgstr ""
14864
 
14865
- #: includes/settings/wcj-settings-product-custom-info.php:112
14866
  msgid "Product meta start"
14867
  msgstr ""
14868
 
14869
- #: includes/settings/wcj-settings-product-custom-info.php:113
14870
  msgid "Product meta end"
14871
  msgstr ""
14872
 
14873
- #: includes/settings/wcj-settings-product-custom-info.php:118
14874
  msgid "Inside product title"
14875
  msgstr ""
14876
 
14877
- #: includes/settings/wcj-settings-product-custom-info.php:131
14878
- #: includes/settings/wcj-settings-wholesale-price.php:100
14879
  msgid "Product Categories to Include"
14880
  msgstr ""
14881
 
14882
- #: includes/settings/wcj-settings-product-custom-info.php:132
14883
- #: includes/settings/wcj-settings-product-custom-info.php:140
14884
- #: includes/settings/wcj-settings-product-custom-info.php:148
14885
- #: includes/settings/wcj-settings-product-custom-info.php:156
14886
- #: includes/settings/wcj-settings-product-custom-info.php:164
14887
- #: includes/settings/wcj-settings-product-custom-info.php:172
14888
  msgid "Leave blank to disable the option."
14889
  msgstr ""
14890
 
14891
- #: includes/settings/wcj-settings-product-custom-info.php:139
14892
- #: includes/settings/wcj-settings-wholesale-price.php:109
14893
  msgid "Product Categories to Exclude"
14894
  msgstr ""
14895
 
14896
- #: includes/settings/wcj-settings-product-custom-info.php:147
14897
  msgid "Product Tags to Include"
14898
  msgstr ""
14899
 
14900
- #: includes/settings/wcj-settings-product-custom-info.php:155
14901
  msgid "Product Tags to Exclude"
14902
  msgstr ""
14903
 
14904
- #: includes/settings/wcj-settings-product-custom-info.php:163
14905
  #: includes/settings/wcj-settings-products-xml.php:147
14906
- #: includes/settings/wcj-settings-wholesale-price.php:83
14907
  msgid "Products to Include"
14908
  msgstr ""
14909
 
14910
- #: includes/settings/wcj-settings-product-custom-info.php:171
14911
  #: includes/settings/wcj-settings-products-xml.php:157
14912
- #: includes/settings/wcj-settings-wholesale-price.php:92
14913
  msgid "Products to Exclude"
14914
  msgstr ""
14915
 
14916
- #: includes/settings/wcj-settings-product-custom-info.php:191
14917
  msgid "Extra Filters"
14918
  msgstr ""
14919
 
14920
- #: includes/settings/wcj-settings-product-custom-info.php:193
14921
  msgid "You can add custom filters here (one per line, in filter|title format)."
14922
  msgstr ""
14923
 
14924
- #: includes/settings/wcj-settings-product-custom-info.php:194
14925
  #, php-format
14926
  msgid "E.g.: %s."
14927
  msgstr ""
@@ -14991,6 +15081,40 @@ msgstr ""
14991
  msgid "Leave blank to use the default placeholder image."
14992
  msgstr ""
14993
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14994
  #: includes/settings/wcj-settings-product-info.php:14
14995
  msgid "Products Info"
14996
  msgstr ""
@@ -15090,142 +15214,142 @@ msgstr ""
15090
  msgid "Product Input Fields Number"
15091
  msgstr ""
15092
 
15093
- #: includes/settings/wcj-settings-product-input-fields.php:112
15094
  msgid "Product categories to include."
15095
  msgstr ""
15096
 
15097
- #: includes/settings/wcj-settings-product-input-fields.php:113
15098
- #: includes/settings/wcj-settings-product-input-fields.php:124
15099
- #: includes/settings/wcj-settings-product-input-fields.php:135
15100
- #: includes/settings/wcj-settings-product-input-fields.php:146
15101
- #: includes/settings/wcj-settings-product-input-fields.php:158
15102
- #: includes/settings/wcj-settings-product-input-fields.php:170
15103
- #: includes/settings/wcj-settings-wholesale-price.php:84
15104
- #: includes/settings/wcj-settings-wholesale-price.php:101
15105
  msgid "Leave blank to include all products."
15106
  msgstr ""
15107
 
15108
- #: includes/settings/wcj-settings-product-input-fields.php:123
15109
  msgid "Product categories to exclude."
15110
  msgstr ""
15111
 
15112
- #: includes/settings/wcj-settings-product-input-fields.php:133
15113
  msgid "Product Tags - Include"
15114
  msgstr ""
15115
 
15116
- #: includes/settings/wcj-settings-product-input-fields.php:134
15117
  msgid "Product tags to include."
15118
  msgstr ""
15119
 
15120
- #: includes/settings/wcj-settings-product-input-fields.php:144
15121
  msgid "Product Tags - Exclude"
15122
  msgstr ""
15123
 
15124
- #: includes/settings/wcj-settings-product-input-fields.php:145
15125
  msgid "Product tags to exclude."
15126
  msgstr ""
15127
 
15128
- #: includes/settings/wcj-settings-product-input-fields.php:157
15129
  msgid "Products to include."
15130
  msgstr ""
15131
 
15132
- #: includes/settings/wcj-settings-product-input-fields.php:169
15133
  msgid "Products to exclude."
15134
  msgstr ""
15135
 
15136
- #: includes/settings/wcj-settings-product-input-fields.php:186
15137
  msgid "Frontend View Options"
15138
  msgstr ""
15139
 
15140
- #: includes/settings/wcj-settings-product-input-fields.php:191
15141
  msgid "Position on Single Product Page"
15142
  msgstr ""
15143
 
15144
- #: includes/settings/wcj-settings-product-input-fields.php:207
15145
  msgid "HTML Template - Start"
15146
  msgstr ""
15147
 
15148
- #: includes/settings/wcj-settings-product-input-fields.php:214
15149
  msgid "HTML Template - Each Field"
15150
  msgstr ""
15151
 
15152
- #: includes/settings/wcj-settings-product-input-fields.php:221
15153
  msgid "HTML Template - End"
15154
  msgstr ""
15155
 
15156
- #: includes/settings/wcj-settings-product-input-fields.php:228
15157
  msgid "HTML Template - Radio Field"
15158
  msgstr ""
15159
 
15160
- #: includes/settings/wcj-settings-product-input-fields.php:235
15161
  msgid "HTML to add after required field title"
15162
  msgstr ""
15163
 
15164
- #: includes/settings/wcj-settings-product-input-fields.php:242
15165
  msgid "Cart Display Options"
15166
  msgstr ""
15167
 
15168
- #: includes/settings/wcj-settings-product-input-fields.php:243
15169
  msgid ""
15170
  "When \"Add to cart item data\" is selected, \"Cart HTML Template\" options "
15171
  "below will be ignored."
15172
  msgstr ""
15173
 
15174
- #: includes/settings/wcj-settings-product-input-fields.php:248
15175
  msgid "Add to cart item name"
15176
  msgstr ""
15177
 
15178
- #: includes/settings/wcj-settings-product-input-fields.php:249
15179
  msgid "Add to cart item data"
15180
  msgstr ""
15181
 
15182
- #: includes/settings/wcj-settings-product-input-fields.php:253
15183
  msgid "Cart HTML Template - Start"
15184
  msgstr ""
15185
 
15186
- #: includes/settings/wcj-settings-product-input-fields.php:260
15187
  msgid "Cart HTML Template - Each Field"
15188
  msgstr ""
15189
 
15190
- #: includes/settings/wcj-settings-product-input-fields.php:267
15191
  msgid "Cart HTML Template - End"
15192
  msgstr ""
15193
 
15194
- #: includes/settings/wcj-settings-product-input-fields.php:274
15195
  msgid "Order Table Template - Each Field"
15196
  msgstr ""
15197
 
15198
- #: includes/settings/wcj-settings-product-input-fields.php:275
15199
  msgid "Affects Order received page, Emails and Admin Orders View"
15200
  msgstr ""
15201
 
15202
- #: includes/settings/wcj-settings-product-input-fields.php:313
15203
  msgid "Admin Order View Options"
15204
  msgstr ""
15205
 
15206
- #: includes/settings/wcj-settings-product-input-fields.php:318
15207
  msgid "Replace Field ID with Field Label"
15208
  msgstr ""
15209
 
15210
- #: includes/settings/wcj-settings-product-input-fields.php:320
15211
  #, php-format
15212
  msgid "Please note: %s"
15213
  msgstr ""
15214
 
15215
- #: includes/settings/wcj-settings-product-input-fields.php:321
15216
  msgid ""
15217
  "When checked - will disable input fields editing on admin order edit page."
15218
  msgstr ""
15219
 
15220
- #: includes/settings/wcj-settings-product-input-fields.php:338
15221
  msgid "Check for Outputted Data"
15222
  msgstr ""
15223
 
15224
- #: includes/settings/wcj-settings-product-input-fields.php:346
15225
  msgid "Strip Slashes"
15226
  msgstr ""
15227
 
15228
- #: includes/settings/wcj-settings-product-input-fields.php:348
15229
  #, php-format
15230
  msgid "Enable this if you have single quotes %s converted to %s."
15231
  msgstr ""
@@ -16366,6 +16490,14 @@ msgstr ""
16366
  msgid "Maximum order amount"
16367
  msgstr ""
16368
 
 
 
 
 
 
 
 
 
16369
  #: includes/settings/wcj-settings-shipping-calculator.php:14
16370
  msgid "Shipping Calculator Options"
16371
  msgstr ""
@@ -16944,6 +17076,31 @@ msgstr ""
16944
  msgid "Remove all sorting (including WooCommerce default) from shop's frontend"
16945
  msgstr ""
16946
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16947
  #: includes/settings/wcj-settings-stock.php:14
16948
  msgid "Custom \"In Stock\" Options"
16949
  msgstr ""
@@ -17356,106 +17513,106 @@ msgstr ""
17356
  msgid "Automatically add coupon's products to the cart"
17357
  msgstr ""
17358
 
17359
- #: includes/settings/wcj-settings-wholesale-price.php:18
17360
  #, php-format
17361
  msgid "If you want to display prices table on frontend, use %s shortcode."
17362
  msgstr ""
17363
 
17364
- #: includes/settings/wcj-settings-wholesale-price.php:23
17365
  msgid "Enable per Product"
17366
  msgstr ""
17367
 
17368
- #: includes/settings/wcj-settings-wholesale-price.php:31
17369
  msgid "Quantity Calculation"
17370
  msgstr ""
17371
 
17372
- #: includes/settings/wcj-settings-wholesale-price.php:36
17373
  msgid "Product quantity"
17374
  msgstr ""
17375
 
17376
- #: includes/settings/wcj-settings-wholesale-price.php:37
17377
  msgid "Total cart quantity (wholesale products only)"
17378
  msgstr ""
17379
 
17380
- #: includes/settings/wcj-settings-wholesale-price.php:38
17381
  msgid "Total cart quantity"
17382
  msgstr ""
17383
 
17384
- #: includes/settings/wcj-settings-wholesale-price.php:42
17385
  msgid "Exclusive Use Only"
17386
  msgstr ""
17387
 
17388
- #: includes/settings/wcj-settings-wholesale-price.php:44
17389
  msgid "Apply wholesale discount only if no other cart discounts were applied."
17390
  msgstr ""
17391
 
17392
- #: includes/settings/wcj-settings-wholesale-price.php:50
17393
  msgid "Round Single Product Price"
17394
  msgstr ""
17395
 
17396
- #: includes/settings/wcj-settings-wholesale-price.php:51
17397
  msgid ""
17398
  "If enabled will round single product price with precision set in WooCommerce "
17399
  "> Settings > General > Number of decimals."
17400
  msgstr ""
17401
 
17402
- #: includes/settings/wcj-settings-wholesale-price.php:58
17403
  msgid "Discount Info on Cart Page"
17404
  msgstr ""
17405
 
17406
- #: includes/settings/wcj-settings-wholesale-price.php:65
17407
  msgid "If show discount info on cart page is enabled, set format here."
17408
  msgstr ""
17409
 
17410
- #: includes/settings/wcj-settings-wholesale-price.php:73
17411
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
17412
  msgid "Discount Type"
17413
  msgstr ""
17414
 
17415
- #: includes/settings/wcj-settings-wholesale-price.php:118
17416
  msgid "Disable wholesale pricing for products with \"Price Changes\""
17417
  msgstr ""
17418
 
17419
- #: includes/settings/wcj-settings-wholesale-price.php:136
17420
  msgid "Wholesale Levels Options"
17421
  msgstr ""
17422
 
17423
- #: includes/settings/wcj-settings-wholesale-price.php:141
17424
- #: includes/settings/wcj-settings-wholesale-price.php:198
17425
  msgid "Number of Levels"
17426
  msgstr ""
17427
 
17428
- #: includes/settings/wcj-settings-wholesale-price.php:155
17429
- #: includes/settings/wcj-settings-wholesale-price.php:212
17430
  msgid "Min Quantity"
17431
  msgstr ""
17432
 
17433
- #: includes/settings/wcj-settings-wholesale-price.php:156
17434
- #: includes/settings/wcj-settings-wholesale-price.php:213
17435
  msgid "Minimum quantity to apply discount"
17436
  msgstr ""
17437
 
17438
- #: includes/settings/wcj-settings-wholesale-price.php:163
17439
- #: includes/settings/wcj-settings-wholesale-price.php:164
17440
- #: includes/settings/wcj-settings-wholesale-price.php:220
17441
- #: includes/settings/wcj-settings-wholesale-price.php:221
17442
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
17443
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
17444
  msgid "Discount"
17445
  msgstr ""
17446
 
17447
- #: includes/settings/wcj-settings-wholesale-price.php:178
17448
  msgid "Additional User Roles Options"
17449
  msgstr ""
17450
 
17451
- #: includes/settings/wcj-settings-wholesale-price.php:180
17452
  msgid ""
17453
  "If you want to set different wholesale pricing options for different user "
17454
  "roles, fill this section. Please note that you can also use Booster's "
17455
  "\"Price based on User Role\" module without filling this section."
17456
  msgstr ""
17457
 
17458
- #: includes/settings/wcj-settings-wholesale-price.php:184
17459
  msgid "User Roles Settings"
17460
  msgstr ""
17461
 
@@ -17930,7 +18087,7 @@ msgstr ""
17930
  msgid "In stock"
17931
  msgstr ""
17932
 
17933
- #: includes/templates/wcj-add-to-cart-variable.php:24
17934
  msgid "This product is currently out of stock and unavailable."
17935
  msgstr ""
17936
 
77
 
78
  #: includes/class-wcj-admin-bar.php:172
79
  #: includes/admin/class-wc-settings-jetpack.php:416
80
+ #: includes/classes/class-wcj-module.php:694
81
  msgid "Documentation"
82
  msgstr ""
83
 
84
+ #: includes/class-wcj-admin-bar.php:214 includes/class-wcj-my-account.php:33
85
  #: includes/admin/class-wc-settings-jetpack.php:146
86
  #: includes/admin/wcj-modules-cats.php:14
87
  msgid "Dashboard"
96
 
97
  #: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
98
  #: includes/class-wcj-admin-bar.php:632
99
+ #: includes/classes/class-wcj-module.php:527
100
  #: includes/settings/wcj-settings-wpml.php:74
101
  msgid "Tools"
102
  msgstr ""
119
  #: includes/class-wcj-track-users.php:251
120
  #: includes/admin/class-wc-settings-jetpack.php:24
121
  #: includes/admin/class-wc-settings-jetpack.php:221
122
+ #: includes/classes/class-wcj-module.php:354
123
+ #: includes/classes/class-wcj-module.php:554
124
  #: includes/settings/wcj-settings-price-by-country.php:169
125
  msgid "Booster"
126
  msgstr ""
182
  msgstr ""
183
 
184
  #: includes/class-wcj-admin-bar.php:391 includes/class-wcj-admin-bar.php:395
185
+ #: includes/class-wcj-admin-bar.php:413 includes/class-wcj-my-account.php:34
186
+ #: includes/class-wcj-my-account.php:42 includes/class-wcj-orders.php:26
187
  #: includes/reports/wcj-class-reports-sales-gateways.php:153
188
  #: includes/settings/wcj-settings-reports.php:21
189
  #: includes/settings/wcj-settings-reports.php:59
1724
  msgid "<strong>PHP code:</strong> by using %s function, e.g.: %s"
1725
  msgstr ""
1726
 
1727
+ #: includes/class-wcj-my-account.php:27
1728
  msgid "My Account"
1729
  msgstr ""
1730
 
1731
+ #: includes/class-wcj-my-account.php:28
1732
  msgid "WooCommerce \"My Account\" page customization."
1733
  msgstr ""
1734
 
1735
+ #: includes/class-wcj-my-account.php:35 includes/class-wcj-my-account.php:44
1736
  msgid "Downloads"
1737
  msgstr ""
1738
 
1739
+ #: includes/class-wcj-my-account.php:36 includes/class-wcj-my-account.php:46
1740
  msgid "Addresses"
1741
  msgstr ""
1742
 
1743
+ #: includes/class-wcj-my-account.php:37 includes/class-wcj-my-account.php:47
1744
  #: includes/settings/wcj-settings-orders.php:112
1745
  msgid "Payment methods"
1746
  msgstr ""
1747
 
1748
+ #: includes/class-wcj-my-account.php:38 includes/class-wcj-my-account.php:45
1749
  msgid "Account details"
1750
  msgstr ""
1751
 
1752
+ #: includes/class-wcj-my-account.php:39 includes/class-wcj-my-account.php:49
1753
  msgid "Logout"
1754
  msgstr ""
1755
 
1756
+ #: includes/class-wcj-my-account.php:43
1757
+ #: includes/settings/wcj-settings-my-account.php:302
1758
  msgid "View order"
1759
  msgstr ""
1760
 
1761
+ #: includes/class-wcj-my-account.php:45
1762
  msgid "Edit account"
1763
  msgstr ""
1764
 
1765
+ #: includes/class-wcj-my-account.php:48
1766
  msgid "Lost password"
1767
  msgstr ""
1768
 
1769
+ #: includes/class-wcj-my-account.php:220
1770
  #, php-format
1771
  msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
1772
  msgstr ""
1773
 
1774
+ #: includes/class-wcj-my-account.php:230
1775
  #, php-format
1776
  msgid ""
1777
  "From your account dashboard you can view your <a href=\"%1$s\">recent "
1779
  "and <a href=\"%3$s\">edit your password and account details</a>."
1780
  msgstr ""
1781
 
1782
+ #: includes/class-wcj-my-account.php:336
1783
  msgid "User role"
1784
  msgstr ""
1785
 
1786
+ #: includes/class-wcj-my-account.php:416
1787
  #: includes/class-wcj-product-bulk-meta-editor.php:279
1788
  #: includes/class-wcj-product-by-user.php:206
1789
  #: includes/class-wcj-purchase-data.php:94
1790
  #: includes/class-wcj-track-users.php:334
1791
+ #: includes/classes/class-wcj-module.php:663
1792
  #: includes/functions/wcj-functions-general.php:189
1793
  #: includes/functions/wcj-functions-html.php:117
1794
  #: includes/reports/wcj-class-reports-monthly-sales.php:351
1918
  msgid "Make an offer"
1919
  msgstr ""
1920
 
1921
+ #: includes/class-wcj-offer-price.php:460
1922
  #: includes/settings/wcj-settings-offer-price.php:332
1923
  #, php-format
1924
  msgid "Product: %s"
1925
  msgstr ""
1926
 
1927
+ #: includes/class-wcj-offer-price.php:461
1928
  #: includes/settings/wcj-settings-offer-price.php:333
1929
  #, php-format
1930
  msgid "Offered price: %s"
1931
  msgstr ""
1932
 
1933
+ #: includes/class-wcj-offer-price.php:462
1934
  #: includes/settings/wcj-settings-offer-price.php:334
1935
  #, php-format
1936
  msgid "From: %s %s"
1937
  msgstr ""
1938
 
1939
+ #: includes/class-wcj-offer-price.php:463
1940
  #: includes/settings/wcj-settings-offer-price.php:335
1941
  #, php-format
1942
  msgid "Message: %s"
1943
  msgstr ""
1944
 
1945
+ #: includes/class-wcj-offer-price.php:474
1946
  #: includes/settings/wcj-settings-offer-price.php:323
1947
  msgid "Price Offer"
1948
  msgstr ""
1949
 
1950
+ #: includes/class-wcj-offer-price.php:484
1951
  #: includes/settings/wcj-settings-offer-price.php:254
1952
  msgid "Your price offer has been sent."
1953
  msgstr ""
2331
  msgid "Invoices Monthly Reports."
2332
  msgstr ""
2333
 
2334
+ #: includes/class-wcj-pdf-invoicing.php:89
2335
  msgid "Generate"
2336
  msgstr ""
2337
 
2338
+ #: includes/class-wcj-pdf-invoicing.php:90
2339
  msgid "Download (Zip)"
2340
  msgstr ""
2341
 
2342
+ #: includes/class-wcj-pdf-invoicing.php:91
2343
  msgid "Merge (Print)"
2344
  msgstr ""
2345
 
2346
+ #: includes/class-wcj-pdf-invoicing.php:113
2347
  #, php-format
2348
  msgid "Document generated."
2349
  msgid_plural "%s documents generated."
2350
  msgstr[0] ""
2351
  msgstr[1] ""
2352
 
2353
+ #: includes/class-wcj-pdf-invoicing.php:120
2354
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:172
2355
  #, php-format
2356
  msgid ""
2358
  "hosting provider."
2359
  msgstr ""
2360
 
2361
+ #: includes/class-wcj-pdf-invoicing.php:126
2362
  msgid "Booster: ZipArchive error."
2363
  msgstr ""
2364
 
2365
+ #: includes/class-wcj-pdf-invoicing.php:131
2366
  msgid "Booster: Merge PDFs: No files."
2367
  msgstr ""
2368
 
2369
+ #: includes/class-wcj-pdf-invoicing.php:136
2370
  #, php-format
2371
  msgid ""
2372
  "Booster: Merge PDFs: Command requires PHP version 5.3.0 at least. You have "
2373
  "PHP version %s installed."
2374
  msgstr ""
2375
 
2376
+ #: includes/class-wcj-pdf-invoicing.php:141
2377
  #, php-format
2378
  msgid "Booster: %s."
2379
  msgstr ""
2380
 
2381
+ #: includes/class-wcj-pdf-invoicing.php:434
2382
  msgid "You are not allowed to view the invoice."
2383
  msgstr ""
2384
 
2518
  #: includes/settings/wcj-settings-emails-verification.php:36
2519
  #: includes/settings/wcj-settings-general.php:21
2520
  #: includes/settings/wcj-settings-general.php:48
2521
+ #: includes/settings/wcj-settings-general.php:129
2522
+ #: includes/settings/wcj-settings-general.php:180
2523
  #: includes/settings/wcj-settings-global-discount.php:52
2524
  #: includes/settings/wcj-settings-global-discount.php:181
2525
  #: includes/settings/wcj-settings-left-to-free-shipping.php:28
2589
  #: includes/settings/wcj-settings-product-addons.php:74
2590
  #: includes/settings/wcj-settings-product-addons.php:179
2591
  #: includes/settings/wcj-settings-product-addons.php:249
2592
+ #: includes/settings/wcj-settings-product-bookings.php:107
2593
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
2594
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
2595
  #: includes/settings/wcj-settings-product-by-condition.php:21
2607
  #: includes/settings/wcj-settings-product-info.php:68
2608
  #: includes/settings/wcj-settings-product-input-fields.php:24
2609
  #: includes/settings/wcj-settings-product-input-fields.php:54
2610
+ #: includes/settings/wcj-settings-product-input-fields.php:318
2611
+ #: includes/settings/wcj-settings-product-input-fields.php:338
2612
+ #: includes/settings/wcj-settings-product-input-fields.php:346
2613
  #: includes/settings/wcj-settings-product-open-pricing.php:102
2614
  #: includes/settings/wcj-settings-product-open-pricing.php:109
2615
  #: includes/settings/wcj-settings-product-open-pricing.php:140
2631
  #: includes/settings/wcj-settings-related-products.php:149
2632
  #: includes/settings/wcj-settings-shipping-by-condition.php:26
2633
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:21
2634
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:21
2635
  #: includes/settings/wcj-settings-shipping-calculator.php:20
2636
  #: includes/settings/wcj-settings-shipping-calculator.php:27
2637
  #: includes/settings/wcj-settings-shipping-calculator.php:34
2655
  #: includes/settings/wcj-settings-stock.php:154
2656
  #: includes/settings/wcj-settings-track-users.php:47
2657
  #: includes/settings/wcj-settings-upsells.php:81
2658
+ #: includes/settings/wcj-settings-wholesale-price.php:24
2659
+ #: includes/settings/wcj-settings-wholesale-price.php:42
2660
+ #: includes/settings/wcj-settings-wholesale-price.php:51
2661
  #: includes/settings/wcj-settings-wpml.php:28
2662
  #: includes/settings/wcj-settings-wpml.php:45
2663
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
2790
  "product's edit page."
2791
  msgstr ""
2792
 
2793
+ #: includes/class-wcj-product-bookings.php:140
2794
+ #: includes/class-wcj-product-bookings.php:247
2795
  #: includes/settings/wcj-settings-product-bookings.php:77
2796
  msgid "\"Date to\" must be after \"Date from\""
2797
  msgstr ""
2798
 
2799
+ #: includes/class-wcj-product-bookings.php:151
2800
  #: includes/class-wcj-product-open-pricing.php:253
2801
  #: includes/settings/wcj-settings-add-to-cart.php:140
2802
  #: includes/settings/wcj-settings-add-to-cart.php:167
2804
  msgid "Read more"
2805
  msgstr ""
2806
 
2807
+ #: includes/class-wcj-product-bookings.php:205
2808
  #: includes/settings/wcj-settings-product-bookings.php:49
2809
  msgid "Period"
2810
  msgstr ""
2811
 
2812
+ #: includes/class-wcj-product-bookings.php:237
2813
  #: includes/settings/wcj-settings-product-bookings.php:63
2814
  msgid "\"Date from\" must be set"
2815
  msgstr ""
2816
 
2817
+ #: includes/class-wcj-product-bookings.php:241
2818
  #: includes/settings/wcj-settings-product-bookings.php:70
2819
  msgid "\"Date to\" must be set"
2820
  msgstr ""
2821
 
2822
+ #: includes/class-wcj-product-bookings.php:369
2823
  #: includes/settings/wcj-settings-product-bookings.php:35
2824
  msgid "Date from"
2825
  msgstr ""
2826
 
2827
+ #: includes/class-wcj-product-bookings.php:373
2828
  #: includes/settings/wcj-settings-product-bookings.php:42
2829
  msgid "Date to"
2830
  msgstr ""
2831
 
2832
+ #: includes/class-wcj-product-bookings.php:396
2833
  #: includes/settings/wcj-settings-product-bookings.php:56
2834
  msgid "/ day"
2835
  msgstr ""
2836
 
2837
+ #: includes/class-wcj-product-bookings.php:470
2838
  msgid ""
2839
  "Booster: Free plugin's version is limited to only one bookings product "
2840
  "enabled at a time. You will need to get <a href=\"https://booster.io/plus/\" "
2880
 
2881
  #: includes/class-wcj-product-bulk-meta-editor.php:232
2882
  #: includes/settings/wcj-settings-product-msrp.php:31
2883
+ #: includes/settings/wcj-settings-wholesale-price.php:58
2884
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:19
2885
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:38
2886
  msgid "Show"
3234
  #: includes/settings/wcj-settings-export.php:75
3235
  #: includes/settings/wcj-settings-export.php:143
3236
  #: includes/settings/wcj-settings-export.php:225
3237
+ #: includes/settings/wcj-settings-my-account.php:161
3238
  #: includes/settings/wcj-settings-product-add-to-cart.php:300
3239
  #: includes/settings/wcj-settings-product-addons.php:92
3240
  #: includes/settings/wcj-settings-product-by-user.php:167
3268
  #: includes/admin/class-wc-settings-jetpack.php:480
3269
  #: includes/admin/class-wc-settings-jetpack.php:492
3270
  #: includes/admin/class-wc-settings-jetpack.php:501
3271
+ #: includes/functions/wcj-functions-general.php:449
3272
  msgid "Product Info"
3273
  msgstr ""
3274
 
3335
  #: includes/settings/wcj-settings-track-users.php:14
3336
  #: includes/settings/wcj-settings-upsells.php:14
3337
  #: includes/settings/wcj-settings-url-coupons.php:14
3338
+ #: includes/settings/wcj-settings-wholesale-price.php:15
3339
  msgid "Options"
3340
  msgstr ""
3341
 
3364
  #: includes/class-wcj-product-info.php:123
3365
  #: includes/settings/wcj-settings-offer-price.php:108
3366
  #: includes/settings/wcj-settings-product-add-to-cart.php:326
3367
+ #: includes/settings/wcj-settings-product-custom-info.php:115
3368
  msgid "Before product"
3369
  msgstr ""
3370
 
3371
  #: includes/class-wcj-product-info.php:124
3372
  #: includes/settings/wcj-settings-product-add-to-cart.php:327
3373
+ #: includes/settings/wcj-settings-product-custom-info.php:116
3374
  msgid "Before product title"
3375
  msgstr ""
3376
 
3377
  #: includes/class-wcj-product-info.php:125
3378
  #: includes/settings/wcj-settings-offer-price.php:109
3379
  #: includes/settings/wcj-settings-product-add-to-cart.php:328
3380
+ #: includes/settings/wcj-settings-product-custom-info.php:119
3381
  msgid "After product"
3382
  msgstr ""
3383
 
3384
  #: includes/class-wcj-product-info.php:126
3385
  #: includes/settings/wcj-settings-product-add-to-cart.php:329
3386
+ #: includes/settings/wcj-settings-product-custom-info.php:118
3387
  msgid "After product title"
3388
  msgstr ""
3389
 
3390
  #: includes/class-wcj-product-info.php:138
3391
  #: includes/settings/wcj-settings-offer-price.php:87
3392
  #: includes/settings/wcj-settings-product-add-to-cart.php:292
3393
+ #: includes/settings/wcj-settings-product-custom-info.php:104
3394
  #: includes/settings/wcj-settings-upsells.php:60
3395
  msgid "Inside single product summary"
3396
  msgstr ""
3398
  #: includes/class-wcj-product-info.php:139
3399
  #: includes/settings/wcj-settings-offer-price.php:86
3400
  #: includes/settings/wcj-settings-product-add-to-cart.php:291
3401
+ #: includes/settings/wcj-settings-product-custom-info.php:103
3402
  #: includes/settings/wcj-settings-upsells.php:59
3403
  msgid "Before single product summary"
3404
  msgstr ""
3406
  #: includes/class-wcj-product-info.php:140
3407
  #: includes/settings/wcj-settings-offer-price.php:90
3408
  #: includes/settings/wcj-settings-product-add-to-cart.php:293
3409
+ #: includes/settings/wcj-settings-product-custom-info.php:105
3410
  #: includes/settings/wcj-settings-upsells.php:61
3411
  msgid "After single product summary"
3412
  msgstr ""
3419
  #: includes/settings/wcj-settings-left-to-free-shipping.php:73
3420
  #: includes/settings/wcj-settings-left-to-free-shipping.php:107
3421
  #: includes/settings/wcj-settings-mini-cart.php:46
3422
+ #: includes/settings/wcj-settings-my-account.php:261
3423
  #: includes/settings/wcj-settings-product-add-to-cart.php:286
3424
  #: includes/settings/wcj-settings-product-add-to-cart.php:321
3425
+ #: includes/settings/wcj-settings-product-custom-info.php:96
3426
  #: includes/settings/wcj-settings-product-info.php:50
3427
  #: includes/settings/wcj-settings-product-info.php:83
3428
  #: includes/settings/wcj-settings-product-msrp.php:37
3618
  #: includes/settings/wcj-settings-left-to-free-shipping.php:65
3619
  #: includes/settings/wcj-settings-left-to-free-shipping.php:99
3620
  #: includes/settings/wcj-settings-mini-cart.php:39
3621
+ #: includes/settings/wcj-settings-my-account.php:166
3622
+ #: includes/settings/wcj-settings-my-account.php:253
3623
+ #: includes/settings/wcj-settings-product-custom-info.php:88
3624
  #: includes/settings/wcj-settings-product-tabs.php:92
3625
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:59
3626
  msgid "Content"
3971
  "Set minimum and/or maximum order amount for shipping methods to show up."
3972
  msgstr ""
3973
 
3974
+ #: includes/class-wcj-shipping-by-order-qty.php:26
3975
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:33
3976
+ msgid "Shipping Methods by Min/Max Order Quantity"
3977
+ msgstr ""
3978
+
3979
+ #: includes/class-wcj-shipping-by-order-qty.php:27
3980
+ msgid ""
3981
+ "Set minimum and/or maximum order quantity for shipping methods to show up."
3982
+ msgstr ""
3983
+
3984
  #: includes/class-wcj-shipping-by-products.php:26
3985
  #: includes/settings/wcj-settings-shipping-options.php:57
3986
  msgid "Shipping Methods by Products"
4061
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:25
4062
  #: includes/settings/wcj-settings-shipping-by-condition.php:28
4063
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:23
4064
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:23
4065
  #: includes/settings/wcj-settings-shipping-description.php:61
4066
  #: includes/settings/wcj-settings-shipping-icons.php:63
4067
  #: includes/settings/wcj-settings-shipping-time.php:33
4300
  "rearrange sorting options on frontend."
4301
  msgstr ""
4302
 
4303
+ #: includes/class-wcj-sorting.php:214
4304
  msgid "Default sorting"
4305
  msgstr ""
4306
 
4307
+ #: includes/class-wcj-sorting.php:215
4308
  msgid "Sort by popularity"
4309
  msgstr ""
4310
 
4311
+ #: includes/class-wcj-sorting.php:216
4312
  msgid "Sort by average rating"
4313
  msgstr ""
4314
 
4315
+ #: includes/class-wcj-sorting.php:217
4316
  msgid "Sort by newness"
4317
  msgstr ""
4318
 
4319
+ #: includes/class-wcj-sorting.php:218
4320
  msgid "Sort by price: low to high"
4321
  msgstr ""
4322
 
4323
+ #: includes/class-wcj-sorting.php:219
4324
  msgid "Sort by price: high to low"
4325
  msgstr ""
4326
 
4745
  "Methods and more."
4746
  msgstr ""
4747
 
4748
+ #: includes/admin/wcj-modules-cats.php:162
4749
  msgid "PDF Invoicing & Packing Slips"
4750
  msgstr ""
4751
 
4752
+ #: includes/admin/wcj-modules-cats.php:163
4753
  msgid "PDF Documents"
4754
  msgstr ""
4755
 
4756
+ #: includes/admin/wcj-modules-cats.php:179
4757
  msgid "Emails & Misc."
4758
  msgstr ""
4759
 
4760
+ #: includes/admin/wcj-modules-cats.php:180
4761
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
4762
  msgstr ""
4763
 
4784
  "\"%1$s\" products."
4785
  msgstr ""
4786
 
4787
+ #: includes/classes/class-wcj-module.php:446
4788
  #, php-format
4789
  msgid "Selected: %s."
4790
  msgstr ""
4791
 
4792
+ #: includes/classes/class-wcj-module.php:515
4793
  msgid "Back to Module Settings"
4794
  msgstr ""
4795
 
4796
+ #: includes/classes/class-wcj-module.php:533
4797
  #: includes/settings/wcj-settings-wpml.php:79
4798
  msgid "Module Tools"
4799
  msgstr ""
4800
 
4801
+ #: includes/classes/class-wcj-module.php:606
4802
  #: includes/settings/wcj-settings-checkout-core-fields.php:64
4803
  msgid "enabled"
4804
  msgstr ""
4805
 
4806
+ #: includes/classes/class-wcj-module.php:607
4807
  msgid "disabled"
4808
  msgstr ""
4809
 
4810
+ #: includes/classes/class-wcj-module.php:615
4811
  #: includes/settings/wcj-settings-product-tabs.php:172
4812
  #: includes/settings/wcj-settings-product-tabs.php:184
4813
  #: includes/settings/wcj-settings-product-tabs.php:196
4815
  msgid "Deprecated"
4816
  msgstr ""
4817
 
4818
+ #: includes/classes/class-wcj-module.php:653
4819
  msgid "Reset Settings"
4820
  msgstr ""
4821
 
4822
+ #: includes/classes/class-wcj-module.php:659
4823
  msgid "Reset Module to Default Settings"
4824
  msgstr ""
4825
 
4826
+ #: includes/classes/class-wcj-module.php:660
4827
  msgid "Reset Submodule to Default Settings"
4828
  msgstr ""
4829
 
4830
+ #: includes/classes/class-wcj-module.php:664
4831
  msgid "Reset settings"
4832
  msgstr ""
4833
 
4834
+ #: includes/classes/class-wcj-module.php:698
4835
  msgid "Module Options"
4836
  msgstr ""
4837
 
4838
+ #: includes/classes/class-wcj-module.php:705
4839
  msgid "Enable Module"
4840
  msgstr ""
4841
 
4856
  msgid "\"%s\" module is not enabled!"
4857
  msgstr ""
4858
 
4859
+ #: includes/classes/class-wcj-tcpdf.php:40
4860
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:31
4861
  msgid "Page %page_number% / %total_pages%"
4862
  msgstr ""
5540
  "version <strong>%s</strong>."
5541
  msgstr ""
5542
 
5543
+ #: includes/functions/wcj-functions-admin.php:150
5544
+ msgid "Search&hellip;"
5545
+ msgstr ""
5546
+
5547
+ #: includes/functions/wcj-functions-admin.php:190
5548
  msgid "Enter comma separated list of IDs."
5549
  msgstr ""
5550
 
5551
+ #: includes/functions/wcj-functions-admin.php:264
5552
  #: includes/settings/wcj-settings-emails-verification.php:67
5553
  #: includes/settings/wcj-settings-emails-verification.php:75
5554
  #: includes/settings/wcj-settings-emails-verification.php:122
5556
  msgid "Replaced value: %s"
5557
  msgstr ""
5558
 
5559
+ #: includes/functions/wcj-functions-admin.php:264
5560
  #, php-format
5561
  msgid "Replaced values: %s"
5562
  msgstr ""
5563
 
5564
+ #: includes/functions/wcj-functions-admin.php:293
5565
  msgid "Install Booster Plus to unlock all features"
5566
  msgstr ""
5567
 
5568
+ #: includes/functions/wcj-functions-admin.php:294
5569
  #, php-format
5570
  msgid ""
5571
  "Some settings fields are locked and you will need %s to modify all locked "
5572
  "fields."
5573
  msgstr ""
5574
 
5575
+ #: includes/functions/wcj-functions-admin.php:297
5576
  msgid "Buy now"
5577
  msgstr ""
5578
 
5579
+ #: includes/functions/wcj-functions-admin.php:298
5580
  msgid "Visit Booster Site"
5581
  msgstr ""
5582
 
5583
+ #: includes/functions/wcj-functions-admin.php:303
5584
  #, php-format
5585
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
5586
  msgstr ""
5587
 
5588
+ #: includes/functions/wcj-functions-admin.php:306
5589
  #, php-format
5590
  msgid ""
5591
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
5592
  "option."
5593
  msgstr ""
5594
 
5595
+ #: includes/functions/wcj-functions-admin.php:309
5596
  #, php-format
5597
  msgid "Get Booster Plus to enable \"%s\" option."
5598
  msgstr ""
5599
 
5600
+ #: includes/functions/wcj-functions-admin.php:312
5601
  #, php-format
5602
  msgid ""
5603
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
5604
  msgstr ""
5605
 
5606
+ #: includes/functions/wcj-functions-admin.php:315
5607
  #, php-format
5608
  msgid ""
5609
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
5610
  msgstr ""
5611
 
5612
+ #: includes/functions/wcj-functions-admin.php:318
5613
  msgid "Get Booster Plus to change value."
5614
  msgstr ""
5615
 
6695
  msgid "CoinMarketCap"
6696
  msgstr ""
6697
 
6698
+ #: includes/functions/wcj-functions-general.php:652
6699
  #: includes/settings/wcj-settings-cross-sells.php:73
6700
  #: includes/settings/wcj-settings-empty-cart.php:47
6701
  msgid "Before cart"
6702
  msgstr ""
6703
 
6704
+ #: includes/functions/wcj-functions-general.php:653
6705
  msgid "Before cart table"
6706
  msgstr ""
6707
 
6708
+ #: includes/functions/wcj-functions-general.php:654
6709
  msgid "Before cart contents"
6710
  msgstr ""
6711
 
6712
+ #: includes/functions/wcj-functions-general.php:655
6713
  msgid "Cart contents"
6714
  msgstr ""
6715
 
6716
+ #: includes/functions/wcj-functions-general.php:656
6717
  msgid "Cart coupon"
6718
  msgstr ""
6719
 
6720
+ #: includes/functions/wcj-functions-general.php:657
6721
  msgid "Cart actions"
6722
  msgstr ""
6723
 
6724
+ #: includes/functions/wcj-functions-general.php:658
6725
  msgid "After cart contents"
6726
  msgstr ""
6727
 
6728
+ #: includes/functions/wcj-functions-general.php:659
6729
  msgid "After cart table"
6730
  msgstr ""
6731
 
6732
+ #: includes/functions/wcj-functions-general.php:660
6733
  #: includes/settings/wcj-settings-cross-sells.php:74
6734
  msgid "Cart collaterals"
6735
  msgstr ""
6736
 
6737
+ #: includes/functions/wcj-functions-general.php:661
6738
  #: includes/settings/wcj-settings-cross-sells.php:75
6739
  #: includes/settings/wcj-settings-empty-cart.php:56
6740
  msgid "After cart"
6741
  msgstr ""
6742
 
6743
+ #: includes/functions/wcj-functions-general.php:663
6744
  msgid "Before cart totals"
6745
  msgstr ""
6746
 
6747
+ #: includes/functions/wcj-functions-general.php:664
6748
  #: includes/settings/wcj-settings-empty-cart.php:49
6749
  msgid "Cart totals: Before shipping"
6750
  msgstr ""
6751
 
6752
+ #: includes/functions/wcj-functions-general.php:665
6753
  #: includes/settings/wcj-settings-empty-cart.php:50
6754
  msgid "Cart totals: After shipping"
6755
  msgstr ""
6756
 
6757
+ #: includes/functions/wcj-functions-general.php:666
6758
  #: includes/settings/wcj-settings-empty-cart.php:51
6759
  msgid "Cart totals: Before order total"
6760
  msgstr ""
6761
 
6762
+ #: includes/functions/wcj-functions-general.php:667
6763
  #: includes/settings/wcj-settings-empty-cart.php:52
6764
  msgid "Cart totals: After order total"
6765
  msgstr ""
6766
 
6767
+ #: includes/functions/wcj-functions-general.php:668
6768
  msgid "Proceed to checkout"
6769
  msgstr ""
6770
 
6771
+ #: includes/functions/wcj-functions-general.php:669
6772
  msgid "After cart totals"
6773
  msgstr ""
6774
 
6775
+ #: includes/functions/wcj-functions-general.php:671
6776
  msgid "Before shipping calculator"
6777
  msgstr ""
6778
 
6779
+ #: includes/functions/wcj-functions-general.php:672
6780
  msgid "After shipping calculator"
6781
  msgstr ""
6782
 
6783
+ #: includes/functions/wcj-functions-general.php:674
6784
  msgid "If cart is empty"
6785
  msgstr ""
6786
 
6898
 
6899
  #: includes/functions/wcj-functions-shipping.php:222
6900
  #: includes/functions/wcj-functions-shipping.php:279
6901
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:138
6902
  msgid "You have Free delivery"
6903
  msgstr ""
6904
 
7048
 
7049
  #: includes/input-fields/class-wcj-product-input-fields-core.php:223
7050
  #: includes/input-fields/class-wcj-product-input-fields-core.php:394
7051
+ #: includes/settings/wcj-settings-product-input-fields.php:84
7052
  msgid "Product Input Field"
7053
  msgstr ""
7054
 
7997
  #: includes/settings/wcj-settings-max-products-per-user.php:43
7998
  #: includes/settings/wcj-settings-my-account.php:67
7999
  #: includes/settings/wcj-settings-my-account.php:135
8000
+ #: includes/settings/wcj-settings-my-account.php:186
8001
+ #: includes/settings/wcj-settings-my-account.php:227
8002
  #: includes/settings/wcj-settings-order-quantities.php:85
8003
  #: includes/settings/wcj-settings-order-quantities.php:143
8004
  #: includes/settings/wcj-settings-order-quantities.php:201
8030
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:30
8031
  #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:56
8032
  #: includes/settings/wcj-settings-general.php:30
8033
+ #: includes/settings/wcj-settings-general.php:82
 
 
8034
  #: includes/settings/wcj-settings-general.php:97
8035
+ #: includes/settings/wcj-settings-general.php:105
8036
+ #: includes/settings/wcj-settings-general.php:113
8037
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:84
8038
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:109
8039
  #: includes/settings/wcj-settings-price-by-user-role.php:56
8133
  #: includes/settings/wcj-settings-add-to-cart.php:21
8134
  #: includes/settings/wcj-settings-add-to-cart.php:92
8135
  #: includes/settings/wcj-settings-add-to-cart.php:110
8136
+ #: includes/settings/wcj-settings-general.php:146
8137
  #: includes/settings/wcj-settings-shipping-calculator.php:69
8138
  #: includes/settings/wcj-settings-sorting.php:20
8139
  #: includes/settings/wcj-settings-sorting.php:99
8247
  #: includes/settings/wcj-settings-add-to-cart.php:213
8248
  #: includes/settings/wcj-settings-add-to-cart.php:222
8249
  #: includes/settings/wcj-settings-payment-gateways-fees.php:24
8250
+ #: includes/settings/wcj-settings-product-custom-info.php:191
8251
  msgid "Leave blank to disable."
8252
  msgstr ""
8253
 
8455
  #: includes/settings/wcj-settings-checkout-customization.php:68
8456
  #: includes/settings/wcj-settings-cross-sells.php:87
8457
  #: includes/settings/wcj-settings-currency.php:22
8458
+ #: includes/settings/wcj-settings-my-account.php:202
8459
+ #: includes/settings/wcj-settings-my-account.php:209
8460
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
8461
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:48
8462
+ #: includes/settings/wcj-settings-product-bookings.php:100
8463
  #: includes/settings/wcj-settings-product-images.php:20
8464
  #: includes/settings/wcj-settings-product-images.php:27
8465
  #: includes/settings/wcj-settings-product-images.php:34
8752
  #: includes/settings/wcj-settings-cart.php:24
8753
  #: includes/settings/wcj-settings-checkout-custom-info.php:20
8754
  #: includes/settings/wcj-settings-mini-cart.php:19
8755
+ #: includes/settings/wcj-settings-my-account.php:233
8756
+ #: includes/settings/wcj-settings-product-custom-info.php:52
8757
  msgid "Total Blocks"
8758
  msgstr ""
8759
 
8760
  #: includes/settings/wcj-settings-cart.php:39
8761
  #: includes/settings/wcj-settings-checkout-custom-info.php:36
8762
  #: includes/settings/wcj-settings-mini-cart.php:34
8763
+ #: includes/settings/wcj-settings-my-account.php:248
8764
  msgid "Info Block"
8765
  msgstr ""
8766
 
8767
  #: includes/settings/wcj-settings-cart.php:58
8768
  #: includes/settings/wcj-settings-checkout-custom-info.php:85
8769
  #: includes/settings/wcj-settings-mini-cart.php:57
8770
+ #: includes/settings/wcj-settings-my-account.php:306
8771
+ #: includes/settings/wcj-settings-product-custom-info.php:124
8772
  msgid "Position Order (i.e. Priority)"
8773
  msgstr ""
8774
 
8802
  #: includes/settings/wcj-settings-product-tabs.php:15
8803
  #: includes/settings/wcj-settings-shipping-by-condition.php:20
8804
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:15
8805
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:15
8806
  #: includes/settings/wcj-settings-shipping-time.php:25
8807
  #: includes/settings/wcj-settings-wpml.php:22
8808
  msgid "General Options"
9037
 
9038
  #: includes/settings/wcj-settings-checkout-custom-fields.php:210
9039
  #: includes/settings/wcj-settings-eu-vat-number.php:56
9040
+ #: includes/templates/wcj-radio-for-variations.php:24
9041
  #: includes/tools/class-wcj-order-statuses-tool.php:213
9042
  msgid "Clear"
9043
  msgstr ""
9233
  msgstr ""
9234
 
9235
  #: includes/settings/wcj-settings-checkout-custom-info.php:61
9236
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:123
9237
  msgid "After order review"
9238
  msgstr ""
9239
 
9240
  #: includes/settings/wcj-settings-checkout-custom-info.php:62
9241
  #: includes/settings/wcj-settings-checkout-files-upload.php:57
9242
  #: includes/settings/wcj-settings-empty-cart.php:69
9243
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:124
9244
  msgid "After checkout form"
9245
  msgstr ""
9246
 
9427
  msgstr ""
9428
 
9429
  #: includes/settings/wcj-settings-checkout-customization.php:157
9430
+ #: includes/settings/wcj-settings-my-account.php:167
9431
+ #: includes/settings/wcj-settings-my-account.php:194
9432
+ #: includes/settings/wcj-settings-my-account.php:254
9433
  #: includes/settings/wcj-settings-sale-flash.php:27
9434
  #: includes/settings/wcj-settings-sale-flash.php:111
9435
  #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:30
9492
  #: includes/settings/wcj-settings-payment-gateways-fees.php:37
9493
  #: includes/settings/wcj-settings-price-by-user-role.php:32
9494
  #: includes/settings/wcj-settings-purchase-data.php:77
9495
+ #: includes/settings/wcj-settings-wholesale-price.php:78
9496
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
9497
  msgid "Fixed"
9498
  msgstr ""
9501
  #: includes/settings/wcj-settings-global-discount.php:64
9502
  #: includes/settings/wcj-settings-payment-gateways-fees.php:38
9503
  #: includes/settings/wcj-settings-purchase-data.php:78
9504
+ #: includes/settings/wcj-settings-wholesale-price.php:77
9505
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
9506
  msgid "Percent"
9507
  msgstr ""
9685
  msgstr ""
9686
 
9687
  #: includes/settings/wcj-settings-checkout-files-upload.php:250
9688
+ #: includes/settings/wcj-settings-product-input-fields.php:287
9689
  msgid "Emails Options"
9690
  msgstr ""
9691
 
9692
  #: includes/settings/wcj-settings-checkout-files-upload.php:255
9693
+ #: includes/settings/wcj-settings-product-input-fields.php:292
9694
  msgid "Attach Files to Admin's New Order Emails"
9695
  msgstr ""
9696
 
9697
  #: includes/settings/wcj-settings-checkout-files-upload.php:256
9698
  #: includes/settings/wcj-settings-checkout-files-upload.php:263
9699
+ #: includes/settings/wcj-settings-product-input-fields.php:293
9700
+ #: includes/settings/wcj-settings-product-input-fields.php:300
9701
  msgid "Attach"
9702
  msgstr ""
9703
 
9704
  #: includes/settings/wcj-settings-checkout-files-upload.php:262
9705
+ #: includes/settings/wcj-settings-product-input-fields.php:299
9706
  msgid "Attach Files to Customer's Processing Order Emails"
9707
  msgstr ""
9708
 
9797
  #: includes/settings/wcj-settings-payment-gateways.php:49
9798
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:43
9799
  #: includes/settings/wcj-settings-product-by-date.php:117
9800
+ #: includes/settings/wcj-settings-product-custom-info.php:185
9801
+ #: includes/settings/wcj-settings-product-input-fields.php:332
9802
  #: includes/settings/wcj-settings-shipping-by-condition.php:108
9803
  msgid "Advanced Options"
9804
  msgstr ""
10011
  msgstr ""
10012
 
10013
  #: includes/settings/wcj-settings-cross-sells.php:79
10014
+ #: includes/settings/wcj-settings-product-input-fields.php:200
10015
  #: includes/settings/wcj-settings-upsells.php:66
10016
  msgid "Position priority"
10017
  msgstr ""
10975
  msgstr ""
10976
 
10977
  #: includes/settings/wcj-settings-general.php:64
10978
+ msgid "Read and Close"
10979
  msgstr ""
10980
 
10981
  #: includes/settings/wcj-settings-general.php:65
10982
+ msgid ""
10983
+ "Enable <strong>Read and Close</strong> parameter on <strong>session_start()</"
10984
+ "strong>."
10985
+ msgstr ""
10986
+
10987
+ #: includes/settings/wcj-settings-general.php:66
10988
+ msgid ""
10989
+ "Requires Session Type option set as Standard PHP Sessions and PHP version >= "
10990
+ "7.0"
10991
  msgstr ""
10992
 
10993
  #: includes/settings/wcj-settings-general.php:72
10994
+ msgid "IP Detection"
10995
+ msgstr ""
10996
+
10997
+ #: includes/settings/wcj-settings-general.php:73
10998
+ msgid ""
10999
+ "IP Detection Methods used by some Booster modules when not using IP "
11000
+ "detection from WooCommerce. Change order for different results."
11001
+ msgstr ""
11002
+
11003
+ #: includes/settings/wcj-settings-general.php:74
11004
+ msgid "Default values are:"
11005
+ msgstr ""
11006
+
11007
+ #: includes/settings/wcj-settings-general.php:80
11008
+ msgid "Datepicker/Weekpicker CSS Loading"
11009
+ msgstr ""
11010
+
11011
+ #: includes/settings/wcj-settings-general.php:81
11012
+ msgid "Disables datepicker/weekpicker CSS loading."
11013
+ msgstr ""
11014
+
11015
+ #: includes/settings/wcj-settings-general.php:88
11016
  msgid "Datepicker/Weekpicker CSS Source"
11017
  msgstr ""
11018
 
11019
+ #: includes/settings/wcj-settings-general.php:95
11020
  msgid "Datepicker/Weekpicker JavaScript Loading"
11021
  msgstr ""
11022
 
11023
+ #: includes/settings/wcj-settings-general.php:96
11024
  msgid "Disables datepicker/weekpicker JavaScript loading."
11025
  msgstr ""
11026
 
11027
+ #: includes/settings/wcj-settings-general.php:103
11028
  msgid "Timepicker CSS Loading"
11029
  msgstr ""
11030
 
11031
+ #: includes/settings/wcj-settings-general.php:104
11032
  msgid "Disables timepicker CSS loading."
11033
  msgstr ""
11034
 
11035
+ #: includes/settings/wcj-settings-general.php:111
11036
  msgid "Timepicker JavaScript Loading"
11037
  msgstr ""
11038
 
11039
+ #: includes/settings/wcj-settings-general.php:112
11040
  msgid "Disables timepicker JavaScript loading."
11041
  msgstr ""
11042
 
11043
+ #: includes/settings/wcj-settings-general.php:123
11044
  msgid "PayPal Email per Product Options"
11045
  msgstr ""
11046
 
11047
+ #: includes/settings/wcj-settings-general.php:128
11048
  msgid "PayPal Email per Product"
11049
  msgstr ""
11050
 
11051
+ #: includes/settings/wcj-settings-general.php:130
11052
  #: includes/settings/wcj-settings-max-products-per-user.php:44
11053
  #: includes/settings/wcj-settings-product-by-date.php:54
11054
  #: includes/settings/wcj-settings-product-by-time.php:54
11055
+ #: includes/settings/wcj-settings-wholesale-price.php:23
11056
  msgid "This will add new meta box to each product's edit page."
11057
  msgstr ""
11058
 
11059
+ #: includes/settings/wcj-settings-general.php:140
11060
  msgid "Session Expiration Options"
11061
  msgstr ""
11062
 
11063
+ #: includes/settings/wcj-settings-general.php:145
11064
+ #: includes/settings/wcj-settings-general.php:160
11065
  msgid "Session Expiration"
11066
  msgstr ""
11067
 
11068
+ #: includes/settings/wcj-settings-general.php:152
11069
  msgid "Session Expiring"
11070
  msgstr ""
11071
 
11072
+ #: includes/settings/wcj-settings-general.php:153
11073
  msgid "In seconds. Default: 47 hours (60 * 60 * 47)"
11074
  msgstr ""
11075
 
11076
+ #: includes/settings/wcj-settings-general.php:161
11077
  msgid "In seconds. Default: 48 hours (60 * 60 * 48)"
11078
  msgstr ""
11079
 
11080
+ #: includes/settings/wcj-settings-general.php:172
11081
  msgid "Booster User Roles Changer Options"
11082
  msgstr ""
11083
 
11084
+ #: includes/settings/wcj-settings-general.php:173
11085
  msgid "This will add user roles changer tool to admin bar."
11086
  msgstr ""
11087
 
11088
+ #: includes/settings/wcj-settings-general.php:179
11089
  msgid "Booster User Roles Changer"
11090
  msgstr ""
11091
 
11092
+ #: includes/settings/wcj-settings-general.php:188
11093
  msgid "Enabled for"
11094
  msgstr ""
11095
 
11096
+ #: includes/settings/wcj-settings-general.php:200
11097
  msgid "PHP Options"
11098
  msgstr ""
11099
 
11100
+ #: includes/settings/wcj-settings-general.php:205
11101
  msgid "PHP Memory Limit"
11102
  msgstr ""
11103
 
11104
+ #: includes/settings/wcj-settings-general.php:206
11105
  msgid "megabytes."
11106
  msgstr ""
11107
 
11108
+ #: includes/settings/wcj-settings-general.php:207
11109
+ #: includes/settings/wcj-settings-general.php:216
11110
  #: includes/settings/wcj-settings-offer-price.php:175
11111
  #: includes/settings/wcj-settings-offer-price.php:183
11112
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:43
11114
  msgid "Set zero to disable."
11115
  msgstr ""
11116
 
11117
+ #: includes/settings/wcj-settings-general.php:214
11118
  msgid "PHP Time Limit"
11119
  msgstr ""
11120
 
11121
+ #: includes/settings/wcj-settings-general.php:215
11122
  msgid "seconds."
11123
  msgstr ""
11124
 
11286
  #: includes/settings/wcj-settings-price-by-user-role.php:70
11287
  #: includes/settings/wcj-settings-product-addons.php:242
11288
  #: includes/settings/wcj-settings-product-price-by-formula.php:101
11289
+ #: includes/settings/wcj-settings-wholesale-price.php:121
11290
  msgid ""
11291
  "Priority for all module's price filters. Set to zero to use default priority."
11292
  msgstr ""
11319
  #: includes/settings/wcj-settings-left-to-free-shipping.php:35
11320
  #: includes/settings/wcj-settings-left-to-free-shipping.php:66
11321
  #: includes/settings/wcj-settings-left-to-free-shipping.php:100
11322
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:135
11323
  msgid "You can use HTML and/or shortcodes (e.g. [wcj_wpml]) here."
11324
  msgstr ""
11325
 
11337
 
11338
  #: includes/settings/wcj-settings-left-to-free-shipping.php:50
11339
  #: includes/settings/wcj-settings-left-to-free-shipping.php:84
11340
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:128
11341
  msgid "Position Order (Priority)"
11342
  msgstr ""
11343
 
11365
  msgstr ""
11366
 
11367
  #: includes/settings/wcj-settings-left-to-free-shipping.php:119
11368
+ msgid "Order review: Before shipping"
11369
  msgstr ""
11370
 
11371
  #: includes/settings/wcj-settings-left-to-free-shipping.php:120
11372
+ msgid "Order review: After shipping"
11373
+ msgstr ""
11374
+
11375
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:121
11376
+ msgid "Order review: Payment: Before submit button"
11377
+ msgstr ""
11378
+
11379
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:122
11380
  msgid "Order review: Payment: After submit button"
11381
  msgstr ""
11382
 
11383
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:134
11384
  msgid "Message on Free Shipping Reached"
11385
  msgstr ""
11386
 
11387
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:136
11388
  msgid "Set empty to disable."
11389
  msgstr ""
11390
 
11505
  #: includes/settings/wcj-settings-price-by-country.php:156
11506
  #: includes/settings/wcj-settings-price-by-user-role.php:69
11507
  #: includes/settings/wcj-settings-product-addons.php:241
11508
+ #: includes/settings/wcj-settings-wholesale-price.php:120
11509
  msgid "Advanced: Price Filters Priority"
11510
  msgstr ""
11511
 
11640
  msgstr ""
11641
 
11642
  #: includes/settings/wcj-settings-multicurrency.php:186
11643
+ #: includes/settings/wcj-settings-wholesale-price.php:180
11644
  msgid "Save settings after you change this option. Leave blank to disable."
11645
  msgstr ""
11646
 
11725
 
11726
  #: includes/settings/wcj-settings-my-account.php:129
11727
  #: includes/settings/wcj-settings-my-account.php:134
11728
+ msgid "Custom Pages"
11729
  msgstr ""
11730
 
11731
  #: includes/settings/wcj-settings-my-account.php:141
11732
+ msgid "Total Pages"
11733
+ msgstr ""
11734
+
11735
+ #: includes/settings/wcj-settings-my-account.php:156
11736
+ msgid "Custom Page"
11737
+ msgstr ""
11738
+
11739
+ #: includes/settings/wcj-settings-my-account.php:180
11740
+ #: includes/settings/wcj-settings-my-account.php:185
11741
+ msgid "Dashboard Customization"
11742
+ msgstr ""
11743
+
11744
+ #: includes/settings/wcj-settings-my-account.php:192
11745
  msgid "Custom Dashboard Content"
11746
  msgstr ""
11747
 
11748
+ #: includes/settings/wcj-settings-my-account.php:193
11749
  msgid ""
11750
  "This will add content at the beginning of dashboard. If you need to add "
11751
  "custom content to the end of the dashboard, use <strong>Custom Info Blocks</"
11752
  "strong> section and select <strong>Account dashboard</strong> position."
11753
  msgstr ""
11754
 
11755
+ #: includes/settings/wcj-settings-my-account.php:194
11756
  #: includes/settings/wcj-settings-payment-gateways-fees.php:115
11757
  #: includes/settings/wcj-settings-payment-gateways-fees.php:127
11758
  #: includes/settings/wcj-settings-stock.php:42
11760
  msgid "Ignored if empty."
11761
  msgstr ""
11762
 
11763
+ #: includes/settings/wcj-settings-my-account.php:201
11764
  msgid "Hide \"Hello ...\" Message"
11765
  msgstr ""
11766
 
11767
+ #: includes/settings/wcj-settings-my-account.php:208
11768
  msgid "Hide \"From your account dashboard ...\" Message"
11769
  msgstr ""
11770
 
11771
+ #: includes/settings/wcj-settings-my-account.php:221
11772
+ #: includes/settings/wcj-settings-my-account.php:226
11773
  msgid "Custom Info Blocks"
11774
  msgstr ""
11775
 
11776
+ #: includes/settings/wcj-settings-my-account.php:266
11777
  msgid "Account content"
11778
  msgstr ""
11779
 
11780
+ #: includes/settings/wcj-settings-my-account.php:267
11781
  msgid "Account dashboard"
11782
  msgstr ""
11783
 
11784
+ #: includes/settings/wcj-settings-my-account.php:268
11785
  msgid "Account navigation"
11786
  msgstr ""
11787
 
11788
+ #: includes/settings/wcj-settings-my-account.php:269
11789
  msgid "After account downloads"
11790
  msgstr ""
11791
 
11792
+ #: includes/settings/wcj-settings-my-account.php:270
11793
  msgid "After account navigation"
11794
  msgstr ""
11795
 
11796
+ #: includes/settings/wcj-settings-my-account.php:271
11797
  msgid "After account orders"
11798
  msgstr ""
11799
 
11800
+ #: includes/settings/wcj-settings-my-account.php:272
11801
  msgid "After account payment methods"
11802
  msgstr ""
11803
 
11804
+ #: includes/settings/wcj-settings-my-account.php:273
11805
  msgid "After available downloads"
11806
  msgstr ""
11807
 
11808
+ #: includes/settings/wcj-settings-my-account.php:274
11809
  msgid "After customer login form"
11810
  msgstr ""
11811
 
11812
+ #: includes/settings/wcj-settings-my-account.php:275
11813
  msgid "After edit account address form"
11814
  msgstr ""
11815
 
11816
+ #: includes/settings/wcj-settings-my-account.php:276
11817
  msgid "After edit account form"
11818
  msgstr ""
11819
 
11820
+ #: includes/settings/wcj-settings-my-account.php:277
11821
  msgid "After my account"
11822
  msgstr ""
11823
 
11824
+ #: includes/settings/wcj-settings-my-account.php:278
11825
  msgid "Available download end"
11826
  msgstr ""
11827
 
11828
+ #: includes/settings/wcj-settings-my-account.php:279
11829
  msgid "Available download start"
11830
  msgstr ""
11831
 
11832
+ #: includes/settings/wcj-settings-my-account.php:280
11833
  msgid "Available downloads"
11834
  msgstr ""
11835
 
11836
+ #: includes/settings/wcj-settings-my-account.php:281
11837
  msgid "Before account downloads"
11838
  msgstr ""
11839
 
11840
+ #: includes/settings/wcj-settings-my-account.php:282
11841
  msgid "Before account navigation"
11842
  msgstr ""
11843
 
11844
+ #: includes/settings/wcj-settings-my-account.php:283
11845
  msgid "Before account orders"
11846
  msgstr ""
11847
 
11848
+ #: includes/settings/wcj-settings-my-account.php:284
11849
  msgid "Before account orders pagination"
11850
  msgstr ""
11851
 
11852
+ #: includes/settings/wcj-settings-my-account.php:285
11853
  msgid "Before account payment methods"
11854
  msgstr ""
11855
 
11856
+ #: includes/settings/wcj-settings-my-account.php:286
11857
  msgid "Before Available downloads"
11858
  msgstr ""
11859
 
11860
+ #: includes/settings/wcj-settings-my-account.php:287
11861
  msgid "Before customer login form"
11862
  msgstr ""
11863
 
11864
+ #: includes/settings/wcj-settings-my-account.php:288
11865
  msgid "Before edit account address form"
11866
  msgstr ""
11867
 
11868
+ #: includes/settings/wcj-settings-my-account.php:289
11869
  msgid "Before edit account form"
11870
  msgstr ""
11871
 
11872
+ #: includes/settings/wcj-settings-my-account.php:290
11873
  msgid "Before my account"
11874
  msgstr ""
11875
 
11876
+ #: includes/settings/wcj-settings-my-account.php:291
11877
  msgid "Edit account form"
11878
  msgstr ""
11879
 
11880
+ #: includes/settings/wcj-settings-my-account.php:292
11881
  msgid "Edit account form end"
11882
  msgstr ""
11883
 
11884
+ #: includes/settings/wcj-settings-my-account.php:293
11885
  msgid "Edit account form start"
11886
  msgstr ""
11887
 
11888
+ #: includes/settings/wcj-settings-my-account.php:294
11889
  msgid "Login form"
11890
  msgstr ""
11891
 
11892
+ #: includes/settings/wcj-settings-my-account.php:295
11893
  msgid "Login form end"
11894
  msgstr ""
11895
 
11896
+ #: includes/settings/wcj-settings-my-account.php:296
11897
  msgid "Login form start"
11898
  msgstr ""
11899
 
11900
+ #: includes/settings/wcj-settings-my-account.php:297
11901
  msgid "Lost password form"
11902
  msgstr ""
11903
 
11904
+ #: includes/settings/wcj-settings-my-account.php:298
11905
  msgid "Register form"
11906
  msgstr ""
11907
 
11908
+ #: includes/settings/wcj-settings-my-account.php:299
11909
  msgid "Register form end"
11910
  msgstr ""
11911
 
11912
+ #: includes/settings/wcj-settings-my-account.php:300
11913
  msgid "Register form start"
11914
  msgstr ""
11915
 
11916
+ #: includes/settings/wcj-settings-my-account.php:301
11917
  msgid "Reset password form"
11918
  msgstr ""
11919
 
11973
  msgstr ""
11974
 
11975
  #: includes/settings/wcj-settings-offer-price.php:85
11976
+ #: includes/settings/wcj-settings-product-custom-info.php:102
11977
  #: includes/settings/wcj-settings-upsells.php:58
11978
  msgid "Before single product"
11979
  msgstr ""
11980
 
11981
  #: includes/settings/wcj-settings-offer-price.php:88
11982
+ #: includes/settings/wcj-settings-product-custom-info.php:107
11983
  msgid "Before add to cart form"
11984
  msgstr ""
11985
 
11986
  #: includes/settings/wcj-settings-offer-price.php:89
11987
+ #: includes/settings/wcj-settings-product-custom-info.php:110
11988
  msgid "After add to cart form"
11989
  msgstr ""
11990
 
11991
  #: includes/settings/wcj-settings-offer-price.php:91
11992
+ #: includes/settings/wcj-settings-product-custom-info.php:106
11993
  #: includes/settings/wcj-settings-upsells.php:62
11994
  msgid "After single product"
11995
  msgstr ""
12555
  #: includes/settings/wcj-settings-order-quantities.php:150
12556
  #: includes/settings/wcj-settings-order-quantities.php:166
12557
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:35
12558
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:35
12559
  msgid "Set to zero to disable."
12560
  msgstr ""
12561
 
12814
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:22
12815
  #: includes/settings/wcj-settings-shipping-by-condition.php:25
12816
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:20
12817
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:20
12818
  #: includes/settings/wcj-settings-shipping-description.php:58
12819
  #: includes/settings/wcj-settings-shipping-icons.php:60
12820
  #: includes/settings/wcj-settings-shipping-time.php:30
12824
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:24
12825
  #: includes/settings/wcj-settings-shipping-by-condition.php:27
12826
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:22
12827
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:22
12828
  #: includes/settings/wcj-settings-shipping-description.php:60
12829
  #: includes/settings/wcj-settings-shipping-icons.php:62
12830
  #: includes/settings/wcj-settings-shipping-time.php:32
13056
 
13057
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:49
13058
  #: includes/settings/wcj-settings-price-labels.php:125
13059
+ #: includes/settings/wcj-settings-product-input-fields.php:110
13060
  msgid "Product Categories - Include"
13061
  msgstr ""
13062
 
13068
 
13069
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:60
13070
  #: includes/settings/wcj-settings-price-labels.php:134
13071
+ #: includes/settings/wcj-settings-product-input-fields.php:121
13072
  msgid "Product Categories - Exclude"
13073
  msgstr ""
13074
 
13080
 
13081
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:72
13082
  #: includes/settings/wcj-settings-price-labels.php:107
13083
+ #: includes/settings/wcj-settings-product-input-fields.php:155
13084
  msgid "Products - Include"
13085
  msgstr ""
13086
 
13092
 
13093
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:85
13094
  #: includes/settings/wcj-settings-price-labels.php:116
13095
+ #: includes/settings/wcj-settings-product-input-fields.php:167
13096
  msgid "Products - Exclude"
13097
  msgstr ""
13098
 
13877
  msgstr ""
13878
 
13879
  #: includes/settings/wcj-settings-price-by-user-role.php:76
13880
+ #: includes/settings/wcj-settings-wholesale-price.php:112
13881
  msgid "Advanced: Price Changes"
13882
  msgstr ""
13883
 
13886
  msgstr ""
13887
 
13888
  #: includes/settings/wcj-settings-price-by-user-role.php:78
13889
+ #: includes/settings/wcj-settings-wholesale-price.php:114
13890
  msgid ""
13891
  "Try enabling this checkbox, if you are having compatibility issues with "
13892
  "other plugins."
14430
  msgstr ""
14431
 
14432
  #: includes/settings/wcj-settings-product-addons.php:206
14433
+ #: includes/settings/wcj-settings-product-custom-info.php:108
14434
+ #: includes/settings/wcj-settings-product-input-fields.php:195
14435
  #: includes/settings/wcj-settings-product-open-pricing.php:17
14436
  msgid "Before add to cart button"
14437
  msgstr ""
14438
 
14439
  #: includes/settings/wcj-settings-product-addons.php:207
14440
+ #: includes/settings/wcj-settings-product-custom-info.php:109
14441
+ #: includes/settings/wcj-settings-product-input-fields.php:196
14442
  #: includes/settings/wcj-settings-product-open-pricing.php:18
14443
  msgid "After add to cart button"
14444
  msgstr ""
14469
  msgstr ""
14470
 
14471
  #: includes/settings/wcj-settings-product-addons.php:248
14472
+ #: includes/settings/wcj-settings-product-bookings.php:106
14473
  #: includes/settings/wcj-settings-product-open-pricing.php:139
14474
  msgid "Advanced: Check for Outputted Data"
14475
  msgstr ""
14476
 
14477
  #: includes/settings/wcj-settings-product-addons.php:250
14478
+ #: includes/settings/wcj-settings-product-bookings.php:108
14479
+ #: includes/settings/wcj-settings-product-input-fields.php:339
14480
  #: includes/settings/wcj-settings-product-open-pricing.php:141
14481
  msgid ""
14482
  "Ensures that data outputted only once. Enable this if you see data outputted "
14558
  msgstr ""
14559
 
14560
  #: includes/settings/wcj-settings-product-bookings.php:91
14561
+ msgid "Price per Day on Variable Products"
14562
+ msgstr ""
14563
+
14564
+ #: includes/settings/wcj-settings-product-bookings.php:92
14565
+ msgid "Calculate Variable Products final price per day, according to calendar"
14566
+ msgstr ""
14567
+
14568
+ #: includes/settings/wcj-settings-product-bookings.php:93
14569
+ msgid ""
14570
+ "Disable it will make the Variable Product final price be calculated "
14571
+ "regardless of the chosen days on the calendar"
14572
+ msgstr ""
14573
+
14574
+ #: includes/settings/wcj-settings-product-bookings.php:99
14575
  msgid "Hide Quantity Selector for Bookings Products"
14576
  msgstr ""
14577
 
14578
+ #: includes/settings/wcj-settings-product-bookings.php:118
14579
  msgid "Datepicker Options"
14580
  msgstr ""
14581
 
14582
+ #: includes/settings/wcj-settings-product-bookings.php:119
14583
  msgid "This settings will be applied to all your bookings products."
14584
  msgstr ""
14585
 
14586
+ #: includes/settings/wcj-settings-product-bookings.php:124
14587
  msgid "Date from: Exclude Days"
14588
  msgstr ""
14589
 
14590
+ #: includes/settings/wcj-settings-product-bookings.php:125
14591
+ #: includes/settings/wcj-settings-product-bookings.php:134
14592
  msgid "Leave blank to include all days."
14593
  msgstr ""
14594
 
14595
+ #: includes/settings/wcj-settings-product-bookings.php:133
14596
  msgid "Date to: Exclude Days"
14597
  msgstr ""
14598
 
14599
+ #: includes/settings/wcj-settings-product-bookings.php:142
14600
  msgid "Date from: Exclude Months"
14601
  msgstr ""
14602
 
14603
+ #: includes/settings/wcj-settings-product-bookings.php:143
14604
+ #: includes/settings/wcj-settings-product-bookings.php:152
14605
  msgid "Leave blank to include all months."
14606
  msgstr ""
14607
 
14608
+ #: includes/settings/wcj-settings-product-bookings.php:151
14609
  msgid "Date to: Exclude Months"
14610
  msgstr ""
14611
 
14928
  msgid "Custom Taxonomy"
14929
  msgstr ""
14930
 
14931
+ #: includes/settings/wcj-settings-product-custom-info.php:44
14932
  msgid "Single Product Pages"
14933
  msgstr ""
14934
 
14935
+ #: includes/settings/wcj-settings-product-custom-info.php:44
14936
  #: includes/settings/wcj-settings-product-msrp.php:14
14937
  msgid "Archives"
14938
  msgstr ""
14939
 
14940
+ #: includes/settings/wcj-settings-product-custom-info.php:83
14941
  #, php-format
14942
  msgid "Block #%s"
14943
  msgstr ""
14944
 
14945
+ #: includes/settings/wcj-settings-product-custom-info.php:92
14946
  #: includes/settings/wcj-settings-product-images.php:49
14947
  #: includes/settings/wcj-settings-product-images.php:58
14948
  #: includes/settings/wcj-settings-product-images.php:67
14952
  msgid "You can use shortcodes here."
14953
  msgstr ""
14954
 
14955
+ #: includes/settings/wcj-settings-product-custom-info.php:111
14956
  msgid "Product meta start"
14957
  msgstr ""
14958
 
14959
+ #: includes/settings/wcj-settings-product-custom-info.php:112
14960
  msgid "Product meta end"
14961
  msgstr ""
14962
 
14963
+ #: includes/settings/wcj-settings-product-custom-info.php:117
14964
  msgid "Inside product title"
14965
  msgstr ""
14966
 
14967
+ #: includes/settings/wcj-settings-product-custom-info.php:130
14968
+ #: includes/settings/wcj-settings-wholesale-price.php:95
14969
  msgid "Product Categories to Include"
14970
  msgstr ""
14971
 
14972
+ #: includes/settings/wcj-settings-product-custom-info.php:131
14973
+ #: includes/settings/wcj-settings-product-custom-info.php:139
14974
+ #: includes/settings/wcj-settings-product-custom-info.php:147
14975
+ #: includes/settings/wcj-settings-product-custom-info.php:155
14976
+ #: includes/settings/wcj-settings-product-custom-info.php:163
14977
+ #: includes/settings/wcj-settings-product-custom-info.php:171
14978
  msgid "Leave blank to disable the option."
14979
  msgstr ""
14980
 
14981
+ #: includes/settings/wcj-settings-product-custom-info.php:138
14982
+ #: includes/settings/wcj-settings-wholesale-price.php:104
14983
  msgid "Product Categories to Exclude"
14984
  msgstr ""
14985
 
14986
+ #: includes/settings/wcj-settings-product-custom-info.php:146
14987
  msgid "Product Tags to Include"
14988
  msgstr ""
14989
 
14990
+ #: includes/settings/wcj-settings-product-custom-info.php:154
14991
  msgid "Product Tags to Exclude"
14992
  msgstr ""
14993
 
14994
+ #: includes/settings/wcj-settings-product-custom-info.php:162
14995
  #: includes/settings/wcj-settings-products-xml.php:147
14996
+ #: includes/settings/wcj-settings-wholesale-price.php:82
14997
  msgid "Products to Include"
14998
  msgstr ""
14999
 
15000
+ #: includes/settings/wcj-settings-product-custom-info.php:170
15001
  #: includes/settings/wcj-settings-products-xml.php:157
15002
+ #: includes/settings/wcj-settings-wholesale-price.php:89
15003
  msgid "Products to Exclude"
15004
  msgstr ""
15005
 
15006
+ #: includes/settings/wcj-settings-product-custom-info.php:190
15007
  msgid "Extra Filters"
15008
  msgstr ""
15009
 
15010
+ #: includes/settings/wcj-settings-product-custom-info.php:192
15011
  msgid "You can add custom filters here (one per line, in filter|title format)."
15012
  msgstr ""
15013
 
15014
+ #: includes/settings/wcj-settings-product-custom-info.php:193
15015
  #, php-format
15016
  msgid "E.g.: %s."
15017
  msgstr ""
15081
  msgid "Leave blank to use the default placeholder image."
15082
  msgstr ""
15083
 
15084
+ #: includes/settings/wcj-settings-product-images.php:101
15085
+ msgid "Callbacks"
15086
+ msgstr ""
15087
+
15088
+ #: includes/settings/wcj-settings-product-images.php:102
15089
+ msgid ""
15090
+ "Callback functions used by WooCommerce and the current theme in order to "
15091
+ "customize images and thumbnails"
15092
+ msgstr ""
15093
+
15094
+ #: includes/settings/wcj-settings-product-images.php:107
15095
+ msgid "Loop Thumbnail"
15096
+ msgstr ""
15097
+
15098
+ #: includes/settings/wcj-settings-product-images.php:108
15099
+ msgid "Used on hook <strong>woocommerce_before_shop_loop_item_title</strong>"
15100
+ msgstr ""
15101
+
15102
+ #: includes/settings/wcj-settings-product-images.php:114
15103
+ msgid "Loop Thumbnail Priority"
15104
+ msgstr ""
15105
+
15106
+ #: includes/settings/wcj-settings-product-images.php:120
15107
+ msgid "Show Images"
15108
+ msgstr ""
15109
+
15110
+ #: includes/settings/wcj-settings-product-images.php:121
15111
+ msgid "Used on hook <strong>woocommerce_before_single_product_summary</strong>"
15112
+ msgstr ""
15113
+
15114
+ #: includes/settings/wcj-settings-product-images.php:127
15115
+ msgid "Show Images Priority"
15116
+ msgstr ""
15117
+
15118
  #: includes/settings/wcj-settings-product-info.php:14
15119
  msgid "Products Info"
15120
  msgstr ""
15214
  msgid "Product Input Fields Number"
15215
  msgstr ""
15216
 
15217
+ #: includes/settings/wcj-settings-product-input-fields.php:111
15218
  msgid "Product categories to include."
15219
  msgstr ""
15220
 
15221
+ #: includes/settings/wcj-settings-product-input-fields.php:112
15222
+ #: includes/settings/wcj-settings-product-input-fields.php:123
15223
+ #: includes/settings/wcj-settings-product-input-fields.php:134
15224
+ #: includes/settings/wcj-settings-product-input-fields.php:145
15225
+ #: includes/settings/wcj-settings-product-input-fields.php:157
15226
+ #: includes/settings/wcj-settings-product-input-fields.php:169
15227
+ #: includes/settings/wcj-settings-wholesale-price.php:83
15228
+ #: includes/settings/wcj-settings-wholesale-price.php:96
15229
  msgid "Leave blank to include all products."
15230
  msgstr ""
15231
 
15232
+ #: includes/settings/wcj-settings-product-input-fields.php:122
15233
  msgid "Product categories to exclude."
15234
  msgstr ""
15235
 
15236
+ #: includes/settings/wcj-settings-product-input-fields.php:132
15237
  msgid "Product Tags - Include"
15238
  msgstr ""
15239
 
15240
+ #: includes/settings/wcj-settings-product-input-fields.php:133
15241
  msgid "Product tags to include."
15242
  msgstr ""
15243
 
15244
+ #: includes/settings/wcj-settings-product-input-fields.php:143
15245
  msgid "Product Tags - Exclude"
15246
  msgstr ""
15247
 
15248
+ #: includes/settings/wcj-settings-product-input-fields.php:144
15249
  msgid "Product tags to exclude."
15250
  msgstr ""
15251
 
15252
+ #: includes/settings/wcj-settings-product-input-fields.php:156
15253
  msgid "Products to include."
15254
  msgstr ""
15255
 
15256
+ #: includes/settings/wcj-settings-product-input-fields.php:168
15257
  msgid "Products to exclude."
15258
  msgstr ""
15259
 
15260
+ #: includes/settings/wcj-settings-product-input-fields.php:185
15261
  msgid "Frontend View Options"
15262
  msgstr ""
15263
 
15264
+ #: includes/settings/wcj-settings-product-input-fields.php:190
15265
  msgid "Position on Single Product Page"
15266
  msgstr ""
15267
 
15268
+ #: includes/settings/wcj-settings-product-input-fields.php:206
15269
  msgid "HTML Template - Start"
15270
  msgstr ""
15271
 
15272
+ #: includes/settings/wcj-settings-product-input-fields.php:213
15273
  msgid "HTML Template - Each Field"
15274
  msgstr ""
15275
 
15276
+ #: includes/settings/wcj-settings-product-input-fields.php:220
15277
  msgid "HTML Template - End"
15278
  msgstr ""
15279
 
15280
+ #: includes/settings/wcj-settings-product-input-fields.php:227
15281
  msgid "HTML Template - Radio Field"
15282
  msgstr ""
15283
 
15284
+ #: includes/settings/wcj-settings-product-input-fields.php:234
15285
  msgid "HTML to add after required field title"
15286
  msgstr ""
15287
 
15288
+ #: includes/settings/wcj-settings-product-input-fields.php:241
15289
  msgid "Cart Display Options"
15290
  msgstr ""
15291
 
15292
+ #: includes/settings/wcj-settings-product-input-fields.php:242
15293
  msgid ""
15294
  "When \"Add to cart item data\" is selected, \"Cart HTML Template\" options "
15295
  "below will be ignored."
15296
  msgstr ""
15297
 
15298
+ #: includes/settings/wcj-settings-product-input-fields.php:247
15299
  msgid "Add to cart item name"
15300
  msgstr ""
15301
 
15302
+ #: includes/settings/wcj-settings-product-input-fields.php:248
15303
  msgid "Add to cart item data"
15304
  msgstr ""
15305
 
15306
+ #: includes/settings/wcj-settings-product-input-fields.php:252
15307
  msgid "Cart HTML Template - Start"
15308
  msgstr ""
15309
 
15310
+ #: includes/settings/wcj-settings-product-input-fields.php:259
15311
  msgid "Cart HTML Template - Each Field"
15312
  msgstr ""
15313
 
15314
+ #: includes/settings/wcj-settings-product-input-fields.php:266
15315
  msgid "Cart HTML Template - End"
15316
  msgstr ""
15317
 
15318
+ #: includes/settings/wcj-settings-product-input-fields.php:273
15319
  msgid "Order Table Template - Each Field"
15320
  msgstr ""
15321
 
15322
+ #: includes/settings/wcj-settings-product-input-fields.php:274
15323
  msgid "Affects Order received page, Emails and Admin Orders View"
15324
  msgstr ""
15325
 
15326
+ #: includes/settings/wcj-settings-product-input-fields.php:312
15327
  msgid "Admin Order View Options"
15328
  msgstr ""
15329
 
15330
+ #: includes/settings/wcj-settings-product-input-fields.php:317
15331
  msgid "Replace Field ID with Field Label"
15332
  msgstr ""
15333
 
15334
+ #: includes/settings/wcj-settings-product-input-fields.php:319
15335
  #, php-format
15336
  msgid "Please note: %s"
15337
  msgstr ""
15338
 
15339
+ #: includes/settings/wcj-settings-product-input-fields.php:320
15340
  msgid ""
15341
  "When checked - will disable input fields editing on admin order edit page."
15342
  msgstr ""
15343
 
15344
+ #: includes/settings/wcj-settings-product-input-fields.php:337
15345
  msgid "Check for Outputted Data"
15346
  msgstr ""
15347
 
15348
+ #: includes/settings/wcj-settings-product-input-fields.php:345
15349
  msgid "Strip Slashes"
15350
  msgstr ""
15351
 
15352
+ #: includes/settings/wcj-settings-product-input-fields.php:347
15353
  #, php-format
15354
  msgid "Enable this if you have single quotes %s converted to %s."
15355
  msgstr ""
16490
  msgid "Maximum order amount"
16491
  msgstr ""
16492
 
16493
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:57
16494
+ msgid "Minimum order quantity"
16495
+ msgstr ""
16496
+
16497
+ #: includes/settings/wcj-settings-shipping-by-order-qty.php:65
16498
+ msgid "Maximum order quantity"
16499
+ msgstr ""
16500
+
16501
  #: includes/settings/wcj-settings-shipping-calculator.php:14
16502
  msgid "Shipping Calculator Options"
16503
  msgstr ""
17076
  msgid "Remove all sorting (including WooCommerce default) from shop's frontend"
17077
  msgstr ""
17078
 
17079
+ #: includes/settings/wcj-settings-sorting.php:174
17080
+ msgid "Restore Default WooCommerce Sorting"
17081
+ msgstr ""
17082
+
17083
+ #: includes/settings/wcj-settings-sorting.php:175
17084
+ msgid "Replaces theme's sorting by default WooCommerce sorting"
17085
+ msgstr ""
17086
+
17087
+ #: includes/settings/wcj-settings-sorting.php:181
17088
+ #: includes/settings/wcj-settings-sorting.php:182
17089
+ msgid "Restore"
17090
+ msgstr ""
17091
+
17092
+ #: includes/settings/wcj-settings-sorting.php:187
17093
+ msgid "Theme"
17094
+ msgstr ""
17095
+
17096
+ #: includes/settings/wcj-settings-sorting.php:188
17097
+ msgid "Theme that will have its sorting replaced."
17098
+ msgstr ""
17099
+
17100
+ #: includes/settings/wcj-settings-sorting.php:191
17101
+ msgid "Avada"
17102
+ msgstr ""
17103
+
17104
  #: includes/settings/wcj-settings-stock.php:14
17105
  msgid "Custom \"In Stock\" Options"
17106
  msgstr ""
17513
  msgid "Automatically add coupon's products to the cart"
17514
  msgstr ""
17515
 
17516
+ #: includes/settings/wcj-settings-wholesale-price.php:17
17517
  #, php-format
17518
  msgid "If you want to display prices table on frontend, use %s shortcode."
17519
  msgstr ""
17520
 
17521
+ #: includes/settings/wcj-settings-wholesale-price.php:22
17522
  msgid "Enable per Product"
17523
  msgstr ""
17524
 
17525
+ #: includes/settings/wcj-settings-wholesale-price.php:30
17526
  msgid "Quantity Calculation"
17527
  msgstr ""
17528
 
17529
+ #: includes/settings/wcj-settings-wholesale-price.php:35
17530
  msgid "Product quantity"
17531
  msgstr ""
17532
 
17533
+ #: includes/settings/wcj-settings-wholesale-price.php:36
17534
  msgid "Total cart quantity (wholesale products only)"
17535
  msgstr ""
17536
 
17537
+ #: includes/settings/wcj-settings-wholesale-price.php:37
17538
  msgid "Total cart quantity"
17539
  msgstr ""
17540
 
17541
+ #: includes/settings/wcj-settings-wholesale-price.php:41
17542
  msgid "Exclusive Use Only"
17543
  msgstr ""
17544
 
17545
+ #: includes/settings/wcj-settings-wholesale-price.php:43
17546
  msgid "Apply wholesale discount only if no other cart discounts were applied."
17547
  msgstr ""
17548
 
17549
+ #: includes/settings/wcj-settings-wholesale-price.php:49
17550
  msgid "Round Single Product Price"
17551
  msgstr ""
17552
 
17553
+ #: includes/settings/wcj-settings-wholesale-price.php:50
17554
  msgid ""
17555
  "If enabled will round single product price with precision set in WooCommerce "
17556
  "> Settings > General > Number of decimals."
17557
  msgstr ""
17558
 
17559
+ #: includes/settings/wcj-settings-wholesale-price.php:57
17560
  msgid "Discount Info on Cart Page"
17561
  msgstr ""
17562
 
17563
+ #: includes/settings/wcj-settings-wholesale-price.php:64
17564
  msgid "If show discount info on cart page is enabled, set format here."
17565
  msgstr ""
17566
 
17567
+ #: includes/settings/wcj-settings-wholesale-price.php:72
17568
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
17569
  msgid "Discount Type"
17570
  msgstr ""
17571
 
17572
+ #: includes/settings/wcj-settings-wholesale-price.php:113
17573
  msgid "Disable wholesale pricing for products with \"Price Changes\""
17574
  msgstr ""
17575
 
17576
+ #: includes/settings/wcj-settings-wholesale-price.php:131
17577
  msgid "Wholesale Levels Options"
17578
  msgstr ""
17579
 
17580
+ #: includes/settings/wcj-settings-wholesale-price.php:136
17581
+ #: includes/settings/wcj-settings-wholesale-price.php:193
17582
  msgid "Number of Levels"
17583
  msgstr ""
17584
 
17585
+ #: includes/settings/wcj-settings-wholesale-price.php:150
17586
+ #: includes/settings/wcj-settings-wholesale-price.php:207
17587
  msgid "Min Quantity"
17588
  msgstr ""
17589
 
17590
+ #: includes/settings/wcj-settings-wholesale-price.php:151
17591
+ #: includes/settings/wcj-settings-wholesale-price.php:208
17592
  msgid "Minimum quantity to apply discount"
17593
  msgstr ""
17594
 
17595
+ #: includes/settings/wcj-settings-wholesale-price.php:158
17596
+ #: includes/settings/wcj-settings-wholesale-price.php:159
17597
+ #: includes/settings/wcj-settings-wholesale-price.php:215
17598
+ #: includes/settings/wcj-settings-wholesale-price.php:216
17599
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
17600
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
17601
  msgid "Discount"
17602
  msgstr ""
17603
 
17604
+ #: includes/settings/wcj-settings-wholesale-price.php:173
17605
  msgid "Additional User Roles Options"
17606
  msgstr ""
17607
 
17608
+ #: includes/settings/wcj-settings-wholesale-price.php:175
17609
  msgid ""
17610
  "If you want to set different wholesale pricing options for different user "
17611
  "roles, fill this section. Please note that you can also use Booster's "
17612
  "\"Price based on User Role\" module without filling this section."
17613
  msgstr ""
17614
 
17615
+ #: includes/settings/wcj-settings-wholesale-price.php:179
17616
  msgid "User Roles Settings"
17617
  msgstr ""
17618
 
18087
  msgid "In stock"
18088
  msgstr ""
18089
 
18090
+ #: includes/templates/wcj-radio-for-variations.php:16
18091
  msgid "This product is currently out of stock and unavailable."
18092
  msgstr ""
18093
 
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: algoritmika, anbinder, debugeris, karzin
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
- Tested up to: 5.0
6
- Stable tag: 4.2.0
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -122,6 +122,7 @@ Booster for WooCommerce is a WordPress WooCommerce plugin that supercharges your
122
  * *Shipping Methods by City or Postcode* - Set shipping cities or postcodes to include/exclude for shipping methods to show up.
123
  * *Shipping Methods by Current Date/Time* - Set date and/or time to include/exclude for shipping methods to show up.
124
  * *Shipping Methods by Min/Max Order Amount* - Set minimum and/or maximum order amount for shipping methods to show up.
 
125
  * *Shipping Methods by Products* - Set products, product categories, tags or shipping classes to include/exclude for shipping methods to show up.
126
  * *Shipping Methods by Users* - Set user roles, users or membership plans to include/exclude for shipping methods to show up.
127
  * *Shipping Options* - Hide shipping when free is available. Grant free shipping on per product basis.
@@ -192,6 +193,50 @@ You can see the differences between versions in this [table](https://booster.io/
192
 
193
  == Changelog ==
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  = 4.2.0 - 06/02/2019 =
196
  * Feature - PRICES & CURRENCIES - Offer Your Price - Enable - "Enable per product and per product category" option added.
197
  * Feature - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Advanced: Multicurrency (Currency Switcher) Module" option added (i.e. "Allow price entering in switched currency").
2
  Contributors: algoritmika, anbinder, debugeris, karzin
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
+ Tested up to: 5.1
6
+ Stable tag: 4.3.0
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
122
  * *Shipping Methods by City or Postcode* - Set shipping cities or postcodes to include/exclude for shipping methods to show up.
123
  * *Shipping Methods by Current Date/Time* - Set date and/or time to include/exclude for shipping methods to show up.
124
  * *Shipping Methods by Min/Max Order Amount* - Set minimum and/or maximum order amount for shipping methods to show up.
125
+ * *Shipping Methods by Min/Max Order Quantity* - Set minimum and/or maximum order quantity for shipping methods to show up.
126
  * *Shipping Methods by Products* - Set products, product categories, tags or shipping classes to include/exclude for shipping methods to show up.
127
  * *Shipping Methods by Users* - Set user roles, users or membership plans to include/exclude for shipping methods to show up.
128
  * *Shipping Options* - Hide shipping when free is available. Grant free shipping on per product basis.
193
 
194
  == Changelog ==
195
 
196
+ = 4.3.0 - 16/04/2019 =
197
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Fix PHP warning about headers already sent.
198
+ * Fix - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Improve compatibility with Add-ons plugin.
199
+ * Fix - PRICES & CURRENCIES - Offer Your Price - Check if `$_product` really exists on `offer_price()`.
200
+ * Fix - PRICES & CURRENCIES - Replace `woocommerce_before_main_content` hook by `wp_footer` for adding the form on frontend as some themes don't use the original hook.
201
+ * Fix - PRODUCTS - Add to Cart - Fix compatibility between Order Min/Max Quantities and radio buttons for variations.
202
+ * Fix - CART & CHECKOUT - Checkout Custom Fields - Fix some special characters (e.g Russian) being wiped out on checkout by using `urldecode()`.
203
+ * Fix - CART & CHECKOUT - Checkout Custom Fields - Display field value instead of key when using radio or select as fields.
204
+ * Fix - CART & CHECKOUT - EU VAT Number - Default EU VAT number value on the checkout page fixed.
205
+ * Fix - PAYMENT GATEWAYS - Gateways Currency Converter - Replace commas by periods on `change_price_by_gateway()` avoiding wrong calculations.
206
+ * Fix - PDF INVOICING & PACKING SLIPS - Check if TCPDF class exists before loading it, avoiding possible errors with other plugins.
207
+ * Fix - PDF INVOICING & PACKING SLIPS - Fix Too many redirects when using Generate Invoice from Bulk actions.
208
+ * Fix - PDF INVOICING & PACKING SLIPS - Fix "Failed to load PDF document" in some environments by putting the pdf inside buffer instead of displaying it directly.
209
+ * Fix - Functions - Admin - Make `wcj_get_settings_as_multiselect_or_text()` compatible with `wcj_get_ajax_settings()`.
210
+ * Fix - Functions - Booster Core - `wcj_is_module_enabled()` - Checking if it is a REST API call before requiring `pluggable.php`.
211
+ * Fix - Functions - Exchange Rates - Fix 'Division by zero' PHP warning.
212
+ * Fix - Functions - Exchange Rates - Ignore warnings from `simplexml_load_file()` depending on WP_DEBUG constant.
213
+ * Fix - Functions - General - `wcj_session_maybe_start()` Improve session detection method.
214
+ * Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Add compatibility with Smart Coupons plugin.
215
+ * Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Add compatibility with WooCommerce Price Filter widget.
216
+ * Dev - PRICES & CURRENCIES - Wholesale Price - Add ajax search to Product fields.
217
+ * Dev - PRODUCTS - Add to Cart - Add radio inputs template using `woocommerce_before_variations_form` hook instead of replacing the entire add-to-cart/variable.php.
218
+ * Dev - PRODUCTS - Add to Cart - Change radio buttons for variations mechanism. Now the native WooCommerce dropdown for variations will be on DOM but hidden. That will make some js functions unnecessary like `maybe_hide_unavailable()`.
219
+ * Dev - PRODUCTS - Add to Cart - Add attributes label on top of the radio inputs table.
220
+ * Dev - PRODUCTS - Bookings - Add loader on frontend while ajax is loading.
221
+ * Dev - PRODUCTS - Bookings - Add bookings price beneath dates table instead of replacing prices avoiding possible duplicated prices.
222
+ * Dev - PRODUCTS - Bookings - Add new option to enable/disable the variable product calculation per day.
223
+ * Dev - PRODUCTS - Product Images - Add options to control the callback and priority from some hooks.
224
+ * Dev - PRODUCTS - Product Info Settings - Add ajax search to Product fields.
225
+ * Dev - PRODUCTS - Product Input Fields - Add ajax search to Product fields.
226
+ * Dev - PRODUCTS - Sorting - Add new option to restore default WooCommerce Sorting on Avada theme.
227
+ * Dev - SHIPPING & ORDERS - Left to Free Shipping - Info on Checkout - "Order review: Before shipping" and "Order review: After shipping" positions added.
228
+ * Dev - SHIPPING & ORDERS - Shipping Methods by Min/Max Order Quantity - Initial module release.
229
+ * Dev - PDF INVOICING & PACKING SLIPS - Update WordPress filters used to create bulk actions.
230
+ * Dev - PDF INVOICING & PACKING SLIPS - Add security check `check_admin_referer( 'bulk-posts' )` on `bulk_actions_handle()`.
231
+ * Dev - PDF INVOICING & PACKING SLIPS - Tools - Invoices Report - `wcj_pdf_invoicing_report_tool_row` filter added.
232
+ * Dev - EMAILS & MISC. - My Account - "Custom Menu Pages" section added.
233
+ * Dev - Functions - Admin - Add `wcj_get_ajax_settings()` making it possible to search products and categories by ajax.
234
+ * Dev - Functions - General - Add option to include `read_and_close` parameter to `session_start`.
235
+ * Dev - Functions - General - Sanitize IP Detection methods on `wcj_get_the_ip()`.
236
+ * Dev - Functions - General - Add option to increase control over IP Detection methods.
237
+ * Dev - Booster Module - `maybe_fix_settings()` adds 'wc-enhanced-select' class only if 'remove_class' parameter is not present.
238
+ * Dev - Shortcodes - General - `[wcj_country_select_drop_down_list]` shortcode will be hidden if Prices and Currencies by Country module is not enabled, unless parameter `force_display` have been passed as `true`.
239
+
240
  = 4.2.0 - 06/02/2019 =
241
  * Feature - PRICES & CURRENCIES - Offer Your Price - Enable - "Enable per product and per product category" option added.
242
  * Feature - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Advanced: Multicurrency (Currency Switcher) Module" option added (i.e. "Allow price entering in switched currency").
woocommerce-jetpack.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Booster for WooCommerce
4
  Plugin URI: https://booster.io
5
  Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.
6
- Version: 4.2.0
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
@@ -57,7 +57,7 @@ final class WC_Jetpack {
57
  * @var string
58
  * @since 2.4.7
59
  */
60
- public $version = '4.2.0';
61
 
62
  /**
63
  * @var WC_Jetpack The single instance of the class
3
  Plugin Name: Booster for WooCommerce
4
  Plugin URI: https://booster.io
5
  Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.
6
+ Version: 4.3.0
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
57
  * @var string
58
  * @since 2.4.7
59
  */
60
+ public $version = '4.3.0';
61
 
62
  /**
63
  * @var WC_Jetpack The single instance of the class