Advanced AJAX Product Filters - Version 1.1.4

Version Description

  • Enhancement - Russian translation
  • Fix - Translation
  • Fix - Network activation
  • Fix - Displaying of filter with price
  • Fix - Get normal min/max prices for filter with price
  • Fix - Widgets displays incorrect with some themes
  • Fix - Not filtering with some plugins
  • Fix - Scrollbar displays incorrect with some themes
Download this release

Release Info

Developer dholovnia
Plugin Icon wp plugin Advanced AJAX Product Filters
Version 1.1.4
Comparing to
See all releases

Code changes from version 1.1.3 to 1.1.4

README.md CHANGED
@@ -5,7 +5,7 @@ Donate link: http://berocket.com
5
  Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
  Requires at least: 4.0
7
  Tested up to: 4.4
8
- Stable tag: 1.1.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -139,6 +139,16 @@ http://woocommerce-product-filter.berocket.com
139
 
140
  == Changelog ==
141
 
 
 
 
 
 
 
 
 
 
 
142
  = 1.1.3 =
143
  * Enhancement - load only products from last AJAX request
144
  * Enhancement - Uses HTML for widgets from theme
5
  Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
  Requires at least: 4.0
7
  Tested up to: 4.4
8
+ Stable tag: 1.1.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
139
 
140
  == Changelog ==
141
 
142
+ = 1.1.4 =
143
+ * Enhancement - Russian translation
144
+ * Fix - Translation
145
+ * Fix - Network activation
146
+ * Fix - Displaying of filter with price
147
+ * Fix - Get normal min/max prices for filter with price
148
+ * Fix - Widgets displays incorrect with some themes
149
+ * Fix - Not filtering with some plugins
150
+ * Fix - Scrollbar displays incorrect with some themes
151
+
152
  = 1.1.3 =
153
  * Enhancement - load only products from last AJAX request
154
  * Enhancement - Uses HTML for widgets from theme
includes/widget.php CHANGED
@@ -3,11 +3,12 @@
3
  define('BEROCKETAAPF', 'BeRocket_AAPF_Widget');
4
 
5
  /* Widget */
 
6
  function BeRocket_AAPF_load_widgets() {
7
  register_widget( 'BeRocket_AAPF_widget' );
8
  }
9
  require_once dirname( __FILE__ ).'/functions.php';
