// Merge -> revision 8608
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@8612 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -41,14 +41,12 @@ $(document).ready(function()
|
||||
$('<input />').attr('type', 'hidden').attr('name', $(this).attr('name')).val($(this).attr('rel')).appendTo('#layered_form');
|
||||
else
|
||||
$('\'input[name='+$(this).attr('name')+']:hidden\'').remove();
|
||||
window.location = '#'+$(this).next().children(1).attr('href').replace(/https?:\/\/.*\/\d+-[^\/]+/, '');
|
||||
reloadContent();
|
||||
});
|
||||
|
||||
// Click on checkbox
|
||||
$('#layered_form input[type=checkbox]').live('click', function()
|
||||
{
|
||||
window.location = '#'+$(this).next().children(1).attr('href').replace(/https?:\/\/.*\/\d+-[^\/]+/, '');
|
||||
reloadContent();
|
||||
});
|
||||
|
||||
@@ -57,7 +55,6 @@ $(document).ready(function()
|
||||
click: function() {
|
||||
if($(this).parent().parent().find('input').attr('disabled') == '')
|
||||
{
|
||||
window.location = '#'+this.href.replace(/https?:\/\/.*\/\d+-[^\/]+/, '');
|
||||
$(this).parent().parent().find('input').click();
|
||||
reloadContent();
|
||||
}
|
||||
@@ -90,34 +87,12 @@ function initSliders()
|
||||
function initLayered()
|
||||
{
|
||||
initSliders();
|
||||
if (window.location.href.split('#').length == 2)
|
||||
if (window.location.href.split('#').length == 2 && window.location.href.split('#')[1] != '')
|
||||
{
|
||||
var params = window.location.href.split('#')[1];
|
||||
reloadContent('&selected_filters='+params, true);
|
||||
reloadContent('&selected_filters='+params);
|
||||
}
|
||||
else
|
||||
{
|
||||
var params = window.location.href;
|
||||
params = friendlyUrl(params, 'long');
|
||||
params = params.split('#');
|
||||
params.shift();
|
||||
$(params).each(function(it, val)
|
||||
{
|
||||
allowReload = true;
|
||||
if (val.split('=')[0] == 'price' || val.split('=')[0] == 'weight')
|
||||
{
|
||||
$("#layered_"+val.split('=')[0]+"_slider").slider('values', 0, val.split('=')[1].split('_')[0]);
|
||||
$("#layered_"+val.split('=')[0]+"_slider").slider('values', 1, val.split('=')[1].split('_')[1]);
|
||||
$("#layered_"+val.split('=')[0]+"_slider").slider('option', 'slide')(0,{values:[val.split('=')[1].split('_')[0], val.split('=')[1].split('_')[1]]});
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#'+val.split('=')[0]).click();
|
||||
}
|
||||
});
|
||||
reloadContent();
|
||||
}
|
||||
}
|
||||
|
||||
function updatelink(link)
|
||||
{
|
||||
@@ -234,14 +209,8 @@ function openCloseFilter()
|
||||
});
|
||||
}
|
||||
|
||||
function reloadContent(params_plus, force)
|
||||
function reloadContent(params_plus)
|
||||
{
|
||||
if (typeof(allowReload) == 'undefined' && typeof(force) != 'undefined' && force != true)
|
||||
{
|
||||
allowReload = true;
|
||||
return;
|
||||
}
|
||||
|
||||
for(i = 0; i < ajaxQueries.length; i++)
|
||||
ajaxQueries[i].abort();
|
||||
ajaxQueries = new Array();
|
||||
@@ -317,6 +286,9 @@ function reloadContent(params_plus, force)
|
||||
reloadProductComparison();
|
||||
}
|
||||
initSliders();
|
||||
|
||||
if(typeof(current_friendly_url != 'undefined'))
|
||||
window.location = current_friendly_url;
|
||||
}
|
||||
});
|
||||
ajaxQueries.push(ajaxQuery);
|
||||
|
||||
@@ -1387,7 +1387,7 @@ class BlockLayered extends Module
|
||||
/* If the current category isn't defined of if it's homepage, we have nothing to display */
|
||||
$id_parent = (int)Tools::getValue('id_category', Tools::getValue('id_category_layered', 1));
|
||||
if ($id_parent == 1)
|
||||
return;
|
||||
return false;
|
||||
|
||||
$queryFilters = ' AND p.active = 1';
|
||||
|
||||
@@ -1888,7 +1888,7 @@ class BlockLayered extends Module
|
||||
{
|
||||
if (is_array($value) AND array_key_exists('checked', $value ))
|
||||
{
|
||||
$paramGroupSelected .= '-'.Tools::link_rewrite($value['name']);
|
||||
$paramGroupSelected .= '-'.str_replace('-', '_', Tools::link_rewrite($value['name']));
|
||||
$paramGroupSelectedArray [Tools::link_rewrite($typeFilter['name'])][] = Tools::link_rewrite($value['name']);
|
||||
|
||||
if (!isset($titleValues[$typeFilter['name']]))
|
||||
@@ -1900,7 +1900,7 @@ class BlockLayered extends Module
|
||||
}
|
||||
if(!empty($paramGroupSelected))
|
||||
{
|
||||
$paramSelected .= '/'.Tools::link_rewrite($typeFilter['name']).$paramGroupSelected;
|
||||
$paramSelected .= '/'.str_replace('-', '_', Tools::link_rewrite($typeFilter['name'])).$paramGroupSelected;
|
||||
$optionCheckedArray[Tools::link_rewrite($typeFilter['name'])] = $paramGroupSelected;
|
||||
}
|
||||
}
|
||||
@@ -1912,21 +1912,32 @@ class BlockLayered extends Module
|
||||
{
|
||||
foreach ($typeFilter['values'] as $key => $values)
|
||||
{
|
||||
$nofollow = false;
|
||||
$optionCheckedCloneArray = $optionCheckedArray;
|
||||
//if not filters checked, add parameter
|
||||
if(!in_array(Tools::link_rewrite($values['name']), $paramGroupSelectedArray[Tools::link_rewrite($typeFilter['name'])]))
|
||||
{
|
||||
//update parameter filter checked before
|
||||
if(array_key_exists(Tools::link_rewrite($typeFilter['name']), $optionCheckedArray))
|
||||
if(array_key_exists(Tools::link_rewrite($typeFilter['name']), $optionCheckedArray)) {
|
||||
$optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])] = $optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])].'-'.str_replace('-', '_', Tools::link_rewrite($values['name']));
|
||||
$nofollow = true;
|
||||
}
|
||||
else
|
||||
$optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])] = '-'.str_replace('-', '_', Tools::link_rewrite($values['name']));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove selected parameters
|
||||
$optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])] = str_replace('-'.str_replace('-', '_', Tools::link_rewrite($values['name'])), '', $optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])]);
|
||||
if(empty($optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])]))
|
||||
unset($optionCheckedCloneArray[Tools::link_rewrite($typeFilter['name'])]);
|
||||
}
|
||||
$parameters = '';
|
||||
foreach ($optionCheckedCloneArray as $keyGroup => $valueGroup)
|
||||
$parameters .= '/'.str_replace('-', '_',$keyGroup).$valueGroup;
|
||||
//write link
|
||||
$typeFilter['values'][$key]['link'] = $linkBase.$parameters;
|
||||
$typeFilter['values'][$key]['rel'] = ($nofollow)?'nofollow':'';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1944,7 +1955,7 @@ class BlockLayered extends Module
|
||||
|
||||
$cache = array('layered_show_qties' => (int)Configuration::get('PS_LAYERED_SHOW_QTIES'), 'id_category_layered' => (int)$id_parent,
|
||||
'selected_filters' => $selectedFilters, 'n_filters' => (int)$nFilters, 'nbr_filterBlocks' => sizeof($filterBlocks), 'filters' => $filterBlocks,
|
||||
'title_values' => $titleValues);
|
||||
'title_values' => $titleValues, 'current_friendly_url' => htmlentities($paramSelected), 'nofollow' => $nofollow);
|
||||
|
||||
return $cache;
|
||||
}
|
||||
@@ -1952,9 +1963,14 @@ class BlockLayered extends Module
|
||||
public function generateFiltersBlock($selectedFilters)
|
||||
{
|
||||
global $smarty;
|
||||
if($filterBlock = $this->getFilterBlock($selectedFilters))
|
||||
{
|
||||
$smarty->assign($this->getFilterBlock($selectedFilters));
|
||||
return $this->display(__FILE__, 'blocklayered.tpl');
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function must be improved
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
|
||||
<!-- Block layered navigation module -->
|
||||
{if $nbr_filterBlocks != 0}
|
||||
<script type="text/javascript">
|
||||
current_friendly_url = '#{$current_friendly_url}';
|
||||
</script>
|
||||
<div id="layered_block_left" class="block">
|
||||
<h4>{l s='Catalog' mod='blocklayered'}</h4>
|
||||
<div class="block_content">
|
||||
@@ -83,7 +86,12 @@
|
||||
{else}
|
||||
<input type="checkbox" class="checkbox" name="layered_{$filter.type_lite}_{$id_value}" id="layered_{$filter.type_lite}{if $id_value || $filter.type == 'quantity'}_{$id_value}{/if}" value="{$id_value}{if $filter.id_key}_{$filter.id_key}{/if}"{if isset($value.checked)} checked="checked"{/if}{if !$value.nbr} disabled="disabled"{/if} />
|
||||
{/if}
|
||||
<label for="layered_{$filter.type_lite}_{$id_value}"{if !$value.nbr} class="disabled"{else}{if isset($filter.is_color_group) && $filter.is_color_group} name="layered_{$filter.type_lite}_{$id_value}" class="layered_color" rel="{$id_value}_{$filter.id_key}"{/if}{/if}><a href='{$value.link}'>{$value.name|escape:html:'UTF-8'}{if $layered_show_qties}<span> ({$value.nbr})</span></a>{/if}</label>
|
||||
<label for="layered_{$filter.type_lite}_{$id_value}"{if !$value.nbr} class="disabled"{else}{if isset($filter.is_color_group) && $filter.is_color_group} name="layered_{$filter.type_lite}_{$id_value}" class="layered_color" rel="{$id_value}_{$filter.id_key}"{/if}{/if}>
|
||||
{if !$value.nbr}
|
||||
{$value.name|escape:html:'UTF-8'}{if $layered_show_qties}<span> (0)</span></a>{/if}
|
||||
{else}
|
||||
<a href="{$value.link}" rel="{$value.rel}">{$value.name|escape:html:'UTF-8'}{if $layered_show_qties}<span> ({$value.nbr})</span></a>{/if}</label>
|
||||
{/if}
|
||||
</li>
|
||||
{/foreach}
|
||||
{else}
|
||||
|
||||
Reference in New Issue
Block a user