BX.debug: Arguments(2) ["BX.ready error: ", TypeError: Cannot read property 'OPENER' of null
at BX.CMenuOpener.setParent (http://medialavka.…, callee: ƒ, Symbol(Symbol.iterator): ƒ]0: "BX.ready error: "1: TypeError: Cannot read property 'OPENER' of null
at BX.CMenuOpener.setParent (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:63:24883)
at new BX.CMenuOpener (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:63:20937)
at HTMLDocument.<anonymous> (http://medialavka.ru/address-program/?bitrix_include_areas=Y&clear_cache=Y:6092:67)
at runReady (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:15:28152)
at HTMLDocument.__readyHandler (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:15:27287)message: "Cannot read property 'OPENER' of null"stack: "TypeError: Cannot read property 'OPENER' of null↵ at BX.CMenuOpener.setParent (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:63:24883)↵ at new BX.CMenuOpener (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:63:20937)↵ at HTMLDocument.<anonymous> (http://medialavka.ru/address-program/?bitrix_include_areas=Y&clear_cache=Y:6092:67)↵ at runReady (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:15:28152)↵ at HTMLDocument.__readyHandler (http://medialavka.ru/bitrix/cache/js/s1/template.main/kernel_main/kernel_main.js?1524771215288214:15:27287)"__proto__: Errorcallee: ƒ ()length: 2Symbol(Symbol.iterator): ƒ values()__proto__: Object
<?
define(PROP_AREA_ID, 52);// id свойства "Район"
define(PROP_STREET_ID, 53);// id свойства "Адрес"
define(PROP_TYPE_ID, 54);// id свойства "Тип"
define(PROP_USING_ID, 90);// id свойства "Занятость" SIA 02.05.2018
$usedPropertyIds = array(PROP_AREA_ID, PROP_STREET_ID, PROP_TYPE_ID, PROP_USING_ID);
$combo = array();
foreach ($arResult['COMBO'] as $comboItem) {
$comboItemRes = array();
foreach ($usedPropertyIds as $propertyId) {
$comboItemRes[$propertyId] = array(
'value' => $comboItem[$propertyId],
'control_id' => $arResult['ITEMS'][$propertyId]['VALUES'][$comboItem[$propertyId]]['CONTROL_ID']
);
}
$combo[] = $comboItemRes;
}
?>
<script>
'use strict';
var addressProgramData = {
combo: <?= json_encode($combo) ?>
}
</script>
function doFiltrenCheckbox(){
try {
var filtrenCheckedCheckboxList = smartFilter.querySelectorAll('.b-filtren .b-filtren_item input[type="checkbox"]:checked');
var arFiltrenCheckedCheckbox = {};
Array.prototype.forEach.call(filtrenCheckedCheckboxList, function(filtrenCheckedCheckbox){
if (filtrenCheckedCheckbox.dataset.filtrenId in arFiltrenCheckedCheckbox) {
arFiltrenCheckedCheckbox[filtrenCheckedCheckbox.dataset.filtrenId].push(filtrenCheckedCheckbox.id);
} else {
arFiltrenCheckedCheckbox[filtrenCheckedCheckbox.dataset.filtrenId] = [filtrenCheckedCheckbox.id];
}
});
var activeFiltrenCheckboxList = {};
addressProgramData.combo.forEach(function(comboItem){
var isPassed = true;
var passedControlIds = [];
var currentFiltrenId = document.querySelector('.b-advanced-select.open');
if (currentFiltrenId) {
currentFiltrenId = currentFiltrenId.dataset.filtrenId;
}
for (filtrenId in comboItem) {
if (filtrenId in arFiltrenCheckedCheckbox) {
if (
currentFiltrenId !== filtrenId &&
arFiltrenCheckedCheckbox[filtrenId].indexOf(comboItem[filtrenId]['control_id']) === -1
) {
isPassed = false;
}
}
passedControlIds.push(comboItem[filtrenId]['control_id']);
}
if (isPassed) {
for (indx in passedControlIds) {
activeFiltrenCheckboxList[passedControlIds[indx]] = true;
}
}
});
// var advSelectSelection = filtrenCheckboxList.item(0).parentNode.parentNode.parentNode.querySelector('.b-advanced-select_selection');
Array.prototype.forEach.call(filtrenCheckboxList, function(filtrenCheckbox){
if(filtrenCheckbox.id in activeFiltrenCheckboxList) {
filtrenCheckbox.parentNode.classList.remove('hidden');
} else {
var advSelectSelection = filtrenCheckbox.parentNode.parentNode.parentNode.querySelector('.b-advanced-select_selection');
var advSelect_selectionChoice = advSelectSelection.querySelector('[data-id="' + filtrenCheckbox.id + '"]');
doUncheckAdvSelectCheckbox(filtrenCheckbox, advSelect_selectionChoice);
if(!filtrenCheckbox.parentNode.classList.contains('b-advanced-select_choice_select-all')) {
filtrenCheckbox.parentNode.classList.add('hidden');
}
}
});
// Выбираем те поля фильтра в которых выбрано несколько значение (есть "Выбрано (#SELECTION_COUNT#)")
// и обновляем значение #SELECTION_COUNT# (число выбранныз элементов)
var advSelectChoiceList = smartFilter.querySelectorAll('.b-advanced-select_choice[data-id=""]');
Array.prototype.forEach.call(advSelectChoiceList, function(advSelectChoice) {
var advSelectSelection = advSelectChoice.parentNode;
updateMultiselectionChoice(advSelectSelection, advSelectChoice);
});
} catch (error) {
console.info('Ошибка в функции "doFiltrenCheckbox" (событие "click" на чекбоксах или загрузка страницы).');
console.error(error);
}
};
<ul class="b-advanced-select_choices lsnn check-ul">
<li class="lvl2 b-advanced-select_choice_select-all">
<input type="checkbox" value="" data-action="select-all" id="i-select-all_90">
<label for="i-select-all_90">выбрать всё</label>
</li>
<li class="lvl2 hidden">
<input type="checkbox" value="Y" name="arrFilter_90_1294909896" id="arrFilter_90_1294909896" data-filtren-id="90">
<label for="arrFilter_90_1294909896"></label></li>
<li class="lvl2 hidden">
<input type="checkbox" value="Y" name="arrFilter_90_3483019650" id="arrFilter_90_3483019650" data-filtren-id="90">
<label for="arrFilter_90_3483019650"></label></li>
</ul>
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arParams['MAP_ID'] =
(strlen($arParams["MAP_ID"])<=0 || !preg_match("/^[A-Za-z_][A-Za-z01-9_]*$/", $arParams["MAP_ID"])) ?
'MAP_'.$this->randString() : $arParams['MAP_ID'];
if (($strPositionInfo = $arParams['~MAP_DATA']) && CheckSerializedData($strPositionInfo) && ($arResult['POSITION'] = unserialize($strPositionInfo)))
{
if (is_array($arResult['POSITION']) && is_array($arResult['POSITION']['PLACEMARKS']) && ($cnt = count($arResult['POSITION']['PLACEMARKS'])))
{
for ($i = 0; $i < $cnt; $i++)
{
$arResult['POSITION']['PLACEMARKS'][$i]['TEXT'] = str_replace('###RN###', "\r\n", $arResult['POSITION']['PLACEMARKS'][$i]['TEXT']);
}
}
if (is_array($arResult['POSITION']) && is_array($arResult['POSITION']['POLYLINES']) && ($cnt = count($arResult['POSITION']['POLYLINES'])))
{
for ($i = 0; $i < $cnt; $i++)
{
$arResult['POSITION']['POLYLINES'][$i]['TITLE'] = str_replace('###RN###', "\r\n", $arResult['POSITION']['POLYLINES'][$i]['TITLE']);
}
}
}
$this->IncludeComponentTemplate();
?>
// Обновление существующего элемента
$arElement['IBLOCK_ID'] = self::$params['IBLOCK_ID'];
if ($arElement['STATUS'] == 0 && $arElement['DELETION'] != 'true') {
$arElement['ACTIVE'] = "Y";
} else {
$arElement['ACTIVE'] = "N";
}
$arElement['NAME'] = trim($arElement['NAME']);
self::log('Обновление существующего элемента "'.$arElement['NAME'].'"');
$arProps = array();
if (!empty($arElement['PROPERTY_VALUES']) && is_array($arElement['PROPERTY_VALUES'])) {
$arProps = $arElement['PROPERTY_VALUES'];
unset($arElement['PROPERTY_VALUES']);
}
$ELEMENT_ID = $arExistItemsIDs[$arElement['XML_ID']];
if ($el->Update($ELEMENT_ID, $arElement, false, true, true)) {
$arChangedItems[] = $ELEMENT_ID;
//Обновление св-в
if (!empty($arProps) && is_array($arProps)) {
CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, self::$params['IBLOCK_ID'], $arProps);
}
//Обновление цены
$arFields = array(
"PRODUCT_ID" => $ELEMENT_ID,
"CATALOG_GROUP_ID" => self::$params['PRICE_TYPE_ID'],
"PRICE" => $arElement['PRICE'],
"CURRENCY" => "RUB",
);
$obPrice = new CPrice();
$obPrice->Update($arFields, true);
}
ОбменССайтом3238502e08e259-a845-11e4-b9f0-001fd05a9a5ffalsefalse00000000-0000-0000-0000-00000000000000000001
Синяя
<МестоСоздания>00000000-0000-0000-0000-000000000000МестоСоздания>
Категории>
.
.
.
35ecfcfa-75c7-11e7-a62b-001a4d382000falsefalse00000000-0000-0000-0000-00000000000000001901
Бакинских Комиссаров, 68/A
<ТипБлока xmlns="" xsi:type="CatalogRef.ТипыРекламныхБлоков">8b3f6c0b-6369-11e6-a3c0-001a4d382000ТипБлока>
<НомерБлока xsi:type="xsd:string">0769НомерБлока>
<Район xmlns="" xsi:type="CatalogRef.Районы">0bb76d6c-9a43-11e4-b9c6-001fd05a9a5fРайон>
<Город xmlns="" xsi:type="CatalogRef.Города">9b79a739-6e20-11e4-a640-5404a6b87cefГород>
<Освещение xsi:type="xsd:boolean">falseОсвещение>
<Сторона xmlns="" xsi:type="CatalogRef.ВидыСторон">86e6ced2-2002-49b9-9aef-6dc3f08f92f9Сторона>
<Алкоголь xsi:type="xsd:boolean">falseАлкоголь>
<Табак xsi:type="xsd:boolean">falseТабак>
<ДатаУстановки xsi:type="xsd:dateTime">2017-08-01T00:00:00ДатаУстановки>
<ДатаУдаления xsi:type="xsd:dateTime">0001-01-01T00:00:00ДатаУдаления>
<Описание xsi:type="xsd:string">ПП Бакинских КомиссаровОписание>
35ecfcfa-75c7-11e7-a62b-001a4d382000
<Размер xmlns="" xsi:type="CatalogRef.РазмерыРекламныхБлоков">8b3f6c0a-6369-11e6-a3c0-001a4d382000Размер>
<Координаты xsi:type="xsd:string">56.907220, 60.590651Координаты>
<Цена xsi:type="xsd:decimal">3300Цена>
РекламныеБлоки>
.
.
.
3d4ab3f9-5e71-4de1-b67c-266cfea7d3a0false00000007
B1
<Описание/>
ВидыСторон>
public static function parseXML($filePath) {
/*
Открываем файл, парсим как массив значений по строкам.
На выходе получаем структурированный массив рекламных блоков и св-в
После вызываем добавление элементов
*/
if (!CModule::IncludeModule('iblock')) die();
self::log('START parseXML()');
set_time_limit(0);
ignore_user_abort(true);
$data = implode("", file($filePath));
$work_dir = dirname($filePath);
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $tags);
xml_parser_free($parser);
// Get vals
$arRes = array();
$arRawItems = array();
$arRawProps = array();
$arPrices = array();
// return $values;
foreach ($values as $rowIterator => $arRow) {
$CUR_LVL = '';
$CUR_ITEM = '';
$arRow['tag'] = str_replace("CatalogObject.", "", $arRow['tag']);
if ($arRow['tag'] == 'РекламныеБлоки' && $arRow['type'] == 'open') {
$CUR_LVL = $arRow['level'];
$CUR_ITEM = $rowIterator;
for ($rowIterator++; $values[$rowIterator]['level'] != $CUR_LVL && $values[$rowIterator]['type'] != 'close'; $rowIterator++) {
$arRawItems[$CUR_ITEM][] = $values[$rowIterator];
}
}
else if ($arRow['tag'] != 'РекламныеБлоки' && $arRow['tag'] != 'TableVoz' && $arRow['type'] == 'open' && $arRow['level'] == 3) {
$CUR_LVL = $arRow['level'];
$PROP_REF_CODE = '';
for ($rowIterator++; $values[$rowIterator]['level'] != $CUR_LVL && $values[$rowIterator]['type'] != 'close'; $rowIterator++) {
if ($values[$rowIterator]['tag'] == 'Ref') {
$PROP_REF_CODE = $values[$rowIterator]['value'];
}
if (!empty($PROP_REF_CODE)) {
$arRawProps[$PROP_REF_CODE][$values[$rowIterator]['tag']] = $values[$rowIterator];
}
}
} else if ($arRow['tag'] == 'TableVoz') {
$CUR_LVL = $arRow['level'];
for ($rowIterator++; $values[$rowIterator]['level'] != $CUR_LVL && $values[$rowIterator]['type'] != 'close'; $rowIterator++) {
$CUR_ROW_LVL = $values[$rowIterator]['level'];
$PROP_REF_CODE = '';
$ROW_DATE = '';
$DATE_OK = false;
$CUR_DATE = date('m.Y');
for ($rowIterator++; $values[$rowIterator]['level'] != $CUR_ROW_LVL && $values[$rowIterator]['type'] != 'close'; $rowIterator++) {
if ($values[$rowIterator]['tag'] == 'ID') {
$PROP_REF_CODE = $values[$rowIterator]['value'];
}
if ($values[$rowIterator]['tag'] == 'Month') {
$ROW_DATE = strtotime($values[$rowIterator]['value']);
$ROW_DATE = date('m.Y', $ROW_DATE);
if ($ROW_DATE == $CUR_DATE) {
$DATE_OK = true;
}
}
if ($DATE_OK) {
$arPrices[$PROP_REF_CODE][$values[$rowIterator]['tag']] = $values[$rowIterator];
}
}
}
}
}
// return $arPrices;
// return $arRawItems;
// return $arRawProps;
/*
Необходимые данные:
Название V
Номер блока V
Тип блока
Район V
Адрес V
Сторона V
Описание V
Координаты V
Размер V
Освещение V
Изображения V
Цена за месяц V
*/
// Construct our elements array
foreach ($arRawItems as $key => $arElement) {
$CUR_REF = '';
$tempArr = array();
foreach ($arElement as $arProperty) {
// If property is list item - get list item value
if (strpos($arProperty['attributes']['xsi:type'], 'CatalogRef.') !== false && $arProperty['attributes']['xsi:type'] != 'CatalogRef.РекламныеБлоки' && $arProperty['tag'] != 'ID') {
$arProperty['value'] = $arRawProps[$arProperty['value']]['Description']['value'];
}
$arProperty['value'] = trim($arProperty['value']);
// Construct element array to add / update
switch ($arProperty['tag']) {
case 'DeletionMark':
$tempArr['DELETION'] = $arProperty['value'];
break;
case 'ТипБлока':
$tempArr['PROPERTY_VALUES']['TYPE'] = $arProperty['value'];
$tempArr['NAME'] .= $arProperty['value'].' ';
break;
case 'НомерБлока':
$tempArr['PROPERTY_VALUES']['NUMBER'] = $arProperty['value'];
$tempArr['NAME'] .= $arProperty['value'];
break;
case 'Освещение':
if ($arProperty['value'] == 'true') {
$tempArr['PROPERTY_VALUES']['LIGHT'] = 28; //Yes
} else {
$tempArr['PROPERTY_VALUES']['LIGHT'] = 29; //No
}
break;
case 'Description':
$tempArr['PROPERTY_VALUES']['STREET'] = $arProperty['value'];
break;
case 'Координаты':
$tempArr['PROPERTY_VALUES']['MAP'] = $arProperty['value'];
break;
case 'Размер':
$tempArr['PROPERTY_VALUES']['SIZE'] = $arProperty['value'];
break;
case 'Сторона':
$tempArr['PROPERTY_VALUES']['SIDE'] = $arProperty['value'];
break;
case 'Район':
$tempArr['PROPERTY_VALUES']['AREA'] = $arProperty['value'];
break;
case 'ОсновноеИзображение':
$tempArr['DETAIL_PICTURE'] = CFile::MakeFileArray($work_dir.'/'.$arProperty['value']);
case 'ID':
$tempArr['XML_ID'] = $arProperty['value'];
$CUR_REF = $arProperty['value'];
break;
case 'Описание':
$tempArr['DETAIL_TEXT'] = $arProperty['value'];
break;
case 'Цена':
$tempArr['PRICE'] = $arProperty['value'];
break;
}
}
if ($arPrices[$CUR_REF]['Price']['value']) {
$tempArr['PRICE'] = $arPrices[$CUR_REF]['Price']['value'];
}
if ($arPrices[$CUR_REF]['Status']['value']) {
$tempArr['STATUS'] = $arPrices[$CUR_REF]['Status']['value'];
}
if (!empty($CUR_REF)) {
$arRes['ITEMS'][$CUR_REF] = $tempArr;
}
}
// self::saveTodoFile($arRes['ITEMS']);// Не используется
// return $arRes;
self::log('BEFORE END parseXML: return self::addItems($arRes[\'ITEMS\']');
return self::addItems($arRes['ITEMS']);
}
allow_url_fopen On On
Самое забавное, что не со всеми сайтами такое случается...