10
- if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) && br_get_woocommerce_version() >= 2.1 ) {
11
  add_action( 'widgets_init', 'BeRocket_AAPF_load_widgets' );
12
  add_action( 'wp_ajax_nopriv_berocket_aapf_listener', array( 'BeRocket_AAPF_Widget', 'listener' ) );
13
  add_action( 'wp_ajax_berocket_aapf_listener', array( 'BeRocket_AAPF_Widget', 'listener' ) );
@@ -24,16 +25,16 @@ class BeRocket_AAPF_Widget extends WP_Widget {
24
  function BeRocket_AAPF_Widget() {
25
  global $wp_version;
26
  /* Widget settings. */
27
- $widget_ops = array( 'classname' => 'widget_berocket_aapf', 'description' => __('Add Filters to Products page', BeRocket_AJAX_domain) );
28
 
29
  /* Widget control settings. */
30
  $control_ops = array( 'id_base' => 'berocket_aapf_widget' );
31
 
32
  /* Create the widget. */
33
  if( strcmp( $wp_version, '4.3') < 0 ) {
34
- $this->WP_Widget( 'berocket_aapf_widget', __('AJAX Product Filters', BeRocket_AJAX_domain), $widget_ops, $control_ops );
35
  } else {
36
- $this->__construct( 'berocket_aapf_widget', __('AJAX Product Filters', BeRocket_AJAX_domain), $widget_ops, $control_ops );
37
  }
38
 
39
  add_filter( 'berocket_aapf_listener_wp_query_args', 'br_aapf_args_parser' );
@@ -47,7 +48,8 @@ class BeRocket_AAPF_Widget extends WP_Widget {
47
  */
48
  function widget( $args, $instance ) {
49
  $br_options = apply_filters( 'berocket_aapf_listener_br_options', get_option('br_filters_options') );
50
- if( @ $br_options['filters_turn_off'] || is_product() ) return false;
 
51
 
52
  global $wp_query, $wp, $sitepress;
53
 
@@ -305,27 +307,66 @@ class BeRocket_AAPF_Widget extends WP_Widget {
305
 
306
  public static function get_price_range( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items ){
307
  global $wp_query;
 
308
  $wp_query_product_cat_save = $wp_query;
309
- $products = BeRocket_AAPF_Widget::get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, false );
310
- $wp_query = $wp_query_product_cat_save;
311
- unset( $wp_query_product_cat_save );
312
  $price_range = array();
313
-
314
- foreach ( $products as $ID ) {
315
- $meta_values = get_post_meta( $ID, '_price' );
316
- if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
317
- $price_range[] = $meta_values[0];
318
- }
319
- $product_variation = get_children ( array ( 'post_parent' => $ID, 'post_type' => 'product_variation', 'numberposts' => -1, 'post_status' => 'any' ) );
320
- if ( is_array( $product_variation ) ) {
321
- foreach ( $product_variation as $variation ) {
322
- $meta_values = get_post_meta( $variation->ID, '_price' );
323
- if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
324
- $price_range[] = $meta_values[0];
 
 
325
  }
326
  }
327
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  }
 
 
 
 
329
 
330
  if ( @ count( $price_range ) < 2 ) {
331
  $price_range = false;
@@ -344,12 +385,12 @@ class BeRocket_AAPF_Widget extends WP_Widget {
344
  $q_args['posts_per_page'] = 2000;
345
  $q_args['post__in'] = '';
346
  $q_args['tax_query'] = '';
347
- $q_args['product_tag'] = '';
348
  $q_args['taxonomy'] = '';
349
  $q_args['term'] = '';
350
  $q_args['meta_query'] = '';
351
  $q_args['attribute'] = '';
352
  $q_args['title'] = '';
 
353
  $q_args['fields'] = 'ids';
354
  $paged = 1;
355
  do{
3
  define('BEROCKETAAPF', 'BeRocket_AAPF_Widget');
4
 
5
  /* Widget */
6
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
7
  function BeRocket_AAPF_load_widgets() {
8
  register_widget( 'BeRocket_AAPF_widget' );
9
  }
10
  require_once dirname( __FILE__ ).'/functions.php';
11
+ if ( ( is_plugin_active( 'woocommerce/woocommerce.php' ) || is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) && br_get_woocommerce_version() >= 2.1 ) {
12
  add_action( 'widgets_init', 'BeRocket_AAPF_load_widgets' );
13
  add_action( 'wp_ajax_nopriv_berocket_aapf_listener', array( 'BeRocket_AAPF_Widget', 'listener' ) );
14
  add_action( 'wp_ajax_berocket_aapf_listener', array( 'BeRocket_AAPF_Widget', 'listener' ) );
25
  function BeRocket_AAPF_Widget() {
26
  global $wp_version;
27
  /* Widget settings. */
28
+ $widget_ops = array( 'classname' => 'widget_berocket_aapf', 'description' => __('Add Filters to Products page', 'BeRocket_AJAX_domain') );
29
 
30
  /* Widget control settings. */
31
  $control_ops = array( 'id_base' => 'berocket_aapf_widget' );
32
 
33
  /* Create the widget. */
34
  if( strcmp( $wp_version, '4.3') < 0 ) {
35
+ $this->WP_Widget( 'berocket_aapf_widget', __('AJAX Product Filters', 'BeRocket_AJAX_domain'), $widget_ops, $control_ops );
36
  } else {
37
+ $this->__construct( 'berocket_aapf_widget', __('AJAX Product Filters', 'BeRocket_AJAX_domain'), $widget_ops, $control_ops );
38
  }
39
 
40
  add_filter( 'berocket_aapf_listener_wp_query_args', 'br_aapf_args_parser' );
48
  */
49
  function widget( $args, $instance ) {
50
  $br_options = apply_filters( 'berocket_aapf_listener_br_options', get_option('br_filters_options') );
51
+
52
+ if( @ $br_options['filters_turn_off'] || ( ! is_shop() && ! is_product_category() && ! is_product_taxonomy() && ! is_product_tag() ) ) return false;
53
 
54
  global $wp_query, $wp, $sitepress;
55
 
307
 
308
  public static function get_price_range( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items ){
309
  global $wp_query;
310
+ $br_options = apply_filters( 'berocket_aapf_listener_br_options', get_option('br_filters_options') );
311
  $wp_query_product_cat_save = $wp_query;
 
 
 
312
  $price_range = array();
313
+ if( @ $br_options['show_all_values'] ) {
314
+ $products = BeRocket_AAPF_Widget::get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, false );
315
+ foreach ( $products as $ID ) {
316
+ $meta_values = get_post_meta( $ID, '_price' );
317
+ if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
318
+ $price_range[] = $meta_values[0];
319
+ }
320
+ $product_variation = get_children ( array ( 'post_parent' => $ID, 'post_type' => 'product_variation', 'numberposts' => -1, 'post_status' => 'any' ) );
321
+ if ( is_array( $product_variation ) ) {
322
+ foreach ( $product_variation as $variation ) {
323
+ $meta_values = get_post_meta( $variation->ID, '_price' );
324
+ if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
325
+ $price_range[] = $meta_values[0];
326
+ }
327
  }
328
  }
329
  }
330
+ } else {
331
+ $q_args = $wp_query->query_vars;
332
+ $q_args['posts_per_page'] = 2000;
333
+ $q_args['post__in'] = '';
334
+ $q_args['tax_query'] = '';
335
+ $q_args['taxonomy'] = '';
336
+ $q_args['term'] = '';
337
+ $q_args['meta_query'] = '';
338
+ $q_args['attribute'] = '';
339
+ $q_args['title'] = '';
340
+ $q_args['post_type'] = 'product';
341
+ $q_args['fields'] = 'ids';
342
+ $paged = 1;
343
+ do{
344
+ $q_args['paged'] = $paged;
345
+ $the_query = new WP_Query($q_args);
346
+ if ( $the_query->have_posts() ) {
347
+ foreach ( $the_query->posts as $ID ) {
348
+ $meta_values = get_post_meta( $ID, '_price' );
349
+ if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
350
+ $price_range[] = $meta_values[0];
351
+ }
352
+ $product_variation = get_children ( array ( 'post_parent' => $ID, 'post_type' => 'product_variation', 'numberposts' => -1, 'post_status' => 'any' ) );
353
+ if ( is_array( $product_variation ) ) {
354
+ foreach ( $product_variation as $variation ) {
355
+ $meta_values = get_post_meta( $variation->ID, '_price' );
356
+ if ( $meta_values[0] or $woocommerce_hide_out_of_stock_items != 'yes' ) {
357
+ $price_range[] = $meta_values[0];
358
+ }
359
+ }
360
+ }
361
+ }
362
+ }
363
+ $paged++;
364
+ } while($paged <= $the_query->max_num_pages);
365
  }
366
+ $wp_query = $wp_query_product_cat_save;
367
+ unset( $wp_query_product_cat_save );
368
+
369
+ $price_range = array_unique( $price_range );
370
 
371
  if ( @ count( $price_range ) < 2 ) {
372
  $price_range = false;
385
  $q_args['posts_per_page'] = 2000;
386
  $q_args['post__in'] = '';
387
  $q_args['tax_query'] = '';
 
388
  $q_args['taxonomy'] = '';
389
  $q_args['term'] = '';
390
  $q_args['meta_query'] = '';
391
  $q_args['attribute'] = '';
392
  $q_args['title'] = '';
393
+ $q_args['post_type'] = 'product';
394
  $q_args['fields'] = 'ids';
395
  $paged = 1;
396
  do{
js/widget.min.js CHANGED
@@ -169,6 +169,11 @@
169
  update_data_containers();
170
  update_selected_area();
171
 
 
 
 
 
 
172
  args = {
173
  current_language: the_ajax_script.current_language,
174
  terms: berocket_aapf_widget_product_filters,
@@ -177,7 +182,7 @@
177
  product_cat: the_ajax_script.product_cat,
178
  product_taxonomy: the_ajax_script.product_taxonomy,
179
  action: 'berocket_aapf_listener',
180
- orderby: $('.woocommerce-ordering select.orderby').val()
181
  };
182
 
183
  if( the_ajax_script.seo_friendly_urls && 'history' in window && 'pushState' in history ) {
@@ -431,6 +436,7 @@
431
  return uri;
432
  } else {
433
  var stateParameters = { BeRocket: "Rules" };
 
434
  history.pushState(stateParameters, "BeRocket Rules", uri);
435
  history.pathname = uri;
436
  }
@@ -468,17 +474,21 @@
468
  $('.berocket_aapf_widget').on("change", "input, select", function(){
469
  if($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio')
470
  {
471
- $label = $(this).parents('li').find('.berocket_label_widgets');
472
- if( $label.parents('li').find('input').prop('checked')) {
473
- $('.'+$label.attr('for')).prop('checked', false);
474
- $('.'+$label.attr('for')).parents('li').removeClass('berocket_hide_sel_value');
 
 
475
  } else {
476
  $('.'+$label.attr('for')).prop('checked', true);
477
- if( $label.parents('li').find('input').attr('type') == 'radio' ) {
478
  $('.'+$label.attr('for')).parents('.berocket_aapf_widget').find('li').removeClass('berocket_hide_sel_value');
479
  }
480
  if( the_ajax_script.hide_sel_value ) {
481
- $('.'+$label.attr('for')).parents('li').addClass('berocket_hide_sel_value');
 
 
482
  }
483
  $label.addClass('berocket_checked');
484
  }
@@ -496,12 +506,16 @@
496
  {
497
  $('.'+$label.attr('for')).prop('checked', true).trigger('refresh');
498
  if( the_ajax_script.hide_sel_value ) {
499
- $('.'+$label.attr('for')).parents('li').addClass('berocket_hide_sel_value');
 
 
500
  }
501
  }
502
  else
503
  {
504
- $('.'+$label.attr('for')).prop('checked', false).trigger('refresh').parents('li').removeClass('berocket_hide_sel_value');
 
 
505
  }
506
  } else if($(this).is('select'))
507
  {
@@ -544,7 +558,7 @@
544
 
545
  $(".berocket_aapf_widget_height_control").each(function (i,o){
546
  $(o).mCustomScrollbar({
547
- axis: "xy",
548
  theme: $(o).data('scroll_theme'),
549
  scrollInertia: 300
550
  });
@@ -624,6 +638,11 @@
624
  $(this).find('span').removeClass('show_button').addClass('hide_button');
625
  }
626
  });
 
 
 
 
 
627
  });
628
  })(jQuery);
629
 
169
  update_data_containers();
170
  update_selected_area();
171
 
172
+ var orderby = the_ajax_script.default_sorting;
173
+ if ( $('.woocommerce-ordering select.orderby').length > 0 ) {
174
+ orderby = $('.woocommerce-ordering select.orderby').val();
175
+ }
176
+
177
  args = {
178
  current_language: the_ajax_script.current_language,
179
  terms: berocket_aapf_widget_product_filters,
182
  product_cat: the_ajax_script.product_cat,
183
  product_taxonomy: the_ajax_script.product_taxonomy,
184
  action: 'berocket_aapf_listener',
185
+ orderby: orderby
186
  };
187
 
188
  if( the_ajax_script.seo_friendly_urls && 'history' in window && 'pushState' in history ) {
436
  return uri;
437
  } else {
438
  var stateParameters = { BeRocket: "Rules" };
439
+ history.replaceState(stateParameters, "BeRocket Rules");
440
  history.pushState(stateParameters, "BeRocket Rules", uri);
441
  history.pathname = uri;
442
  }
474
  $('.berocket_aapf_widget').on("change", "input, select", function(){
475
  if($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio')
476
  {
477
+ $label = $(this).parents('li').first().find('.berocket_label_widgets');
478
+ if( $label.parents('li').first().find('input').prop('checked')) {
479
+ $('.'+$label.attr('for')).each(function( i2, o2 ) {
480
+ $(o2).prop('checked', false);
481
+ $(o2).parents('li').first().removeClass('berocket_hide_sel_value');
482
+ });
483
  } else {
484
  $('.'+$label.attr('for')).prop('checked', true);
485
+ if( $label.parents('li').first().find('input').attr('type') == 'radio' ) {
486
  $('.'+$label.attr('for')).parents('.berocket_aapf_widget').find('li').removeClass('berocket_hide_sel_value');
487
  }
488
  if( the_ajax_script.hide_sel_value ) {
489
+ $('.'+$label.attr('for')).each(function( i2, o2 ) {
490
+ $(o2).parents('li').first().addClass('berocket_hide_sel_value');
491
+ });
492
  }
493
  $label.addClass('berocket_checked');
494
  }
506
  {
507
  $('.'+$label.attr('for')).prop('checked', true).trigger('refresh');
508
  if( the_ajax_script.hide_sel_value ) {
509
+ $('.'+$label.attr('for')).each(function( i2, o2 ) {
510
+ $(o2).parents('li').first().addClass('berocket_hide_sel_value');
511
+ });
512
  }
513
  }
514
  else
515
  {
516
+ $('.'+$label.attr('for')).prop('checked', false).trigger('refresh').each(function( i2, o2 ) {
517
+ $(o2).parents('li').first().removeClass('berocket_hide_sel_value');
518
+ });
519
  }
520
  } else if($(this).is('select'))
521
  {
558
 
559
  $(".berocket_aapf_widget_height_control").each(function (i,o){
560
  $(o).mCustomScrollbar({
561
+ axis: "y",
562
  theme: $(o).data('scroll_theme'),
563
  scrollInertia: 300
564
  });
638
  $(this).find('span').removeClass('show_button').addClass('hide_button');
639
  }
640
  });
641
+ window.onpopstate = function(event) {
642
+ if ( event.state != null && event.state.BeRocket == 'Rules' ) {
643
+ location.reload();
644
+ }
645
+ };
646
  });
647
  })(jQuery);
648
 
languages/BeRocket_AJAX_domain-ru_RU.mo ADDED
Binary file
languages/BeRocket_AJAX_domain-ru_RU.po ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Advanced AJAX Product Filters for WooCommerce\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: Thu Feb 11 2016 10:53:27 GMT+0200 (EET)\n"
6
+ "PO-Revision-Date: Thu Feb 11 2016 11:32:11 GMT+0200 (EET)\n"
7
+ "Last-Translator: RazyRx <djcrazysait@mail.ru>\n"
8
+ "Language-Team: \n"
9
+ "Language: Russian\n"
10
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11
+ "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-Basepath: .\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
19
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
20
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
21
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
22
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
23
+ "X-Generator: Loco - https://localise.biz/\n"
24
+ "X-Loco-Target-Locale: ru_RU"
25
+
26
+ #. Name of the plugin
27
+ msgid "Advanced AJAX Product Filters for WooCommerce"
28
+ msgstr "dvanced AJAX Product Filters for WooCommerce"
29
+
30
+ #. URI of the plugin
31
+ msgid "http://berocket.com/wp-plugins/product-filters"
32
+ msgstr "http://berocket.com/wp-plugins/product-filters"
33
+
34
+ #. Author of the plugin
35
+ msgid "BeRocket"
36
+ msgstr "BeRocket"
37
+
38
+ #. Author URI of the plugin
39
+ msgid "http://berocket.com"
40
+ msgstr "http://berocket.com"
41
+
42
+ #: ../woocommerce-filters.php:84
43
+ msgid "Activate WooCommerce plugin before"
44
+ msgstr "Сначала активируйте плагин WooCommerce"
45
+
46
+ #: ../woocommerce-filters.php:92
47
+ msgid "Update WooCommerce plugin"
48
+ msgstr "Обновите плагин WooCommerce"
49
+
50
+ #: ../woocommerce-filters.php:98
51
+ msgid "Product Filters Settings"
52
+ msgstr "Product Filters Настройки"
53
+
54
+ #: ../woocommerce-filters.php:98
55
+ msgid "Product Filters"
56
+ msgstr "Product Filters"
57
+
58
+ #: ../includes/widget.php:27
59
+ msgid "Add Filters to Products page"
60
+ msgstr "Добавляет фильтры на страницы с продуктами"
61
+
62
+ #: ../includes/widget.php:34 ../includes/widget.php:36
63
+ msgid "AJAX Product Filters"
64
+ msgstr "AJAX Product Filters"
65
+
66
+ #: ../templates/admin.php:2
67
+ msgid "Widget Type:"
68
+ msgstr "Тип Виджета:"
69
+
70
+ #: ../templates/admin.php:4
71
+ msgid "Filter"
72
+ msgstr "Фильтр"
73
+
74
+ #: ../templates/admin.php:5
75
+ msgid "Update Products button"
76
+ msgstr "Кнопка обновления продуктов"
77
+
78
+ #: ../templates/admin.php:13
79
+ msgid "Title:"
80
+ msgstr "Название:"
81
+
82
+ #: ../templates/admin.php:18
83
+ msgid "Attribute:"
84
+ msgstr "Атрибут:"
85
+
86
+ #: ../templates/admin.php:20
87
+ msgid "Price"
88
+ msgstr "Цена"
89
+
90
+ #: ../templates/admin.php:28
91
+ msgid "Type:"
92
+ msgstr "Тип:"
93
+
94
+ #: ../templates/admin.php:41
95
+ msgid "Operator:"
96
+ msgstr "Оператор:"
97
+
98
+ #: ../templates/admin.php:57
99
+ msgid "Advanced Settings"
100
+ msgstr "Продвинутые настройки"
101
+
102
+ #: ../templates/admin.php:61
103
+ msgid "CSS Class:"
104
+ msgstr "CSS класс:"
105
+
106
+ #: ../templates/admin.php:66
107
+ msgid "Product Category:"
108
+ msgstr "Категория продуктов:"
109
+
110
+ #: ../templates/admin.php:69
111
+ msgid "include subcats?"
112
+ msgstr "включить подкатегории?"
113
+
114
+ #: ../templates/admin.php:96
115
+ msgid "Filter Box Height:"
116
+ msgstr "Высота блока с фильтром:"
117
+
118
+ #: ../templates/admin.php:100
119
+ msgid "Scroll Theme:"
120
+ msgstr "Тема для прокрутки:"
121
+
122
+ #: ../templates/admin-settings.php:9
123
+ msgid "General"
124
+ msgstr "Основные"
125
+
126
+ #: ../templates/admin-settings.php:10
127
+ msgid "Design"
128
+ msgstr "Дизайн"
129
+
130
+ #: ../templates/admin-settings.php:11
131
+ msgid "JavaScript"
132
+ msgstr "JavaScript"
133
+
134
+ #: ../templates/admin-settings.php:12
135
+ msgid "Custom CSS"
136
+ msgstr "Пользовательские CSS"
137
+
138
+ #: ../templates/admin-settings.php:17
139
+ msgid "\"No Products\" message"
140
+ msgstr "Сообщение \"Нет продуктов\""
141
+
142
+ #: ../templates/admin-settings.php:21
143
+ msgid "Text that will be shown if no products found"
144
+ msgstr "Текст, которые будет отображаться, если не будет найдено продуктов"
145
+
146
+ #: ../templates/admin-settings.php:25
147
+ msgid "\"No Products\" class"
148
+ msgstr "Класс для сообщения \"Нет продуктов\""
149
+
150
+ #: ../templates/admin-settings.php:29
151
+ msgid "Add class and use it to style \"No Products\" box"
152
+ msgstr ""
153
+ "Добавьте класс и используйте его, что бы стилизовать сообщение \"Нет "
154
+ "продуктов\""
155
+
156
+ #: ../templates/admin-settings.php:33
157
+ msgid "Products selector"
158
+ msgstr "Селектор для блока с продуктами"
159
+
160
+ #: ../templates/admin-settings.php:37
161
+ msgid ""
162
+ "Selector for tag that is holding products. Don't change this if you don't "
163
+ "know what it is"
164
+ msgstr ""
165
+ "Селектор для блока, в котором находятся все продукты. Не меняйте, если вы не "
166
+ "знаете для чего это."
167
+
168
+ #: ../templates/admin-settings.php:41
169
+ msgid "Sorting control"
170
+ msgstr "Управлять сортировкой"
171
+
172
+ #: ../templates/admin-settings.php:44
173
+ msgid "Take control over WooCommerce's sorting selectbox?"
174
+ msgstr "Взять контроль над выпадающим списком для сортировки продуктов?"
175
+
176
+ #: ../templates/admin-settings.php:48
177
+ msgid "SEO friendly urls"
178
+ msgstr "Ссылки дружественные к SEO"
179
+
180
+ #: ../templates/admin-settings.php:51
181
+ msgid "If this option is on url will be changed when filter is selected/changed"
182
+ msgstr ""
183
+ "Если эта опция включена, то ссылка будет меняться при выборе/изменении "
184
+ "фильтров"
185
+
186
+ #: ../templates/admin-settings.php:55
187
+ msgid "Turn all filters off"
188
+ msgstr "Выключить все фильтры"
189
+
190
+ #: ../templates/admin-settings.php:58
191
+ msgid ""
192
+ "If you want to hide filters without losing current configuration just turn "
193
+ "them off"
194
+ msgstr "Если вы хотите убрать все фильтры и не потерять текущие настройки"
195
+
196
+ #: ../templates/admin-settings.php:62
197
+ msgid "Show all values"
198
+ msgstr "Показать все значения"
199
+
200
+ #: ../templates/admin-settings.php:65
201
+ msgid "Check if you want to show not used attribute values too"
202
+ msgstr "Если вы хотите показать все значения, включая не используемые"
203
+
204
+ #: ../templates/admin-settings.php:69
205
+ msgid "Hide values"
206
+ msgstr "Спрятать значения"
207
+
208
+ #: ../templates/admin-settings.php:72
209
+ msgid "Hide values without products"
210
+ msgstr "Спрятать значения без продуктов"
211
+
212
+ #: ../templates/admin-settings.php:74
213
+ msgid "Hide selected values"
214
+ msgstr "Спрятать выбранные значения"
215
+
216
+ #: ../templates/admin-settings.php:79
217
+ msgid "Jump to first page"
218
+ msgstr "Открывать первую страницу"
219
+
220
+ #: ../templates/admin-settings.php:82
221
+ msgid "Check if you want load first page after filters change"
222
+ msgstr "Выберите если хотите, что бы открывалась первая страница после фильтрации"
223
+
224
+ #: ../templates/admin-settings.php:93
225
+ msgid "Template ajax load fix"
226
+ msgstr "Исправление для AJAX загрузки"
227
+
228
+ #: ../templates/admin-settings.php:96
229
+ msgid ""
230
+ "Use all plugins on ajax load (can fix visual issues but slow down products "
231
+ "loading)"
232
+ msgstr ""
233
+ "Использует все плагины при загрузке страницы (может замедлить загрузку "
234
+ "продуктов)"
235
+
236
+ #: ../templates/admin-settings.php:109
237
+ msgid "Before Update:"
238
+ msgstr "Перед Обновлением"
239
+
240
+ #: ../templates/admin-settings.php:113
241
+ msgid "If you want to add own actions on filter activation, eg: alert('1');"
242
+ msgstr ""
243
+ "Если вам нужно добавить действие при изменении фильтров. Например: "
244
+ "alert('1');"
245
+
246
+ #: ../templates/admin-settings.php:117
247
+ msgid "On Update:"
248
+ msgstr "Во время Обновления"
249
+
250
+ #: ../templates/admin-settings.php:121
251
+ msgid ""
252
+ "If you want to add own actions right on products update. You can manipulate "
253
+ "data here, try: data.products = 'Ha!';"
254
+ msgstr ""
255
+ "Если вам нужно добавить действие во время замены продуктов. Вы можете "
256
+ "манипулировать данными. Например: data.products = 'Ha!';"
257
+
258
+ #: ../templates/admin-settings.php:125
259
+ msgid "After Update:"
260
+ msgstr "После Обновления"
261
+
262
+ #: ../templates/admin-settings.php:129
263
+ msgid "If you want to add own actions after products updated, eg: alert('1');"
264
+ msgstr ""
265
+ "Если вам нужно добавить действие после обновления продуктов. Например: "
266
+ "alert('1');"
267
+
268
+ #: ../templates/admin-settings.php:141
269
+ msgid "Save Changes"
270
+ msgstr "Сохранить Изменения"
languages/BeRocket_AJAX_domain.pot ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Loco Gettext template
2
+ #, fuzzy
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Advanced AJAX Product Filters for WooCommerce\n"
6
+ "Report-Msgid-Bugs-To: \n"
7
+ "POT-Creation-Date: Thu Feb 11 2016 10:53:27 GMT+0200 (EET)\n"
8
+ "POT-Revision-Date: Thu Feb 11 2016 10:53:29 GMT+0200 (EET)\n"
9
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
+ "Last-Translator: \n"
11
+ "Language-Team: \n"
12
+ "Language: \n"
13
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-Basepath: .\n"
19
+ "X-Poedit-SearchPath-0: ..\n"
20
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
21
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
22
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
23
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
24
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
25
+ "X-Generator: Loco - https://localise.biz/"
26
+
27
+ #. Name of the plugin
28
+ msgid "Advanced AJAX Product Filters for WooCommerce"
29
+ msgstr ""
30
+
31
+ #. URI of the plugin
32
+ msgid "http://berocket.com/wp-plugins/product-filters"
33
+ msgstr ""
34
+
35
+ #. Author of the plugin
36
+ msgid "BeRocket"
37
+ msgstr ""
38
+
39
+ #. Author URI of the plugin
40
+ msgid "http://berocket.com"
41
+ msgstr ""
42
+
43
+ #: ../woocommerce-filters.php:84
44
+ msgid "Activate WooCommerce plugin before"
45
+ msgstr ""
46
+
47
+ #: ../woocommerce-filters.php:92
48
+ msgid "Update WooCommerce plugin"
49
+ msgstr ""
50
+
51
+ #: ../woocommerce-filters.php:98
52
+ msgid "Product Filters Settings"
53
+ msgstr ""
54
+
55
+ #: ../woocommerce-filters.php:98
56
+ msgid "Product Filters"
57
+ msgstr ""
58
+
59
+ #: ../includes/widget.php:27
60
+ msgid "Add Filters to Products page"
61
+ msgstr ""
62
+
63
+ #: ../includes/widget.php:34 ../includes/widget.php:36
64
+ msgid "AJAX Product Filters"
65
+ msgstr ""
66
+
67
+ #: ../templates/admin.php:2
68
+ msgid "Widget Type:"
69
+ msgstr ""
70
+
71
+ #: ../templates/admin.php:4
72
+ msgid "Filter"
73
+ msgstr ""
74
+
75
+ #: ../templates/admin.php:5
76
+ msgid "Update Products button"
77
+ msgstr ""
78
+
79
+ #: ../templates/admin.php:13
80
+ msgid "Title:"
81
+ msgstr ""
82
+
83
+ #: ../templates/admin.php:18
84
+ msgid "Attribute:"
85
+ msgstr ""
86
+
87
+ #: ../templates/admin.php:20
88
+ msgid "Price"
89
+ msgstr ""
90
+
91
+ #: ../templates/admin.php:28
92
+ msgid "Type:"
93
+ msgstr ""
94
+
95
+ #: ../templates/admin.php:41
96
+ msgid "Operator:"
97
+ msgstr ""
98
+
99
+ #: ../templates/admin.php:57
100
+ msgid "Advanced Settings"
101
+ msgstr ""
102
+
103
+ #: ../templates/admin.php:61
104
+ msgid "CSS Class:"
105
+ msgstr ""
106
+
107
+ #: ../templates/admin.php:66
108
+ msgid "Product Category:"
109
+ msgstr ""
110
+
111
+ #: ../templates/admin.php:69
112
+ msgid "include subcats?"
113
+ msgstr ""
114
+
115
+ #: ../templates/admin.php:96
116
+ msgid "Filter Box Height:"
117
+ msgstr ""
118
+
119
+ #: ../templates/admin.php:100
120
+ msgid "Scroll Theme:"
121
+ msgstr ""
122
+
123
+ #: ../templates/admin-settings.php:9
124
+ msgid "General"
125
+ msgstr ""
126
+
127
+ #: ../templates/admin-settings.php:10
128
+ msgid "Design"
129
+ msgstr ""
130
+
131
+ #: ../templates/admin-settings.php:11
132
+ msgid "JavaScript"
133
+ msgstr ""
134
+
135
+ #: ../templates/admin-settings.php:12
136
+ msgid "Custom CSS"
137
+ msgstr ""
138
+
139
+ #: ../templates/admin-settings.php:17
140
+ msgid "\"No Products\" message"
141
+ msgstr ""
142
+
143
+ #: ../templates/admin-settings.php:21
144
+ msgid "Text that will be shown if no products found"
145
+ msgstr ""
146
+
147
+ #: ../templates/admin-settings.php:25
148
+ msgid "\"No Products\" class"
149
+ msgstr ""
150
+
151
+ #: ../templates/admin-settings.php:29
152
+ msgid "Add class and use it to style \"No Products\" box"
153
+ msgstr ""
154
+
155
+ #: ../templates/admin-settings.php:33
156
+ msgid "Products selector"
157
+ msgstr ""
158
+
159
+ #: ../templates/admin-settings.php:37
160
+ msgid ""
161
+ "Selector for tag that is holding products. Don't change this if you don't "
162
+ "know what it is"
163
+ msgstr ""
164
+
165
+ #: ../templates/admin-settings.php:41
166
+ msgid "Sorting control"
167
+ msgstr ""
168
+
169
+ #: ../templates/admin-settings.php:44
170
+ msgid "Take control over WooCommerce's sorting selectbox?"
171
+ msgstr ""
172
+
173
+ #: ../templates/admin-settings.php:48
174
+ msgid "SEO friendly urls"
175
+ msgstr ""
176
+
177
+ #: ../templates/admin-settings.php:51
178
+ msgid "If this option is on url will be changed when filter is selected/changed"
179
+ msgstr ""
180
+
181
+ #: ../templates/admin-settings.php:55
182
+ msgid "Turn all filters off"
183
+ msgstr ""
184
+
185
+ #: ../templates/admin-settings.php:58
186
+ msgid ""
187
+ "If you want to hide filters without losing current configuration just turn "
188
+ "them off"
189
+ msgstr ""
190
+
191
+ #: ../templates/admin-settings.php:62
192
+ msgid "Show all values"
193
+ msgstr ""
194
+
195
+ #: ../templates/admin-settings.php:65
196
+ msgid "Check if you want to show not used attribute values too"
197
+ msgstr ""
198
+
199
+ #: ../templates/admin-settings.php:69
200
+ msgid "Hide values"
201
+ msgstr ""
202
+
203
+ #: ../templates/admin-settings.php:72
204
+ msgid "Hide values without products"
205
+ msgstr ""
206
+
207
+ #: ../templates/admin-settings.php:74
208
+ msgid "Hide selected values"
209
+ msgstr ""
210
+
211
+ #: ../templates/admin-settings.php:79
212
+ msgid "Jump to first page"
213
+ msgstr ""
214
+
215
+ #: ../templates/admin-settings.php:82
216
+ msgid "Check if you want load first page after filters change"
217
+ msgstr ""
218
+
219
+ #: ../templates/admin-settings.php:93
220
+ msgid "Template ajax load fix"
221
+ msgstr ""
222
+
223
+ #: ../templates/admin-settings.php:96
224
+ msgid ""
225
+ "Use all plugins on ajax load (can fix visual issues but slow down products "
226
+ "loading)"
227
+ msgstr ""
228
+
229
+ #: ../templates/admin-settings.php:109
230
+ msgid "Before Update:"
231
+ msgstr ""
232
+
233
+ #: ../templates/admin-settings.php:113
234
+ msgid "If you want to add own actions on filter activation, eg: alert('1');"
235
+ msgstr ""
236
+
237
+ #: ../templates/admin-settings.php:117
238
+ msgid "On Update:"
239
+ msgstr ""
240
+
241
+ #: ../templates/admin-settings.php:121
242
+ msgid ""
243
+ "If you want to add own actions right on products update. You can manipulate "
244
+ "data here, try: data.products = 'Ha!';"
245
+ msgstr ""
246
+
247
+ #: ../templates/admin-settings.php:125
248
+ msgid "After Update:"
249
+ msgstr ""
250
+
251
+ #: ../templates/admin-settings.php:129
252
+ msgid "If you want to add own actions after products updated, eg: alert('1');"
253
+ msgstr ""
254
+
255
+ #: ../templates/admin-settings.php:141
256
+ msgid "Save Changes"
257
+ msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: http://berocket.com
5
  Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
  Requires at least: 4.0
7
  Tested up to: 4.4
8
- Stable tag: 1.1.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -139,6 +139,16 @@ http://woocommerce-product-filter.berocket.com
139
 
140
  == Changelog ==
141
 
 
 
 
 
 
 
 
 
 
 
142
  = 1.1.3 =
143
  * Enhancement - load only products from last AJAX request
144
  * Enhancement - Uses HTML for widgets from theme
@@ -266,4 +276,4 @@ you set to order `by custom` you can drag&amp;drop values up and down and set yo
266
  * Fix - better support for older PHP versions
267
 
268
  = 1.0.1 =
269
- * First public version
5
  Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
  Requires at least: 4.0
7
  Tested up to: 4.4
8
+ Stable tag: 1.1.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
139
 
140
  == Changelog ==
141
 
142
+ = 1.1.4 =
143
+ * Enhancement - Russian translation
144
+ * Fix - Translation
145
+ * Fix - Network activation
146
+ * Fix - Displaying of filter with price
147
+ * Fix - Get normal min/max prices for filter with price
148
+ * Fix - Widgets displays incorrect with some themes
149
+ * Fix - Not filtering with some plugins
150
+ * Fix - Scrollbar displays incorrect with some themes
151
+
152
  = 1.1.3 =
153
  * Enhancement - load only products from last AJAX request
154
  * Enhancement - Uses HTML for widgets from theme
276
  * Fix - better support for older PHP versions
277
 
278
  = 1.0.1 =
279
+ * First public version
templates/admin-settings.php CHANGED
@@ -6,80 +6,80 @@
6
  $tabs_array = array( 'general', 'design', 'javascript', 'customcss' );
7
  ?>
8
  <h2 class="nav-tab-wrapper filter_settings_tabs">
9
- <a href="#general" class="nav-tab <?php if(@$options['br_opened_tab'] == 'general' || !in_array( @$options['br_opened_tab'], $tabs_array ) ) echo 'nav-tab-active'; ?>"><?php _e('General', BeRocket_AJAX_domain) ?></a>
10
- <a href="#design" class="nav-tab <?php if(@$options['br_opened_tab'] == 'design' ) echo 'nav-tab-active'; ?>"><?php _e('Design', BeRocket_AJAX_domain) ?></a>
11
- <a href="#javascript" class="nav-tab <?php if(@$options['br_opened_tab'] == 'javascript' ) echo 'nav-tab-active'; ?>"><?php _e('JavaScript', BeRocket_AJAX_domain) ?></a>
12
- <a href="#customcss" class="nav-tab <?php if(@$options['br_opened_tab'] == 'customcss' ) echo 'nav-tab-active'; ?>"><?php _e('Custom CSS', BeRocket_AJAX_domain) ?></a>
13
  </h2>
14
  <div id="general" class="tab-item <?php if(@$options['br_opened_tab'] == 'general' || !in_array( @$options['br_opened_tab'], $tabs_array ) ) echo 'current'; ?>">
15
  <table class="form-table">
16
  <tr>
17
- <th scope="row"><?php _e('"No Products" message', BeRocket_AJAX_domain) ?></th>
18
  <td>
19
  <input size="50" name="br_filters_options[no_products_message]" type='text' value='<?php echo @$options['no_products_message']?>'/>
20
  <br />
21
- <span style="color:#666666;margin-left:2px;"><?php _e('Text that will be shown if no products found', BeRocket_AJAX_domain) ?></span>
22
  </td>
23
  </tr>
24
  <tr>
25
- <th scope="row"><?php _e('"No Products" class', BeRocket_AJAX_domain) ?></th>
26
  <td>
27
  <input name="br_filters_options[no_products_class]" type='text' value='<?php echo @$options['no_products_class']?>'/>
28
  <br />
29
- <span style="color:#666666;margin-left:2px;"><?php _e('Add class and use it to style "No Products" box', BeRocket_AJAX_domain) ?></span>
30
  </td>
31
  </tr>
32
  <tr>
33
- <th scope="row"><?php _e('Products selector', BeRocket_AJAX_domain) ?></th>
34
  <td>
35
  <input name="br_filters_options[products_holder_id]" type='text' value='<?php echo @$options['products_holder_id']?$options['products_holder_id']:'ul.products'?>'/>
36
  <br />
37
- <span style="color:#666666;margin-left:2px;"><?php _e("Selector for tag that is holding products. Don't change this if you don't know what it is", BeRocket_AJAX_domain) ?></span>
38
  </td>
39
  </tr>
40
  <tr>
41
- <th scope="row"><?php _e('Sorting control', BeRocket_AJAX_domain) ?></th>
42
  <td>
43
  <input name="br_filters_options[control_sorting]" type='checkbox' value='1' <?php if( @$options['control_sorting'] ) echo "checked='checked'";?>/>
44
- <span style="color:#666666;margin-left:2px;"><?php _e("Take control over WooCommerce's sorting selectbox?", BeRocket_AJAX_domain) ?></span>
45
  </td>
46
  </tr>
47
  <tr>
48
- <th scope="row"><?php _e('SEO friendly urls', BeRocket_AJAX_domain) ?></th>
49
  <td>
50
  <input name="br_filters_options[seo_friendly_urls]" type='checkbox' value='1' <?php if( @$options['seo_friendly_urls'] ) echo "checked='checked'";?>/>
51
- <span style="color:#666666;margin-left:2px;"><?php _e('If this option is on url will be changed when filter is selected/changed', BeRocket_AJAX_domain) ?></span>
52
  </td>
53
  </tr>
54
  <tr>
55
- <th scope="row"><?php _e('Turn all filters off', BeRocket_AJAX_domain) ?></th>
56
  <td>
57
  <input name="br_filters_options[filters_turn_off]" type='checkbox' value='1' <?php if( @$options['filters_turn_off'] ) echo "checked='checked'";?>/>
58
- <span style="color:#666666;margin-left:2px;"><?php _e('If you want to hide filters without losing current configuration just turn them off', BeRocket_AJAX_domain) ?></span>
59
  </td>
60
  </tr>
61
  <tr>
62
- <th scope="row"><?php _e('Show all values', BeRocket_AJAX_domain) ?></th>
63
  <td>
64
  <input name="br_filters_options[show_all_values]" type='checkbox' value='1' <?php if( @$options['show_all_values'] ) echo "checked='checked'";?>/>
65
- <span style="color:#666666;margin-left:2px;"><?php _e('Check if you want to show not used attribute values too', BeRocket_AJAX_domain) ?></span>
66
  </td>
67
  </tr>
68
  <tr>
69
- <th scope="row"><?php _e('Hide values', BeRocket_AJAX_domain) ?></th>
70
  <td>
71
  <input name="br_filters_options[hide_value][o]" type='checkbox' value='1' <?php if( @$options['hide_value']['o'] ) echo "checked='checked'";?>/>
72
- <span style="color:#666666;margin-left:2px;"><?php _e('Hide values without products', BeRocket_AJAX_domain) ?></span><br>
73
  <input name="br_filters_options[hide_value][sel]" type='checkbox' value='1' <?php if( @$options['hide_value']['sel'] ) echo "checked='checked'";?>/>
74
- <span style="color:#666666;margin-left:2px;"><?php _e('Hide selected values', BeRocket_AJAX_domain) ?></span>
75
  </td>
76
  <td>
77
  </tr>
78
  <tr>
79
- <th scope="row"><?php _e('Jump to first page', BeRocket_AJAX_domain) ?></th>
80
  <td>
81
  <input name="br_filters_options[first_page_jump]" type='checkbox' value='1' <?php if( @$options['first_page_jump'] ) echo "checked='checked'";?>/>
82
- <span style="color:#666666;margin-left:2px;"><?php _e('Check if you want load first page after filters change', BeRocket_AJAX_domain) ?></span>
83
  </td>
84
  </tr>
85
  <tr>
@@ -90,10 +90,10 @@
90
  </td>
91
  </tr>
92
  <tr>
93
- <th scope="row"><?php _e('Template ajax load fix', BeRocket_AJAX_domain) ?></th>
94
  <td>
95
  <input name="br_filters_options[ajax_request_load]" type='checkbox' value='1' <?php if( @$options['ajax_request_load'] ) echo "checked='checked'";?>/>
96
- <span style="color:#666666;margin-left:2px;"><?php _e('Use all plugins on ajax load (can fix visual issues but slow down products loading)', BeRocket_AJAX_domain) ?></span>
97
  </td>
98
  </tr>
99
  </table>
@@ -106,27 +106,27 @@
106
  <div id="javascript" class="tab-item <?php if(@$options['br_opened_tab'] == 'javascript' ) echo 'current'; ?>">
107
  <table class="form-table">
108
  <tr>
109
- <th scope="row"><?php _e('Before Update:', BeRocket_AJAX_domain) ?></th>
110
  <td>
111
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][before_update]"><?php echo @$options['user_func']['before_update'] ?></textarea>
112
  <br />
113
- <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions on filter activation, eg: alert('1');", BeRocket_AJAX_domain) ?></span>
114
  </td>
115
  </tr>
116
  <tr>
117
- <th scope="row"><?php _e('On Update:', BeRocket_AJAX_domain) ?></th>
118
  <td>
119
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][on_update]"><?php echo @$options['user_func']['on_update'] ?></textarea>
120
  <br />
121
- <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions right on products update. You can manipulate data here, try: data.products = 'Ha!';", BeRocket_AJAX_domain) ?></span>
122
  </td>
123
  </tr>
124
  <tr>
125
- <th scope="row"><?php _e('After Update:', BeRocket_AJAX_domain) ?></th>
126
  <td>
127
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][after_update]"><?php echo @$options['user_func']['after_update'] ?></textarea>
128
  <br />
129
- <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions after products updated, eg: alert('1');", BeRocket_AJAX_domain) ?></span>
130
  </td>
131
  </tr>
132
  </table>
6
  $tabs_array = array( 'general', 'design', 'javascript', 'customcss' );
7
  ?>
8
  <h2 class="nav-tab-wrapper filter_settings_tabs">
9
+ <a href="#general" class="nav-tab <?php if(@$options['br_opened_tab'] == 'general' || !in_array( @$options['br_opened_tab'], $tabs_array ) ) echo 'nav-tab-active'; ?>"><?php _e('General', 'BeRocket_AJAX_domain') ?></a>
10
+ <a href="#design" class="nav-tab <?php if(@$options['br_opened_tab'] == 'design' ) echo 'nav-tab-active'; ?>"><?php _e('Design', 'BeRocket_AJAX_domain') ?></a>
11
+ <a href="#javascript" class="nav-tab <?php if(@$options['br_opened_tab'] == 'javascript' ) echo 'nav-tab-active'; ?>"><?php _e('JavaScript', 'BeRocket_AJAX_domain') ?></a>
12
+ <a href="#customcss" class="nav-tab <?php if(@$options['br_opened_tab'] == 'customcss' ) echo 'nav-tab-active'; ?>"><?php _e('Custom CSS', 'BeRocket_AJAX_domain') ?></a>
13
  </h2>
14
  <div id="general" class="tab-item <?php if(@$options['br_opened_tab'] == 'general' || !in_array( @$options['br_opened_tab'], $tabs_array ) ) echo 'current'; ?>">
15
  <table class="form-table">
16
  <tr>
17
+ <th scope="row"><?php _e('"No Products" message', 'BeRocket_AJAX_domain') ?></th>
18
  <td>
19
  <input size="50" name="br_filters_options[no_products_message]" type='text' value='<?php echo @$options['no_products_message']?>'/>
20
  <br />
21
+ <span style="color:#666666;margin-left:2px;"><?php _e('Text that will be shown if no products found', 'BeRocket_AJAX_domain') ?></span>
22
  </td>
23
  </tr>
24
  <tr>
25
+ <th scope="row"><?php _e('"No Products" class', 'BeRocket_AJAX_domain') ?></th>
26
  <td>
27
  <input name="br_filters_options[no_products_class]" type='text' value='<?php echo @$options['no_products_class']?>'/>
28
  <br />
29
+ <span style="color:#666666;margin-left:2px;"><?php _e('Add class and use it to style "No Products" box', 'BeRocket_AJAX_domain') ?></span>
30
  </td>
31
  </tr>
32
  <tr>
33
+ <th scope="row"><?php _e('Products selector', 'BeRocket_AJAX_domain') ?></th>
34
  <td>
35
  <input name="br_filters_options[products_holder_id]" type='text' value='<?php echo @$options['products_holder_id']?$options['products_holder_id']:'ul.products'?>'/>
36
  <br />
37
+ <span style="color:#666666;margin-left:2px;"><?php _e("Selector for tag that is holding products. Don't change this if you don't know what it is", 'BeRocket_AJAX_domain') ?></span>
38
  </td>
39
  </tr>
40
  <tr>
41
+ <th scope="row"><?php _e('Sorting control', 'BeRocket_AJAX_domain') ?></th>
42
  <td>
43
  <input name="br_filters_options[control_sorting]" type='checkbox' value='1' <?php if( @$options['control_sorting'] ) echo "checked='checked'";?>/>
44
+ <span style="color:#666666;margin-left:2px;"><?php _e("Take control over WooCommerce's sorting selectbox?", 'BeRocket_AJAX_domain') ?></span>
45
  </td>
46
  </tr>
47
  <tr>
48
+ <th scope="row"><?php _e('SEO friendly urls', 'BeRocket_AJAX_domain') ?></th>
49
  <td>
50
  <input name="br_filters_options[seo_friendly_urls]" type='checkbox' value='1' <?php if( @$options['seo_friendly_urls'] ) echo "checked='checked'";?>/>
51
+ <span style="color:#666666;margin-left:2px;"><?php _e('If this option is on url will be changed when filter is selected/changed', 'BeRocket_AJAX_domain') ?></span>
52
  </td>
53
  </tr>
54
  <tr>
55
+ <th scope="row"><?php _e('Turn all filters off', 'BeRocket_AJAX_domain') ?></th>
56
  <td>
57
  <input name="br_filters_options[filters_turn_off]" type='checkbox' value='1' <?php if( @$options['filters_turn_off'] ) echo "checked='checked'";?>/>
58
+ <span style="color:#666666;margin-left:2px;"><?php _e('If you want to hide filters without losing current configuration just turn them off', 'BeRocket_AJAX_domain') ?></span>
59
  </td>
60
  </tr>
61
  <tr>
62
+ <th scope="row"><?php _e('Show all values', 'BeRocket_AJAX_domain') ?></th>
63
  <td>
64
  <input name="br_filters_options[show_all_values]" type='checkbox' value='1' <?php if( @$options['show_all_values'] ) echo "checked='checked'";?>/>
65
+ <span style="color:#666666;margin-left:2px;"><?php _e('Check if you want to show not used attribute values too', 'BeRocket_AJAX_domain') ?></span>
66
  </td>
67
  </tr>
68
  <tr>
69
+ <th scope="row"><?php _e('Hide values', 'BeRocket_AJAX_domain') ?></th>
70
  <td>
71
  <input name="br_filters_options[hide_value][o]" type='checkbox' value='1' <?php if( @$options['hide_value']['o'] ) echo "checked='checked'";?>/>
72
+ <span style="color:#666666;margin-left:2px;"><?php _e('Hide values without products', 'BeRocket_AJAX_domain') ?></span><br>
73
  <input name="br_filters_options[hide_value][sel]" type='checkbox' value='1' <?php if( @$options['hide_value']['sel'] ) echo "checked='checked'";?>/>
74
+ <span style="color:#666666;margin-left:2px;"><?php _e('Hide selected values', 'BeRocket_AJAX_domain') ?></span>
75
  </td>
76
  <td>
77
  </tr>
78
  <tr>
79
+ <th scope="row"><?php _e('Jump to first page', 'BeRocket_AJAX_domain') ?></th>
80
  <td>
81
  <input name="br_filters_options[first_page_jump]" type='checkbox' value='1' <?php if( @$options['first_page_jump'] ) echo "checked='checked'";?>/>
82
+ <span style="color:#666666;margin-left:2px;"><?php _e('Check if you want load first page after filters change', 'BeRocket_AJAX_domain') ?></span>
83
  </td>
84
  </tr>
85
  <tr>
90
  </td>
91
  </tr>
92
  <tr>
93
+ <th scope="row"><?php _e('Template ajax load fix', 'BeRocket_AJAX_domain') ?></th>
94
  <td>
95
  <input name="br_filters_options[ajax_request_load]" type='checkbox' value='1' <?php if( @$options['ajax_request_load'] ) echo "checked='checked'";?>/>
96
+ <span style="color:#666666;margin-left:2px;"><?php _e('Use all plugins on ajax load (can fix visual issues but slow down products loading)', 'BeRocket_AJAX_domain') ?></span>
97
  </td>
98
  </tr>
99
  </table>
106
  <div id="javascript" class="tab-item <?php if(@$options['br_opened_tab'] == 'javascript' ) echo 'current'; ?>">
107
  <table class="form-table">
108
  <tr>
109
+ <th scope="row"><?php _e('Before Update:', 'BeRocket_AJAX_domain') ?></th>
110
  <td>
111
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][before_update]"><?php echo @$options['user_func']['before_update'] ?></textarea>
112
  <br />
113
+ <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions on filter activation, eg: alert('1');", 'BeRocket_AJAX_domain') ?></span>
114
  </td>
115
  </tr>
116
  <tr>
117
+ <th scope="row"><?php _e('On Update:', 'BeRocket_AJAX_domain') ?></th>
118
  <td>
119
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][on_update]"><?php echo @$options['user_func']['on_update'] ?></textarea>
120
  <br />
121
+ <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions right on products update. You can manipulate data here, try: data.products = 'Ha!';", 'BeRocket_AJAX_domain') ?></span>
122
  </td>
123
  </tr>
124
  <tr>
125
+ <th scope="row"><?php _e('After Update:', 'BeRocket_AJAX_domain') ?></th>
126
  <td>
127
  <textarea style="min-width: 500px; height: 100px;" name="br_filters_options[user_func][after_update]"><?php echo @$options['user_func']['after_update'] ?></textarea>
128
  <br />
129
+ <span style="color:#666666;margin-left:2px;"><?php _e("If you want to add own actions after products updated, eg: alert('1');", 'BeRocket_AJAX_domain') ?></span>
130
  </td>
131
  </tr>
132
  </table>
templates/admin.php CHANGED
@@ -1,8 +1,8 @@
1
  <p>
2
- <label><?php _e('Widget Type:', BeRocket_AJAX_domain) ?>
3
  <select id="<?php echo $this->get_field_id( 'widget_type' ); ?>" name="<?php echo $this->get_field_name( 'widget_type' ); ?>" class="berocket_aapf_widget_admin_widget_type_select">
4
- <option <?php if ($instance['widget_type'] == 'filter' or ! $instance['widget_type']) echo 'selected'; ?> value="filter"><?php _e('Filter', BeRocket_AJAX_domain) ?></option>
5
- <option <?php if ($instance['widget_type'] == 'update_button') echo 'selected'; ?> value="update_button"><?php _e('Update Products button', BeRocket_AJAX_domain) ?></option>
6
  </select>
7
  </label>
8
  </p>
@@ -10,14 +10,14 @@
10
  <hr />
11
 
12
  <p>
13
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', BeRocket_AJAX_domain) ?> </label>
14
  <input id="<?php echo $this->get_field_id( 'title' ); ?>" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
15
  </p>
16
  <div class="berocket_aapf_admin_filter_widget_content" <?php if ( $instance['widget_type'] == 'update_button' or $instance['widget_type'] == 'selected_area' ){ echo 'style="display: none;"';} else { echo 'style="float: none;"'; } ?>>
17
  <p>
18
- <label><?php _e('Attribute:', BeRocket_AJAX_domain) ?>
19
  <select id="<?php echo $this->get_field_id( 'attribute' ); ?>" name="<?php echo $this->get_field_name( 'attribute' ); ?>" class="berocket_aapf_widget_admin_attribute_select">
20
- <option <?php if ($instance['attribute'] == 'price') echo 'selected'; ?> value="price"><?php _e('Price', BeRocket_AJAX_domain) ?></option>
21
  <?php foreach( $attributes as $k => $v ){ ?>
22
  <option <?php if ($instance['attribute'] == $k) echo 'selected'; ?> value="<?php echo $k ?>"><?php echo $v ?></option>
23
  <?php } ?>
@@ -25,7 +25,7 @@
25
  </label>
26
  </p>
27
  <p>
28
- <label><?php _e('Type:', BeRocket_AJAX_domain) ?>
29
  <select id="<?php echo $this->get_field_id( 'type' ); ?>" name="<?php echo $this->get_field_name( 'type' ); ?>" class="berocket_aapf_widget_admin_type_select">
30
  <?php if ( $instance['attribute'] != 'price' ){ ?>
31
  <option <?php if ($instance['type'] == 'checkbox') echo 'selected'; ?> value="checkbox">Checkbox</option>
@@ -38,7 +38,7 @@
38
  </p>
39
 
40
  <p <?php if ( $instance['attribute'] == 'price' or $instance['type'] == 'slider' ) echo " style='display: none;'"; ?> >
41
- <label><?php _e('Operator:', BeRocket_AJAX_domain) ?>
42
  <select id="<?php echo $this->get_field_id( 'operator' ); ?>" name="<?php echo $this->get_field_name( 'operator' ); ?>" class="berocket_aapf_widget_admin_operator_select">
43
  <option <?php if ($instance['operator'] == 'AND') echo 'selected'; ?> value="AND">AND</option>
44
  <option <?php if ($instance['operator'] == 'OR') echo 'selected'; ?> value="OR">OR</option>
@@ -54,19 +54,19 @@
54
  <input id="<?php echo $this->get_field_id( 'text_after_price' ); ?>" type="text" name="<?php echo $this->get_field_name( 'text_after_price' ); ?>" value="<?php echo $instance['text_after_price']; ?>" />
55
  </p>
56
  <p>
57
- <a href="#" class='berocket_aapf_advanced_settings_pointer'><?php _e('Advanced Settings', BeRocket_AJAX_domain) ?></a>
58
  </p>
59
  <div class='berocket_aapf_advanced_settings' style="display:none;">
60
  <p>
61
- <label for="<?php echo $this->get_field_id( 'css_class' ); ?>"><?php _e('CSS Class:', BeRocket_AJAX_domain) ?> </label>
62
  <input id="<?php echo $this->get_field_id( 'css_class' ); ?>" type="text" name="<?php echo $this->get_field_name( 'css_class' ); ?>" value="<?php echo @ $instance['css_class']; ?>" class="berocket_aapf_widget_admin_css_class_input" />
63
  <small>(use white space for multiple classes)</small>
64
  </p>
65
  <p>
66
- <label><?php _e('Product Category:', BeRocket_AJAX_domain) ?>
67
  <label class="berocket_aapf_advanced_settings_subcategory">
68
  <input type="checkbox" name="<?php echo $this->get_field_name( 'cat_propagation' ); ?>" <?php if ( @ $instance['cat_propagation'] ) echo 'checked'; ?> value="1" class="berocket_aapf_widget_admin_height_input" />
69
- <?php _e('include subcats?', BeRocket_AJAX_domain) ?>
70
  </label>
71
  </label>
72
  <ul class="berocket_aapf_advanced_settings_categories_list">
@@ -93,11 +93,11 @@
93
  </ul>
94
  </p>
95
  <p>
96
- <label for="<?php echo $this->get_field_id( 'height' ); ?>"><?php _e('Filter Box Height:', BeRocket_AJAX_domain) ?> </label>
97
  <input id="<?php echo $this->get_field_id( 'height' ); ?>" type="text" name="<?php echo $this->get_field_name( 'height' ); ?>" value="<?php echo $instance['height']; ?>" class="berocket_aapf_widget_admin_height_input" />px
98
  </p>
99
  <p>
100
- <label for="<?php echo $this->get_field_id( 'scroll_theme' ); ?>"><?php _e('Scroll Theme:', BeRocket_AJAX_domain) ?> </label>
101
  <select id="<?php echo $this->get_field_id( 'scroll_theme' ); ?>" name="<?php echo $this->get_field_name( 'scroll_theme' ); ?>" class="berocket_aapf_widget_admin_scroll_theme_select">
102
  <?php
103
  $scroll_themes = array("light", "dark", "minimal", "minimal-dark", "light-2", "dark-2", "light-3", "dark-3", "light-thick", "dark-thick", "light-thin",
1
  <p>
2
+ <label><?php _e('Widget Type:', 'BeRocket_AJAX_domain') ?>
3
  <select id="<?php echo $this->get_field_id( 'widget_type' ); ?>" name="<?php echo $this->get_field_name( 'widget_type' ); ?>" class="berocket_aapf_widget_admin_widget_type_select">
4
+ <option <?php if ($instance['widget_type'] == 'filter' or ! $instance['widget_type']) echo 'selected'; ?> value="filter"><?php _e('Filter', 'BeRocket_AJAX_domain') ?></option>
5
+ <option <?php if ($instance['widget_type'] == 'update_button') echo 'selected'; ?> value="update_button"><?php _e('Update Products button', 'BeRocket_AJAX_domain') ?></option>
6
  </select>
7
  </label>
8
  </p>
10
  <hr />
11
 
12
  <p>
13
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'BeRocket_AJAX_domain') ?> </label>
14
  <input id="<?php echo $this->get_field_id( 'title' ); ?>" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
15
  </p>
16
  <div class="berocket_aapf_admin_filter_widget_content" <?php if ( $instance['widget_type'] == 'update_button' or $instance['widget_type'] == 'selected_area' ){ echo 'style="display: none;"';} else { echo 'style="float: none;"'; } ?>>
17
  <p>
18
+ <label><?php _e('Attribute:', 'BeRocket_AJAX_domain') ?>
19
  <select id="<?php echo $this->get_field_id( 'attribute' ); ?>" name="<?php echo $this->get_field_name( 'attribute' ); ?>" class="berocket_aapf_widget_admin_attribute_select">
20
+ <option <?php if ($instance['attribute'] == 'price') echo 'selected'; ?> value="price"><?php _e('Price', 'BeRocket_AJAX_domain') ?></option>
21
  <?php foreach( $attributes as $k => $v ){ ?>
22
  <option <?php if ($instance['attribute'] == $k) echo 'selected'; ?> value="<?php echo $k ?>"><?php echo $v ?></option>
23
  <?php } ?>
25
  </label>
26
  </p>
27
  <p>
28
+ <label><?php _e('Type:', 'BeRocket_AJAX_domain') ?>
29
  <select id="<?php echo $this->get_field_id( 'type' ); ?>" name="<?php echo $this->get_field_name( 'type' ); ?>" class="berocket_aapf_widget_admin_type_select">
30
  <?php if ( $instance['attribute'] != 'price' ){ ?>
31
  <option <?php if ($instance['type'] == 'checkbox') echo 'selected'; ?> value="checkbox">Checkbox</option>
38
  </p>
39
 
40
  <p <?php if ( $instance['attribute'] == 'price' or $instance['type'] == 'slider' ) echo " style='display: none;'"; ?> >
41
+ <label><?php _e('Operator:', 'BeRocket_AJAX_domain') ?>
42
  <select id="<?php echo $this->get_field_id( 'operator' ); ?>" name="<?php echo $this->get_field_name( 'operator' ); ?>" class="berocket_aapf_widget_admin_operator_select">
43
  <option <?php if ($instance['operator'] == 'AND') echo 'selected'; ?> value="AND">AND</option>
44
  <option <?php if ($instance['operator'] == 'OR') echo 'selected'; ?> value="OR">OR</option>
54
  <input id="<?php echo $this->get_field_id( 'text_after_price' ); ?>" type="text" name="<?php echo $this->get_field_name( 'text_after_price' ); ?>" value="<?php echo $instance['text_after_price']; ?>" />
55
  </p>
56
  <p>
57
+ <a href="#" class='berocket_aapf_advanced_settings_pointer'><?php _e('Advanced Settings', 'BeRocket_AJAX_domain') ?></a>
58
  </p>
59
  <div class='berocket_aapf_advanced_settings' style="display:none;">
60
  <p>
61
+ <label for="<?php echo $this->get_field_id( 'css_class' ); ?>"><?php _e('CSS Class:', 'BeRocket_AJAX_domain') ?> </label>
62
  <input id="<?php echo $this->get_field_id( 'css_class' ); ?>" type="text" name="<?php echo $this->get_field_name( 'css_class' ); ?>" value="<?php echo @ $instance['css_class']; ?>" class="berocket_aapf_widget_admin_css_class_input" />
63
  <small>(use white space for multiple classes)</small>
64
  </p>
65
  <p>
66
+ <label><?php _e('Product Category:', 'BeRocket_AJAX_domain') ?>
67
  <label class="berocket_aapf_advanced_settings_subcategory">
68
  <input type="checkbox" name="<?php echo $this->get_field_name( 'cat_propagation' ); ?>" <?php if ( @ $instance['cat_propagation'] ) echo 'checked'; ?> value="1" class="berocket_aapf_widget_admin_height_input" />
69
+ <?php _e('include subcats?', 'BeRocket_AJAX_domain') ?>
70
  </label>
71
  </label>
72
  <ul class="berocket_aapf_advanced_settings_categories_list">
93
  </ul>
94
  </p>
95
  <p>
96
+ <label for="<?php echo $this->get_field_id( 'height' ); ?>"><?php _e('Filter Box Height:', 'BeRocket_AJAX_domain') ?> </label>
97
  <input id="<?php echo $this->get_field_id( 'height' ); ?>" type="text" name="<?php echo $this->get_field_name( 'height' ); ?>" value="<?php echo $instance['height']; ?>" class="berocket_aapf_widget_admin_height_input" />px
98
  </p>
99
  <p>
100
+ <label for="<?php echo $this->get_field_id( 'scroll_theme' ); ?>"><?php _e('Scroll Theme:', 'BeRocket_AJAX_domain') ?> </label>
101
  <select id="<?php echo $this->get_field_id( 'scroll_theme' ); ?>" name="<?php echo $this->get_field_name( 'scroll_theme' ); ?>" class="berocket_aapf_widget_admin_scroll_theme_select">
102
  <?php
103
  $scroll_themes = array("light", "dark", "minimal", "minimal-dark", "light-2", "dark-2", "light-3", "dark-3", "light-thick", "dark-thick", "light-thin",
woocommerce-filters.php CHANGED
@@ -3,20 +3,23 @@
3
  * Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
  * Plugin URI: http://berocket.com/wp-plugins/product-filters
5
  * Description: Advanced AJAX Product Filters for WooCommerce
6
- * Version: 1.1.3
7
  * Author: BeRocket
8
  * Author URI: http://berocket.com
 
 
9
  */
10
 
11
- define( "BeRocket_AJAX_filters_version", '1.1.3' );
12
- define( "BeRocket_AJAX_domain", 'BRaapf' );
13
 
14
  define( "AAPF_TEMPLATE_PATH", plugin_dir_path( __FILE__ ) . "templates/" );
15
  define( "AAPF_URL", plugin_dir_url( __FILE__ ) );
 
 
16
 
17
  require_once dirname( __FILE__ ) . '/includes/widget.php';
18
  require_once dirname( __FILE__ ) . '/includes/functions.php';
19
-
20
  /**
21
  * Class BeRocket_AAPF
22
  */
@@ -36,7 +39,7 @@ class BeRocket_AAPF {
36
  register_activation_hook(__FILE__, array( __CLASS__, 'br_add_defaults' ) );
37
  register_uninstall_hook(__FILE__, array( __CLASS__, 'br_delete_plugin_options' ) );
38
 
39
- if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) && br_get_woocommerce_version() >= 2.1 ) {
40
  if ( defined('DOING_AJAX') && DOING_AJAX ) {
41
  add_action( 'setup_theme', array( __CLASS__, 'WPML_fix' ) );
42
  }
@@ -47,7 +50,8 @@ class BeRocket_AAPF {
47
  add_shortcode( 'br_filters', array( __CLASS__, 'shortcode' ) );
48
 
49
  if( @ $_GET['filters'] and ! @ defined( 'DOING_AJAX' ) ) {
50
- add_filter( 'pre_get_posts', array( __CLASS__, 'apply_user_filters' ) );
 
51
  }
52
 
53
  if( @ $_GET['explode'] == 'explode' ) {
@@ -65,7 +69,6 @@ class BeRocket_AAPF {
65
  }
66
 
67
  public static function init() {
68
- load_plugin_textdomain( BeRocket_AJAX_domain, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
69
 
70
  wp_register_style( 'berocket_aapf_widget-style', plugins_url( 'css/widget.css', __FILE__ ), array(), BeRocket_AJAX_filters_version );
71
  wp_enqueue_style( 'berocket_aapf_widget-style' );
@@ -79,7 +82,7 @@ class BeRocket_AAPF {
79
  public static function no_woocommerce() {
80
  ?>
81
  <div class="error">
82
- <p><?php _e( 'Activate WooCommerce plugin before', BeRocket_AJAX_domain ) ?></p>
83
  </div>
84
  <?php
85
  }
@@ -87,13 +90,13 @@ class BeRocket_AAPF {
87
  public static function update_woocommerce() {
88
  ?>
89
  <div class="error">
90
- <p><?php _e( 'Update WooCommerce plugin', BeRocket_AJAX_domain ) ?></p>
91
  </div>
92
  <?php
93
  }
94
 
95
  public static function br_add_options_page() {
96
- add_submenu_page( 'woocommerce', __( 'Product Filters Settings', BeRocket_AJAX_domain ), __( 'Product Filters', BeRocket_AJAX_domain ), 'manage_options', 'br-product-filters', array( __CLASS__, 'br_render_form' ) );
97
  }
98
 
99
  public static function shortcode( $atts = array() ) {
@@ -118,8 +121,7 @@ class BeRocket_AAPF {
118
 
119
  if ( ! $a['attribute'] || ! $a['type'] ) return false;
120
 
121
- $BeRocket_AAPF_Widget = new BeRocket_AAPF_Widget();
122
- $BeRocket_AAPF_Widget->widget( array(), $a );
123
  }
124
 
125
  public static function br_render_form() {
@@ -134,12 +136,21 @@ class BeRocket_AAPF {
134
  include AAPF_TEMPLATE_PATH . "admin-settings.php";
135
  }
136
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  public static function apply_user_filters( $query ) {
138
  if( $query->is_main_query() and
139
- ( ( is_shop() or $query->get( 'post_type' ) == 'product' or $query->get( 'product_cat' ) )
140
- or
141
- $query->is_page() && 'page' == get_option( 'show_on_front' ) && $query->get('page_id') == wc_get_page_id('shop')
142
- or is_product_taxonomy() )
143
  ) {
144
  br_aapf_args_converter();
145
  $args = br_aapf_args_parser();
3
  * Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
  * Plugin URI: http://berocket.com/wp-plugins/product-filters
5
  * Description: Advanced AJAX Product Filters for WooCommerce
6
+ * Version: 1.1.4
7
  * Author: BeRocket
8
  * Author URI: http://berocket.com
9
+ * Text Domain: BeRocket_AJAX_domain
10
+ * Domain Path: /languages/
11
  */
12
 
13
+ define( "BeRocket_AJAX_filters_version", '1.1.4' );
14
+ define( "BeRocket_AJAX_domain", 'BeRocket_AJAX_domain' );
15
 
16
  define( "AAPF_TEMPLATE_PATH", plugin_dir_path( __FILE__ ) . "templates/" );
17
  define( "AAPF_URL", plugin_dir_url( __FILE__ ) );
18
+ load_plugin_textdomain('BeRocket_AJAX_domain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/');
19
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
20
 
21
  require_once dirname( __FILE__ ) . '/includes/widget.php';
22
  require_once dirname( __FILE__ ) . '/includes/functions.php';
 
23
  /**
24
  * Class BeRocket_AAPF
25
  */
39
  register_activation_hook(__FILE__, array( __CLASS__, 'br_add_defaults' ) );
40
  register_uninstall_hook(__FILE__, array( __CLASS__, 'br_delete_plugin_options' ) );
41
 
42
+ if ( ( is_plugin_active( 'woocommerce/woocommerce.php' ) || is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) && br_get_woocommerce_version() >= 2.1 ) {
43
  if ( defined('DOING_AJAX') && DOING_AJAX ) {
44
  add_action( 'setup_theme', array( __CLASS__, 'WPML_fix' ) );
45
  }
50
  add_shortcode( 'br_filters', array( __CLASS__, 'shortcode' ) );
51
 
52
  if( @ $_GET['filters'] and ! @ defined( 'DOING_AJAX' ) ) {
53
+ add_filter( 'pre_get_posts', array( __CLASS__, 'apply_user_price' ) );
54
+ add_filter( 'pre_get_posts', array( __CLASS__, 'apply_user_filters' ), 99999 );
55
  }
56
 
57
  if( @ $_GET['explode'] == 'explode' ) {
69
  }
70
 
71
  public static function init() {
 
72
 
73
  wp_register_style( 'berocket_aapf_widget-style', plugins_url( 'css/widget.css', __FILE__ ), array(), BeRocket_AJAX_filters_version );
74
  wp_enqueue_style( 'berocket_aapf_widget-style' );
82
  public static function no_woocommerce() {
83
  ?>
84
  <div class="error">
85
+ <p><?php _e( 'Activate WooCommerce plugin before', 'BeRocket_AJAX_domain' ) ?></p>
86
  </div>
87
  <?php
88
  }
90
  public static function update_woocommerce() {
91
  ?>
92
  <div class="error">
93
+ <p><?php _e( 'Update WooCommerce plugin', 'BeRocket_AJAX_domain' ) ?></p>
94
  </div>
95
  <?php
96
  }
97
 
98
  public static function br_add_options_page() {
99
+ add_submenu_page( 'woocommerce', __( 'Product Filters Settings', 'BeRocket_AJAX_domain' ), __( 'Product Filters', 'BeRocket_AJAX_domain' ), 'manage_options', 'br-product-filters', array( __CLASS__, 'br_render_form' ) );
100
  }
101
 
102
  public static function shortcode( $atts = array() ) {
121
 
122
  if ( ! $a['attribute'] || ! $a['type'] ) return false;
123
 
124
+ the_widget( 'br_filters', $a);
 
125
  }
126
 
127
  public static function br_render_form() {
136
  include AAPF_TEMPLATE_PATH . "admin-settings.php";
137
  }
138
 
139
+ public static function apply_user_price( $query, $is_shortcode = FALSE ) {
140
+ $option_permalink = get_option( 'berocket_permalink_option' );
141
+ if ( ( ( ! is_admin() && $query->is_main_query() ) || $is_shortcode ) && ( @ $_GET['filters'] || $query->get( $option_permalink['variable'], '' ) ) ) {
142
+ br_aapf_args_converter( $query );
143
+
144
+ if ( @ $_POST['price'] ) {
145
+ list( $_GET['min_price'], $_GET['max_price'] ) = $_POST['price'];
146
+ add_filter( 'loop_shop_post_in', array( 'WC_QUERY', 'price_filter' ) );
147
+ }
148
+ }
149
+ }
150
+
151
  public static function apply_user_filters( $query ) {
152
  if( $query->is_main_query() and
153
+ ( is_shop() or is_product_category() or is_product_taxonomy() or is_product_tag() )
 
 
 
154
  ) {
155
  br_aapf_args_converter();
156
  $args = br_aapf_args_parser();