diff --git a/modules/blocklayered/blocklayered.css b/modules/blocklayered/blocklayered.css index 85e20b73d..1ba014980 100644 --- a/modules/blocklayered/blocklayered.css +++ b/modules/blocklayered/blocklayered.css @@ -111,4 +111,10 @@ #layered_form input[type=radio] { margin-left: 2px; vertical-align: middle; +} +.layered_price_range { + margin-left: 7px; +} +.layered_price_range_unit { + margin-right: 7px; } \ No newline at end of file diff --git a/modules/blocklayered/blocklayered.js b/modules/blocklayered/blocklayered.js index 628be3399..329b9aa89 100644 --- a/modules/blocklayered/blocklayered.js +++ b/modules/blocklayered/blocklayered.js @@ -45,9 +45,30 @@ $(document).ready(function() }); // Click on checkbox - $('#layered_form input, #layered_form select').live('change', function() + $('#layered_form input, #layered_form select').live('keyup', function() { - reloadContent(); + if ($(this).attr('timeout_id')) + window.clearTimeout($(this).attr('timeout_id')); + + $(this).attr('timeout_id', window.setTimeout(function(it) { + var filter = $(it).attr('id').replace(/^layered_(.+)_range_.*$/, '$1'); + + var value_min = parseInt($('#layered_'+filter+'_range_min').val()); + if (isNaN(value_min)) + value_min = 0; + $('#layered_'+filter+'_range_min').val(value_min); + + var value_max = parseInt($('#layered_'+filter+'_range_max').val()); + if (isNaN(value_max)) + value_max = 0; + $('#layered_'+filter+'_range_max').val(value_max); + + if (value_max < value_min) { + $('#layered_'+filter+'_range_max').val($(it).val()); + $('#layered_'+filter+'_range_min').val($(it).val()); + } + reloadContent(); + }, 500, this)); }); $('.radio').live('click', function() { @@ -138,27 +159,6 @@ function initLayered() } } -function getValueSelected(){ - - var checkboxChecked = ''; - $('#layered_form input:checkbox:checked').each(function(){ - checkboxChecked += '#' + $(this).attr('id')+'='+$(this).val(); - }); - $('#layered_form input:hidden').each(function(){ - checkboxChecked += '#' + $(this).attr('name')+'='+$(this).val(); - }); - $(['price','weight']).each(function(i, filter) { - if ($('#layered_'+filter+'_slider').length) - { - if (typeof($('#layered_'+filter+'_slider').slider('values', 0)) != 'object') - { - checkboxChecked += '#'+filter+'='+$('#layered_'+filter+'_slider').slider('values', 0)+'_'+$('#layered_'+filter+'_slider').slider('values', 1); - } - } - }); - return checkboxChecked; -} - function paginationButton() { $('#pagination a').not(':hidden').each(function () { if ($(this).attr('href').search('&p=') == -1) { @@ -196,9 +196,17 @@ function cancelFilter() { if ($(this).attr('rel').search(/_slider$/) > 0) { - $('#'+$(this).attr('rel')).slider('values' , 0, $('#'+$(this).attr('rel')).slider('option' , 'min' )); - $('#'+$(this).attr('rel')).slider('values' , 1, $('#'+$(this).attr('rel')).slider('option' , 'max' )); - $('#'+$(this).attr('rel')).slider('option', 'slide')(0,{values:[$('#'+$(this).attr('rel')).slider( 'option' , 'min' ), $('#'+$(this).attr('rel')).slider( 'option' , 'max' )]}); + if ($('#'+$(this).attr('rel')).lenght) + { + $('#'+$(this).attr('rel')).slider('values' , 0, $('#'+$(this).attr('rel')).slider('option' , 'min' )); + $('#'+$(this).attr('rel')).slider('values' , 1, $('#'+$(this).attr('rel')).slider('option' , 'max' )); + $('#'+$(this).attr('rel')).slider('option', 'slide')(0,{values:[$('#'+$(this).attr('rel')).slider( 'option' , 'min' ), $('#'+$(this).attr('rel')).slider( 'option' , 'max' )]}); + } + else if($('#'+$(this).attr('rel').replace(/_slider$/, '_range_min')).length) + { + $('#'+$(this).attr('rel').replace(/_slider$/, '_range_min')).val($('#'+$(this).attr('rel').replace(/_slider$/, '_range_min')).attr('limitValue')); + $('#'+$(this).attr('rel').replace(/_slider$/, '_range_max')).val($('#'+$(this).attr('rel').replace(/_slider$/, '_range_max')).attr('limitValue')); + } } else { @@ -249,6 +257,14 @@ function reloadContent(params_plus) if (typeof(sliderStart) == 'number' && typeof(sliderStop) == 'number') data += '&'+$(this).attr('id')+'='+sliderStart+'_'+sliderStop; }); + + $(['price', 'weight']).each(function(it, sliderType) + { + if ($('#layered_'+sliderType+'_range_min').length) + { + data += '&layered_'+sliderType+'_slider='+$('#layered_'+sliderType+'_range_min').val()+'_'+$('#layered_'+sliderType+'_range_max').val(); + } + }); $('#layered_form .select option:checked').each( function () { data += '&'+$(this).attr('id') + '=' + $(this).val(); @@ -283,7 +299,8 @@ function reloadContent(params_plus) success: function(result) { $('#layered_block_left').after('
').remove(); - $('#tmp_layered_block_left').html(result.filtersBlock).attr('id', 'layered_block_left'); + if (result.filtersBlock) + $('#tmp_layered_block_left').html(result.filtersBlock).attr('id', 'layered_block_left'); $('.category-product-count').html(result.categoryCount); @@ -320,13 +337,19 @@ function reloadContent(params_plus) // Get all sliders value $(['price', 'weight']).each(function(it, sliderType) { - if ($('#layered_'+sliderType+'_slider')) + if ($('#layered_'+sliderType+'_slider').length) { // Check if slider is enable & if slider is used if(typeof($('#layered_'+sliderType+'_slider').slider('values', 0)) != 'object') + { if ($('#layered_'+sliderType+'_slider').slider('values', 0) != $('#layered_'+sliderType+'_slider').slider('option' , 'min') || $('#layered_'+sliderType+'_slider').slider('values', 1) != $('#layered_'+sliderType+'_slider').slider('option' , 'max')) current_friendly_url += '/'+sliderType+'-'+$('#layered_'+sliderType+'_slider').slider('values', 0)+'-'+$('#layered_'+sliderType+'_slider').slider('values', 1) + } + } + else if ($('#layered_'+sliderType+'_range_min').length) + { + current_friendly_url += '/'+sliderType+'-'+$('#layered_'+sliderType+'_range_min').val()+'-'+$('#layered_'+sliderType+'_range_max').val(); } }); if (current_friendly_url == '#') diff --git a/modules/blocklayered/blocklayered.php b/modules/blocklayered/blocklayered.php index d3b2e42ea..36778b6cc 100644 --- a/modules/blocklayered/blocklayered.php +++ b/modules/blocklayered/blocklayered.php @@ -2361,6 +2361,20 @@ class BlockLayered extends Module if ($priceArray['max'] != $priceArray['min'] && $priceArray['min'] != null) { + if ($filter['filter_type'] == 2) + { + $priceArray['list_of_values'] = array(); + $nbr_of_value = $filter['filter_show_limit']; + if ($nbr_of_value < 2) + $nbr_of_value = 4; + $delta = ($priceArray['max'] - $priceArray['min']) / $nbr_of_value; + $current_step = $priceArray['min']; + for ($i = 0; $i < $nbr_of_value; $i++) + $priceArray['list_of_values'][] = array( + (int)($priceArray['min'] + $i * $delta), + (int)($priceArray['min'] + ($i + 1) * $delta) + ); + } if (isset($selectedFilters['price']) && isset($selectedFilters['price'][0]) && isset($selectedFilters['price'][1])) { diff --git a/modules/blocklayered/blocklayered.tpl b/modules/blocklayered/blocklayered.tpl index 7cfcf53f6..ae307663f 100644 --- a/modules/blocklayered/blocklayered.tpl +++ b/modules/blocklayered/blocklayered.tpl @@ -131,35 +131,64 @@ param_product_url = ''; {/if} {else} - -