Merge branch 'ticket/r16686-filter_back' into develop
Conflicts: modules/filtervp/filter.tpl modules/filtervp/filtervp.php
This commit is contained in:
commit
bbec1c0ef4
@ -1,23 +1,15 @@
|
||||
{if count($attr) > 0}
|
||||
<div class="block_filter">
|
||||
{if count($sizes) > 0}
|
||||
<div class="block_filter">
|
||||
<div class="content">
|
||||
<h4 class="open">{l s='Recherche par' mod='filtervp'}</h4>
|
||||
<h4 class="open{if $smarty.get.id_category==$cookie->filters_category && !empty($cookie->filters_value)} active{/if}">{l s='Recherche par' mod='filtervp'}</h4>
|
||||
|
||||
<div class="content_filter">
|
||||
<h5>{$attr[0]['group']}</h5>
|
||||
{assign var="current_name" value=$attr[0]['group']}
|
||||
<ul class="filters" id="filters">
|
||||
{foreach from=$attr key=key item=attribute}
|
||||
{if $key!=0 && $current_name!=$attribute['group']}
|
||||
</ul>
|
||||
<h5>{$attribute['group']}</h5>
|
||||
<ul class="filters">
|
||||
{/if}
|
||||
<ul id="filters">
|
||||
{foreach from=$sizes item=size}
|
||||
<li>
|
||||
<input type="checkbox" name="size" value="{$attribute['id_attribute']}" id="size_{$attribute['id_attribute']}">
|
||||
<label for="size_{$attribute['id_attribute']}">{$attribute['name']}</label>
|
||||
<input type="checkbox" name="size" value="{$size.id_attribute}" id="size_{$size.id_attribute}">
|
||||
<label for="size_{$size.id_attribute}">{$size.name}</label>
|
||||
</li>
|
||||
{assign var="current_name" value=$attribute['group']}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
class Filtervp extends Module {
|
||||
// const FILTER_ID = 75;
|
||||
const FILTER_ID = 1;
|
||||
// const FILTER_SIZE = 272;
|
||||
class Filtervp extends Module
|
||||
{
|
||||
const FILTER_ID = 75;
|
||||
const FILTER_SIZE = 272;
|
||||
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'filtervp';
|
||||
$this->tab = 'front_office_features';
|
||||
$this->version = '1.0';
|
||||
@ -15,103 +16,44 @@ class Filtervp extends Module {
|
||||
$this->description = $this->l('Enable to filter by size in VP.');
|
||||
}
|
||||
|
||||
public function install() {
|
||||
if(!parent::install()
|
||||
OR !$this->registerHook('displayLeftVP')) {
|
||||
return FALSE;
|
||||
public function install()
|
||||
{
|
||||
if (!parent::install()
|
||||
|| !$this->registerHook('displayLeftVP')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function hookPrivateSales_Edit($params) {
|
||||
public function hookdisplayLeftVP($params)
|
||||
{
|
||||
global $smarty;
|
||||
$sizes = self::getAllValueAttr(Filtervp::FILTER_ID, Tools::getValue('id_category'));
|
||||
|
||||
$attr_groups = Db::getInstance()->ExecuteS('
|
||||
SELECT
|
||||
al.`name`,
|
||||
a.`id_attribute_group`'.($params['sale'] !== NULL? ', (
|
||||
SELECT IFNULL(s.`id_sale`, NULL)
|
||||
FROM `'._DB_PREFIX_.'attribute_group_ps` s
|
||||
WHERE a.`id_attribute_group` = s.`id_attribute_group` AND s.`id_sale` = '.$params['sale']->id.'
|
||||
) AS `id_sale`': '').'
|
||||
FROM ps_attribute_group a
|
||||
LEFT JOIN ps_attribute_group_lang al ON al.id_attribute_group = a.id_attribute_group
|
||||
WHERE al.`id_lang` = 2
|
||||
');
|
||||
|
||||
echo '
|
||||
<div class="form-group">
|
||||
<label class="control-label">'.$this->l('Attribute groups:').'</label>
|
||||
<div class="">
|
||||
<select id="attr_groups" name="attr_groups[]" multiple="multiple" size="5" class="form-control">';
|
||||
$all_opt = array();
|
||||
foreach($attr_groups as $attribute) {
|
||||
$all_opt[] = $attribute['id_attribute_group'];
|
||||
echo '<option value="'.$attribute['id_attribute_group'].'"'.(isset($attribute['id_sale']) && $attribute['id_sale'] !== NULL?' selected="selected"':'').'>'.$attribute['name'].'</option>';
|
||||
}
|
||||
echo '
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<button type="button" class="select_all_for_attr_group btn btn-default">Tout</button>
|
||||
<button type="button" class="clear_for_attr_group btn btn-default">Clear</button>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#attr_groups").select2({
|
||||
maximumSelectionLength: '.count($attr_groups).',
|
||||
placeholder: "'.$this->l('Select one or more attribute group:').'",
|
||||
allowClear: true
|
||||
});
|
||||
$(".select_all_for_attr_group").on("click", function () { $("#attr_groups").select2().val(["'.(implode('","',$all_opt)).'"]).trigger("change"); });
|
||||
$(".clear_for_attr_group").on("click", function () { $("#attr_groups").select2().val(null).trigger("change"); });
|
||||
});
|
||||
</script>
|
||||
<div class="clear"></div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
public function hookPrivateSales_Delete($params) {
|
||||
Db::getInstance()->Execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'attribute_group_ps`
|
||||
WHERE `id_sale` = '.$params['sale']->id
|
||||
);
|
||||
}
|
||||
|
||||
public function hookPrivateSales_Create($params) {
|
||||
if($attr_groups = Tools::getValue('attr_groups')) {
|
||||
foreach($attr_groups as $group) {
|
||||
Db::getInstance()->Execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'attribute_group_ps` VALUES (
|
||||
'.(int) $group.', '.$params['sale']->id.'
|
||||
)
|
||||
');
|
||||
}
|
||||
if (empty($sizes)) {
|
||||
$sizes = self::getAllValueAttr(self::FILTER_SIZE, Tools::getValue('id_category'));
|
||||
$name = self::getAttrName(self::FILTER_SIZE);
|
||||
} else {
|
||||
$name = self::getAttrName(self::FILTER_ID);
|
||||
}
|
||||
}
|
||||
|
||||
public function hookPrivateSales_Update($params) {
|
||||
Db::getInstance()->Execute('
|
||||
DELETE FROM `'._DB_PREFIX_.'attribute_group_ps`
|
||||
WHERE `id_sale` = '.$params['sale']->id
|
||||
);
|
||||
$this->hookPrivateSales_Create($params);
|
||||
}
|
||||
|
||||
public function hookdisplayLeftVP($params) {
|
||||
global $smarty;
|
||||
$attributes = self::getAllAttrByGroup(Tools::getValue('id_category'));
|
||||
if ($name == 'Tailles') {
|
||||
$name = 'Taille';
|
||||
};
|
||||
|
||||
$smarty->assign(array(
|
||||
'attr' => $attributes,
|
||||
'name' => $name,
|
||||
'sizes' => $sizes,
|
||||
));
|
||||
|
||||
return $this->display(__FILE__, 'filter.tpl');
|
||||
}
|
||||
return $this->display(__FILE__, 'filter.tpl');
|
||||
}
|
||||
|
||||
|
||||
public static function getAllValueAttr($id_attr, $id_cat){
|
||||
public static function getAllValueAttr($id_attr, $id_cat)
|
||||
{
|
||||
global $cookie;
|
||||
|
||||
|
||||
$id_lang = $cookie->id_lang;
|
||||
$results = Db::getInstance()->ExecuteS('
|
||||
SELECT
|
||||
@ -131,41 +73,16 @@ class Filtervp extends Module {
|
||||
ORDER BY
|
||||
al.`name` ASC
|
||||
');
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function getAllAttrByGroup($id_cat)
|
||||
public static function getAttrName($id_attr)
|
||||
{
|
||||
global $cookie;
|
||||
|
||||
$id_lang = $cookie->id_lang;
|
||||
$results = Db::getInstance()->ExecuteS('
|
||||
SELECT
|
||||
al.`name`,
|
||||
a.`id_attribute`,
|
||||
agl.`name` as `group`
|
||||
FROM
|
||||
`'._DB_PREFIX_.'attribute` a
|
||||
LEFT JOIN '._DB_PREFIX_.'attribute_lang al ON al.id_lang = '.(int)$id_lang.' AND al.id_attribute = a.id_attribute
|
||||
LEFT JOIN '._DB_PREFIX_.'attribute_group_lang agl ON agl.id_attribute_group = a.id_attribute_group AND agl.id_lang = '.(int)$id_lang.'
|
||||
LEFT JOIN '._DB_PREFIX_.'attribute_group_ps agp ON agp.id_attribute_group = agl.id_attribute_group
|
||||
LEFT JOIN '._DB_PREFIX_.'privatesale_category pc ON pc.id_sale = agp.id_sale
|
||||
LEFT JOIN '._DB_PREFIX_.'category_product cp ON cp.id_category = pc.id_category
|
||||
LEFT JOIN '._DB_PREFIX_.'product p ON cp.id_product = p.id_product
|
||||
INNER JOIN ps_product_attribute pa ON pa.id_product = cp.id_product
|
||||
INNER JOIN ps_product_attribute_combination pac ON pac.id_attribute = a.id_attribute AND pac.id_product_attribute = pa.id_product_attribute
|
||||
WHERE agp.id_sale IS NOT NULL AND pc.id_category = '.(int)$id_cat.'
|
||||
GROUP BY
|
||||
a.`id_attribute`
|
||||
ORDER BY
|
||||
agl.`name` ASC, al.`name` ASC
|
||||
');
|
||||
return $results;
|
||||
}
|
||||
|
||||
public static function getAttrName($id_attr){
|
||||
global $cookie;
|
||||
|
||||
$id_lang = $cookie->id_lang;
|
||||
|
||||
return Db::getInstance()->getValue('
|
||||
SELECT
|
||||
`public_name`
|
||||
|
Loading…
Reference in New Issue
Block a user