// 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:
rMalie
2011-09-15 16:10:59 +00:00
parent 8d9309ba23
commit 1977f1d851
8 changed files with 99 additions and 83 deletions
+6 -34
View File
@@ -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);
+21 -5
View File
@@ -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
+9 -1
View File
@@ -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}