Created
August 22, 2017 17:03
-
-
Save evrekhman/1ca408a7ba2f79367f71537c871306cc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); | |
/** @var array $arParams */ | |
/** @var array $arResult */ | |
/** @global CMain $APPLICATION */ | |
/** @global CUser $USER */ | |
/** @global CDatabase $DB */ | |
/** @var CBitrixComponentTemplate $this */ | |
/** @var string $templateName */ | |
/** @var string $templateFile */ | |
/** @var string $templateFolder */ | |
/** @var string $componentPath */ | |
/** @var CBitrixComponent $component */ | |
$this->setFrameMode(true); | |
$templateData = array( | |
'TEMPLATE_THEME' => $this->GetFolder().'/themes/'.$arParams['TEMPLATE_THEME'].'/colors.css', | |
'TEMPLATE_CLASS' => 'bx-'.$arParams['TEMPLATE_THEME'] | |
); | |
if (isset($templateData['TEMPLATE_THEME'])) | |
{ | |
$this->addExternalCss($templateData['TEMPLATE_THEME']); | |
} | |
$this->addExternalCss("/bitrix/css/main/bootstrap.css"); | |
$this->addExternalCss("/bitrix/css/main/font-awesome.css"); | |
?> | |
<div class=" cat-filter bx-filter <?=$templateData["TEMPLATE_CLASS"]?> "> | |
<form name="<?echo $arResult["FILTER_NAME"]."_form"?>" action="<?echo $arResult["FORM_ACTION"]?>" method="get" class="smartfilter"> | |
<?foreach($arResult["HIDDEN"] as $arItem):?> | |
<input type="hidden" name="<?echo $arItem["CONTROL_NAME"]?>" id="<?echo $arItem["CONTROL_ID"]?>" value="<?echo $arItem["HTML_VALUE"]?>" /> | |
<?endforeach;?> | |
<?foreach($arResult["ITEMS"] as $key=>$arItem)//prices | |
{ | |
$key = $arItem["ENCODED_ID"]; | |
if(isset($arItem["PRICE"])): | |
if ($arItem["VALUES"]["MAX"]["VALUE"] - $arItem["VALUES"]["MIN"]["VALUE"] <= 0) | |
continue; | |
$step_num = 4; | |
$step = ($arItem["VALUES"]["MAX"]["VALUE"] - $arItem["VALUES"]["MIN"]["VALUE"]) / $step_num; | |
$prices = array(); | |
if (Bitrix\Main\Loader::includeModule("currency")) | |
{ | |
for ($i = 0; $i < $step_num; $i++) | |
{ | |
$prices[$i] = CCurrencyLang::CurrencyFormat($arItem["VALUES"]["MIN"]["VALUE"] + $step*$i, $arItem["VALUES"]["MIN"]["CURRENCY"], false); | |
} | |
$prices[$step_num] = CCurrencyLang::CurrencyFormat($arItem["VALUES"]["MAX"]["VALUE"], $arItem["VALUES"]["MAX"]["CURRENCY"], false); | |
} | |
else | |
{ | |
$precision = $arItem["DECIMALS"]? $arItem["DECIMALS"]: 0; | |
for ($i = 0; $i < $step_num; $i++) | |
{ | |
$prices[$i] = number_format($arItem["VALUES"]["MIN"]["VALUE"] + $step*$i, $precision, ".", ""); | |
} | |
$prices[$step_num] = number_format($arItem["VALUES"]["MAX"]["VALUE"], $precision, ".", ""); | |
} | |
endif; | |
} | |
//not prices | |
foreach($arResult["ITEMS"] as $key=>$arItem) | |
{ | |
if( | |
empty($arItem["VALUES"]) | |
|| isset($arItem["PRICE"]) | |
) | |
continue; | |
if ( | |
$arItem["DISPLAY_TYPE"] == "A" | |
&& ( | |
$arItem["VALUES"]["MAX"]["VALUE"] - $arItem["VALUES"]["MIN"]["VALUE"] <= 0 | |
) | |
) | |
continue; | |
?> | |
<div class="<?if ($arParams["FILTER_VIEW_MODE"] == "HORIZONTAL"):?>cat-filter__row<?else:?>cat-filter__row<?endif?> bx-filter-parameters-box <?if ($arItem["DISPLAY_EXPANDED"]== "Y"):?>bx-active<?endif?>"> | |
<span class="bx-filter-container-modef"></span> | |
<div class="bx-filter-parameters-box-title" onclick="smartFilter.hideFilterProps(this)"> | |
<span class="bx-filter-parameters-box-hint"><?=$arItem["NAME"]?> | |
<?if ($arItem["FILTER_HINT"] <> ""):?> | |
<i id="item_title_hint_<?echo $arItem["ID"]?>" class="fa fa-question-circle"></i> | |
<script type="text/javascript"> | |
new top.BX.CHint({ | |
parent: top.BX("item_title_hint_<?echo $arItem["ID"]?>"), | |
show_timeout: 10, | |
hide_timeout: 200, | |
dx: 2, | |
preventHide: true, | |
min_width: 250, | |
hint: '<?= CUtil::JSEscape($arItem["FILTER_HINT"])?>' | |
}); | |
</script> | |
<?endif?> | |
<i data-role="prop_angle" class="fa fa-angle-<?if ($arItem["DISPLAY_EXPANDED"]== "Y"):?>up<?else:?>down<?endif?>"></i> | |
</span> | |
</div> | |
<? | |
$arCur = current($arItem["VALUES"]); | |
switch ($arItem["DISPLAY_TYPE"]) | |
{ | |
case "A"://NUMBERS_WITH_SLIDER | |
//ПОЛЗУНОК //ПОЛЗУНОК //ПОЛЗУНОК //ПОЛЗУНОК //ПОЛЗУНОК?> | |
<div class="col-xs-6 bx-filter-parameters-box-container-block bx-left"> | |
<i class="bx-ft-sub"><?=GetMessage("CT_BCSF_FILTER_FROM")?></i> | |
<div class="bx-filter-input-container"> | |
<input | |
class="min-price" | |
type="text" | |
name="<?echo $arItem["VALUES"]["MIN"]["CONTROL_NAME"]?>" | |
id="<?echo $arItem["VALUES"]["MIN"]["CONTROL_ID"]?>" | |
value="<?echo $arItem["VALUES"]["MIN"]["HTML_VALUE"]?>" | |
size="5" | |
onkeyup="smartFilter.keyup(this)" | |
/> | |
</div> | |
</div> | |
<div class="col-xs-6 bx-filter-parameters-box-container-block bx-right"> | |
<i class="bx-ft-sub"><?=GetMessage("CT_BCSF_FILTER_TO")?></i> | |
<div class="bx-filter-input-container"> | |
<input | |
class="max-price" | |
type="text" | |
name="<?echo $arItem["VALUES"]["MAX"]["CONTROL_NAME"]?>" | |
id="<?echo $arItem["VALUES"]["MAX"]["CONTROL_ID"]?>" | |
value="<?echo $arItem["VALUES"]["MAX"]["HTML_VALUE"]?>" | |
size="5" | |
onkeyup="smartFilter.keyup(this)" | |
/> | |
</div> | |
</div> | |
<div class="col-xs-10 col-xs-offset-1 bx-ui-slider-track-container"> | |
<div class="bx-ui-slider-track" id="drag_track_<?=$key?>"> | |
<? | |
$precision = $arItem["DECIMALS"]? $arItem["DECIMALS"]: 0; | |
$step = ($arItem["VALUES"]["MAX"]["VALUE"] - $arItem["VALUES"]["MIN"]["VALUE"]) / 4; | |
$value1 = number_format($arItem["VALUES"]["MIN"]["VALUE"], $precision, ".", ""); | |
$value2 = number_format($arItem["VALUES"]["MIN"]["VALUE"] + $step, $precision, ".", ""); | |
$value3 = number_format($arItem["VALUES"]["MIN"]["VALUE"] + $step * 2, $precision, ".", ""); | |
$value4 = number_format($arItem["VALUES"]["MIN"]["VALUE"] + $step * 3, $precision, ".", ""); | |
$value5 = number_format($arItem["VALUES"]["MAX"]["VALUE"], $precision, ".", ""); | |
?> | |
<div class="bx-ui-slider-part p1"><span><?=$value1?></span></div> | |
<div class="bx-ui-slider-part p2"><span><?=$value2?></span></div> | |
<div class="bx-ui-slider-part p3"><span><?=$value3?></span></div> | |
<div class="bx-ui-slider-part p4"><span><?=$value4?></span></div> | |
<div class="bx-ui-slider-part p5"><span><?=$value5?></span></div> | |
<div class="bx-ui-slider-pricebar-vd" style="left: 0;right: 0;" id="colorUnavailableActive_<?=$key?>"></div> | |
<div class="bx-ui-slider-pricebar-vn" style="left: 0;right: 0;" id="colorAvailableInactive_<?=$key?>"></div> | |
<div class="bx-ui-slider-pricebar-v" style="left: 0;right: 0;" id="colorAvailableActive_<?=$key?>"></div> | |
<div class="bx-ui-slider-range" id="drag_tracker_<?=$key?>" style="left: 0;right: 0;"> | |
<a class="bx-ui-slider-handle left" style="left:0;" href="javascript:void(0)" id="left_slider_<?=$key?>"></a> | |
<a class="bx-ui-slider-handle right" style="right:0;" href="javascript:void(0)" id="right_slider_<?=$key?>"></a> | |
</div> | |
</div> | |
</div> | |
<? | |
$arJsParams = array( | |
"leftSlider" => 'left_slider_'.$key, | |
"rightSlider" => 'right_slider_'.$key, | |
"tracker" => "drag_tracker_".$key, | |
"trackerWrap" => "drag_track_".$key, | |
"minInputId" => $arItem["VALUES"]["MIN"]["CONTROL_ID"], | |
"maxInputId" => $arItem["VALUES"]["MAX"]["CONTROL_ID"], | |
"minPrice" => $arItem["VALUES"]["MIN"]["VALUE"], | |
"maxPrice" => $arItem["VALUES"]["MAX"]["VALUE"], | |
"curMinPrice" => $arItem["VALUES"]["MIN"]["HTML_VALUE"], | |
"curMaxPrice" => $arItem["VALUES"]["MAX"]["HTML_VALUE"], | |
"fltMinPrice" => intval($arItem["VALUES"]["MIN"]["FILTERED_VALUE"]) ? $arItem["VALUES"]["MIN"]["FILTERED_VALUE"] : $arItem["VALUES"]["MIN"]["VALUE"] , | |
"fltMaxPrice" => intval($arItem["VALUES"]["MAX"]["FILTERED_VALUE"]) ? $arItem["VALUES"]["MAX"]["FILTERED_VALUE"] : $arItem["VALUES"]["MAX"]["VALUE"], | |
"precision" => $arItem["DECIMALS"]? $arItem["DECIMALS"]: 0, | |
"colorUnavailableActive" => 'colorUnavailableActive_'.$key, | |
"colorAvailableActive" => 'colorAvailableActive_'.$key, | |
"colorAvailableInactive" => 'colorAvailableInactive_'.$key, | |
); | |
?> | |
<script type="text/javascript"> | |
BX.ready(function(){ | |
window['trackBar<?=$key?>'] = new BX.Iblock.SmartFilter(<?=CUtil::PhpToJSObject($arJsParams)?>); | |
}); | |
</script> | |
<? | |
break; | |
case "P"://DROPDOWN | |
$checkedItemExist = false; | |
//СПИСОК | |
?> | |
<div class="col-xs-12"> | |
<div class="bx-filter-select-container"> | |
<div class="bx-filter-select-block" onclick="smartFilter.showDropDownPopup(this, '<?=CUtil::JSEscape($key)?>')"> | |
<div class="bx-filter-select-text" data-role="currentOption"> | |
<? | |
foreach ($arItem["VALUES"] as $val => $ar) | |
{ | |
if ($ar["CHECKED"]) | |
{ | |
echo $ar["VALUE"]; | |
$checkedItemExist = true; | |
} | |
} | |
if (!$checkedItemExist) | |
{ | |
echo GetMessage("CT_BCSF_FILTER_ALL"); | |
} | |
?> | |
</div> | |
<div class="bx-filter-select-arrow"></div> | |
<input | |
style="display: none" | |
type="radio" | |
name="<?=$arCur["CONTROL_NAME_ALT"]?>" | |
id="<? echo "all_".$arCur["CONTROL_ID"] ?>" | |
value="" | |
/> | |
<?foreach ($arItem["VALUES"] as $val => $ar):?> | |
<input | |
style="display: none" | |
type="radio" | |
name="<?=$ar["CONTROL_NAME_ALT"]?>" | |
id="<?=$ar["CONTROL_ID"]?>" | |
value="<? echo $ar["HTML_VALUE_ALT"] ?>" | |
<? echo $ar["CHECKED"]? 'checked="checked"': '' ?> | |
/> | |
<?endforeach?> | |
<div class="bx-filter-select-popup" data-role="dropdownContent" style="display: none;"> | |
<ul> | |
<li> | |
<label for="<?="all_".$arCur["CONTROL_ID"]?>" class="bx-filter-param-label" data-role="label_<?="all_".$arCur["CONTROL_ID"]?>" onclick="smartFilter.selectDropDownItem(this, '<?=CUtil::JSEscape("all_".$arCur["CONTROL_ID"])?>')"> | |
<? echo GetMessage("CT_BCSF_FILTER_ALL"); ?> | |
</label> | |
</li> | |
<? | |
foreach ($arItem["VALUES"] as $val => $ar): | |
$class = ""; | |
if ($ar["CHECKED"]) | |
$class.= " selected"; | |
if ($ar["DISABLED"]) | |
$class.= " disabled"; | |
?> | |
<li> | |
<label for="<?=$ar["CONTROL_ID"]?>" class="bx-filter-param-label<?=$class?>" data-role="label_<?=$ar["CONTROL_ID"]?>" onclick="smartFilter.selectDropDownItem(this, '<?=CUtil::JSEscape($ar["CONTROL_ID"])?>')"><?=$ar["VALUE"]?></label> | |
</li> | |
<?endforeach?> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</div> | |
<? | |
break; | |
default://CHECKBOXES | |
?> | |
<div class="col-xs-12"> | |
<?foreach($arItem["VALUES"] as $val => $ar):?> | |
<div class="checkbox"> | |
<label data-role="label_<?=$ar["CONTROL_ID"]?>" class="bx-filter-param-label <? echo $ar["DISABLED"] ? 'disabled': '' ?>" for="<? echo $ar["CONTROL_ID"] ?>"> | |
<span class="bx-filter-input-checkbox"> | |
<input | |
type="checkbox" | |
value="<? echo $ar["HTML_VALUE"] ?>" | |
name="<? echo $ar["CONTROL_NAME"] ?>" | |
id="<? echo $ar["CONTROL_ID"] ?>" | |
<? echo $ar["CHECKED"]? 'checked="checked"': '' ?> | |
onclick="smartFilter.click(this)" | |
/> | |
<span class="bx-filter-param-text" title="<?=$ar["VALUE"];?>"><?=$ar["VALUE"];?><? | |
if ($arParams["DISPLAY_ELEMENT_COUNT"] !== "N" && isset($ar["ELEMENT_COUNT"])): | |
?> (<span data-role="count_<?=$ar["CONTROL_ID"]?>"><? echo $ar["ELEMENT_COUNT"]; ?></span>)<? | |
endif;?></span> | |
</span> | |
</label> | |
</div> | |
<?endforeach;?> | |
</div> | |
<? | |
} | |
?> | |
</div> | |
<? | |
} | |
?> | |
<input | |
class="btn btn-themes" | |
type="submit" | |
id="set_filter" | |
name="set_filter" | |
value="<?=GetMessage("CT_BCSF_SET_FILTER")?>" | |
/> | |
<input | |
class="btn btn-link" | |
type="submit" | |
id="del_filter" | |
name="del_filter" | |
value="<?=GetMessage("CT_BCSF_DEL_FILTER")?>" | |
/> | |
<div class="bx-filter-popup-result <?if ($arParams["FILTER_VIEW_MODE"] == "VERTICAL") echo $arParams["POPUP_POSITION"]?>" id="modef" <?if(!isset($arResult["ELEMENT_COUNT"])) echo 'style="display:none"';?> style="display: inline-block;"> | |
<?echo GetMessage("CT_BCSF_FILTER_COUNT", array("#ELEMENT_COUNT#" => '<span id="modef_num">'.intval($arResult["ELEMENT_COUNT"]).'</span>'));?> | |
<span class="arrow"></span> | |
<br/> | |
<a href="<?echo $arResult["FILTER_URL"]?>" target=""><?echo GetMessage("CT_BCSF_FILTER_SHOW")?></a> | |
</div> | |
</form> | |
<script type="text/javascript"> | |
var smartFilter = new JCSmartFilter('<?echo CUtil::JSEscape($arResult["FORM_ACTION"])?>', '<?=CUtil::JSEscape($arParams["FILTER_VIEW_MODE"])?>', <?=CUtil::PhpToJSObject($arResult["JS_FILTER_PARAMS"])?>); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment