18 return $value[
'VALUE'] ??
null;
21 abstract public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName);
27 $value[
'VALUE'] ??=
null;
28 if (!is_string($value[
'VALUE']))
32 if ($value[
'VALUE'] !==
'')
34 $arCoords = explode(self::VALUE_SEPARATOR, $value[
'VALUE'], 2);
36 $lat = (float)($arCoords[0] ?? 0);
37 $lng = (float)($arCoords[1] ?? 0);
41 $arResult[
'VALUE'] = $lat . self::VALUE_SEPARATOR . $lng;
52 $value[
'VALUE'] ??=
null;
53 if (!is_string($value[
'VALUE']))
57 if ($value[
'VALUE'] !==
'')
59 $arCoords = explode(self::VALUE_SEPARATOR, $value[
'VALUE'], 2);
61 $lat = (float)($arCoords[0] ?? 0);
62 $lng = (float)($arCoords[1] ?? 0);
66 $arResult[
'VALUE'] = $lat . self::VALUE_SEPARATOR . $lng;
73 public static function _GetMapKey($map_type, &$strDomain)
76 $strMapKeys = COPtion::GetOptionString(
'fileman',
'map_'.$map_type.
'_keys');
79 $wwwPos = mb_strpos($strDomain,
'www.');
81 $strDomain = mb_substr($strDomain, 4);
85 $arMapKeys = unserialize($strMapKeys, [
'allowed_classes' =>
false]);
87 if (array_key_exists($strDomain, $arMapKeys))
88 $MAP_KEY = $arMapKeys[$strDomain];
100 "PROPERTY_TYPE" =>
"S",
101 "USER_TYPE" =>
"map_google",
102 "DESCRIPTION" =>
GetMessage(
"IBLOCK_PROP_MAP_GOOGLE"),
103 "GetPropertyFieldHtml" =>
array(__CLASS__,
"GetPropertyFieldHtml"),
104 "GetPublicViewHTML" =>
array(__CLASS__,
"GetPublicViewHTML"),
105 "ConvertToDB" =>
array(__CLASS__,
"ConvertToDB"),
106 "ConvertFromDB" =>
array(__CLASS__,
"ConvertFromDB"),
107 "GetSettingsHTML" =>
array(__CLASS__,
"GetSettingsHTML"),
108 "PrepareSettings" =>
array(__CLASS__,
"PrepareSettings"),
109 'GetUIEntityEditorProperty' =>
array(__CLASS__,
'GetUIEntityEditorProperty'),
110 'GetUIEntityEditorPropertyEditHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyEditHtml'),
111 'GetUIEntityEditorPropertyViewHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyViewHtml'),
115 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
117 $arPropertyFields =
array(
118 'HIDE' =>
array(
'ROW_COUNT',
'COL_COUNT',
'SMART_FILTER',
'FILTRABLE',
'SEARCHABLE',
'WITH_DESCRIPTION'),
119 'SET' =>
array(
'SMART_FILTER' =>
'N',
'FILTRABLE' =>
'N',
'SEARCHABLE' =>
'N')
128 <td>'.GetMessage(
'IBLOCK_PROP_G_MAP_API_KEY').
':</td>
130 <input name="'.$strHTMLControlName[
'NAME'].
'[API_KEY]" value="'.$apiKey.
'">
137 $arProperty[
'SMART_FILTER'] =
'N';
138 $arProperty[
'FILTRABLE'] =
'N';
139 $arProperty[
'SEARCHABLE'] =
'N';
140 $arProperty[
'USER_TYPE_SETTINGS'] =
array(
141 'API_KEY' => isset($arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY']) ? $arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY'] :
''
150 static $googleMapLastNumber = 0;
151 static $googleMapID =
'';
153 if (($arProperty[
'MULTIPLE'] ==
'Y' && $googleMapID !== $arProperty[
'ID']) || $arProperty[
'MULTIPLE'] ==
'N')
154 $googleMapLastNumber = 0;
156 if ($arProperty[
'MULTIPLE'] ==
'Y')
157 $googleMapID = $arProperty[
'ID'];
159 $apiKey = isset($arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY']) ? $arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY'] :
'';
161 $value[
'VALUE'] ??=
null;
162 if ($strHTMLControlName[
"MODE"] !=
"FORM_FILL")
163 return '<input type="text" name="'.htmlspecialcharsbx($strHTMLControlName[
'VALUE']).
'" value="'.
htmlspecialcharsbx($value[
'VALUE']).
'" />';
165 if ($value[
'VALUE'] <>
'')
167 list($POINT_LAT, $POINT_LON) = explode(
',', $value[
'VALUE'], 2);
172 $POINT_LAT = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_INIT_LAT'));
173 $POINT_LON = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_INIT_LON'));
179 if ($arProperty[
'MULTIPLE'] ==
'Y' && isset(
$GLOBALS[
'GOOGLE_MAP_PROPERTY'][$arProperty[
'ID']]))
183 $MAP_ID =
$GLOBALS[
'GOOGLE_MAP_PROPERTY'][$arProperty[
'ID']];
187 $MAP_ID =
'map_google_'.$arProperty[
'CODE'].$arProperty[
'ID'];
188 $GLOBALS[
'GOOGLE_MAP_PROPERTY'][$arProperty[
'ID']] = $MAP_ID;
191<div
id=
"bx_map_hint_<?echo $MAP_ID?>" style=
"display: none;">
192 <div
id=
"bx_map_hint_value_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'block' : 'none'?>;">
194 echo
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_INSTR_VALUE').
'<br /><br />';
197 <div
id=
"bx_map_hint_novalue_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'none' : 'block'?>;">
199 echo
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_INSTR').
'<br /><br />';
205 'bitrix:map.google.system',
208 'INIT_MAP_TYPE' =>
'NORMAL',
209 'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
210 'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
211 'INIT_MAP_SCALE' => 10,
212 'OPTIONS' =>
array(
'ENABLE_SCROLL_ZOOM',
'ENABLE_DRAGGING'),
213 'CONTROLS' =>
array(
'LARGE_MAP_CONTROL',
'HTYPECONTROL',
'MINIMAP',
'SCALELINE',
'SMALL_ZOOM_CONTROL'),
214 'MAP_WIDTH' =>
'95%',
220 false,
array(
'HIDE_ICONS' =>
'Y')
227 var tabArea = BX.findParent(BX(
"BX_GMAP_<?=$MAP_ID?>"), {className:
"adm-detail-content"});
228 if (tabArea && tabArea.id)
230 var tabButton = BX(
"tab_cont_" + tabArea.id);
231 BX.bind(tabButton,
"click",
function() { BXMapGoogleAfterShow(
"<?=$MAP_ID?>"); });
235 <?
if($arProperty[
'MULTIPLE'] ==
'N'):?>
236 function setPointValue_<?echo $MAP_ID?>(obPoint)
238 if (
null == window.obPoint_<?echo $MAP_ID?>__n0_)
240 window.obPoint_<?echo $MAP_ID?>__n0_ =
new google.maps.Marker({
242 map: window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'],
246 google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n0_,
"dragend", updatePointPosition_<?echo $MAP_ID?>__n0_);
250 window.obPoint_<?echo $MAP_ID?>__n0_.setPosition(obPoint.latLng);
253 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
254 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
255 BX(
'point_control_<?echo $MAP_ID?>__n0_').style.display =
'inline-block';
257 updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
258 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.getPosition());
261 function setPointValue_<?echo $MAP_ID?>(obPoint)
263 var i = 0, point = [], k = [];
264 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
266 if(BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value ==
''
267 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon')
268 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value ==
'')
276 window.addNewRow(BX(
'point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.parentNode.parentNode.id);
278 k = (k.length) ? Math.min.apply(
null, k) : i;
279 var obPnt =
'obPoint_<?echo $MAP_ID?>__n'+k+
'_',
280 updPP =
'updatePointPosition_<?echo $MAP_ID?>__n'+k+
'_';
283 window[obPnt] =
null;
285 window[obPnt] =
new google.maps.Marker({
287 map: window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'],
290 google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_,
"dragend", updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_);
291 window[updPP](obPoint);
294 BX(
'point_control_<?echo $MAP_ID?>__n'+k+
'_').style.display =
'inline-block';
296 updateMapHint_<?echo $MAP_ID?>();
300 function updateMapHint_<?echo $MAP_ID?>()
304 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
306 if (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value !==
'' || !BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon') || BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value !==
'')
312 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'block';
313 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'none';
317 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
318 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
323<div
id=
"bx_address_search_control_<?echo $MAP_ID?>" style=
"display: none;margin-top:15px;"><?echo
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_SEARCH')?><input type=
"text" name=
"bx_address_<?echo $MAP_ID?>" id=
"bx_address_<?echo $MAP_ID?>" value=
"" style=
"width: 300px;" autocomplete=
"off" /></div>
328<input type=
"text" style=
"width:125px;margin:0 0 4px" name=
"point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat" id=
"point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()" />, <input type=
"text" style=
"width:125px;margin:0 15px 4px 0;" name=
"point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon" id=
"point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()" />
329<div
id=
"point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_" style=
"display:none;margin:0 0 4px"><a href=
"javascript:void(0);" onclick=
"findPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_GOTO_POINT')?></a> | <a href=
"javascript:void(0);" onclick=
"if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_GOOGLE_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_GOOGLE_REMOVE_POINT')?></a></div><br />
330<input type=
"text" style=
"display:none;" id=
"value_<?echo $MAP_ID;?>__n<?=$googleMapLastNumber?>_" name=
"<?=htmlspecialcharsbx($strHTMLControlName["VALUE
"])?>" value=
"<?=htmlspecialcharsEx($value["VALUE
"])?>" />
332 window.jsAdminGoogleMess = {
333 nothing_found:
'<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_GOOGLE_NOTHING_FOUND
'))?>'
335 BX.loadCSS(
'/bitrix/components/bitrix/map.google.view/settings/settings.css');
337 function BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
339 if (!window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'])
340 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, 300);
343 if(!window.markersBounds_<?echo $MAP_ID?>)
344 window.markersBounds_<?echo $MAP_ID?> =
new google.maps.LatLngBounds();
345 window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ =
null;
347 google.maps.event.clearListeners(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'],
'dblclick');
348 google.maps.event.addListener(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'],
'dblclick', window.setPointValue_<?echo $MAP_ID?>);
350 var searchInput = BX(
'bx_address_<?echo $MAP_ID?>');
351 BX.bind(searchInput,
"keydown", jsGoogleCESearch_<?echo $MAP_ID;?>.setTypingStarted);
352 BX.bind(searchInput,
"contextmenu", jsGoogleCESearch_<?echo $MAP_ID;?>.setTypingStarted);
353 BX(
'point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display =
'none';
356 setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_({latLng:
new google.maps.LatLng(<?echo $POINT_LAT?>, <?echo $POINT_LON?>)});
357 window.markersBounds_<?echo $MAP_ID?>.extend(
new google.maps.LatLng(<?echo $POINT_LAT?>, <?echo $POINT_LON?>));
358 if (<?=$googleMapLastNumber?> > 0)
359 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].setCenter(window.markersBounds_<?echo $MAP_ID?>.getCenter(), window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].fitBounds(window.markersBounds_<?echo $MAP_ID?>));
362 BX(
'bx_address_search_control_<?echo $MAP_ID?>').style.display =
'block';
363 BX(
'bx_map_hint_<?echo $MAP_ID?>').style.display =
'block';
368function findPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
370 if (
null != window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
371 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.getPosition());
374function removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
376 window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.setMap(
null);
377 window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ =
null;
379 BX(
'point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display =
'none';
381 updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_();
383 updateMapHint_<?echo $MAP_ID?>();
386function setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obEvent)
388 var obPoint = BX.type.isArray(obEvent) ? {latLng:
new google.maps.LatLng(obEvent[0], obEvent[1])} : {latLng:
new google.maps.LatLng(obEvent.latLng.lat(), obEvent.latLng.lng())};
390 if (
null == window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
392 window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ =
new google.maps.Marker({
394 map: window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'],
397 google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_,
"dragend", updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_);
401 window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.setPosition(obPoint.latLng);
404 BX(
'point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display =
'inline-block';
405 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
406 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
408 updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obPoint);
409 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.getPosition());
412function setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
414 var vv = [BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value, BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value];
415 if (vv[0] ==
'' && vv[1] ==
'')
417 removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_();
419 var v = [parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value), parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value)];
420 if (!isNaN(v[0]) && !isNaN(v[1]))
422 setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(v);
426function updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obPoint)
429 if (!!obPoint && !!obPoint.latLng)
430 obP.push(obPoint.latLng.lat(), obPoint.latLng.lng());
431 else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
432 obP.push(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.latLng.lat(), window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.latLng.lng());
435 var obInput = BX(
'value_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_');
436 obInput.value =
null == obP ?
'' : obP[0] +
',' + obP[1];
437 BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value = obP ? obP[0] :
'';
438 BX(
'point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value = obP ? obP[1] :
'';
441 BX.onCustomEvent(window,
'onAddGoogleMapPoint');
446 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, 100);
449var jsGoogleCESearch_<?echo $MAP_ID;?> = {
462 __init:
function(input)
464 if (jsGoogleCESearch_<?echo $MAP_ID;?>.bInited)
return;
466 jsGoogleCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'];
467 jsGoogleCESearch_<?echo $MAP_ID;?>.obInput = input;
471 input.onfocus = jsGoogleCESearch_<?echo $MAP_ID;?>.showResults;
472 input.onblur = jsGoogleCESearch_<?echo $MAP_ID;?>.hideResults;
474 jsGoogleCESearch_<?echo $MAP_ID;?>.bInited =
true;
477 setTypingStarted:
function(e)
484 jsGoogleCESearch_<?echo $MAP_ID;?>.doSearch();
490 if (!jsGoogleCESearch_<?echo $MAP_ID;?>.bInited)
491 jsGoogleCESearch_<?echo $MAP_ID;?>.__init(
this);
493 if (e.type==
"contextmenu")
494 jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
496 jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
498 jsGoogleCESearch_<?echo $MAP_ID;?>.hideResults();
500 if (
null != jsGoogleCESearch_<?echo $MAP_ID;?>.timerID)
501 clearTimeout(jsGoogleCESearch_<?echo $MAP_ID;?>.timerID);
503 jsGoogleCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsGoogleCESearch_<?echo $MAP_ID;?>.doSearch, jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay);
509 var value = jsUtils.trim(jsGoogleCESearch_<?echo $MAP_ID;?>.obInput.value);
510 if (value.length > 1)
512 if (
null == jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder)
513 jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder =
new google.maps.Geocoder();
515 jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder.geocode({
517 language:
'<?=LANGUAGE_ID?>'
518 }, jsGoogleCESearch_<?echo $MAP_ID;?>.__searchResultsLoad);
524 alert(jsGoogleCE.jsMess.mess_error);
527 setResultsCoordinates:
function()
529 var obPos = jsUtils.GetRealPos(jsGoogleCESearch_<?echo $MAP_ID;?>.obInput);
530 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) +
'px';
531 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left +
'px';
534 __generateOutput:
function()
536 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement(
'UL'));
537 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.className =
'bx-google-address-search-results';
538 jsGoogleCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
541 __searchResultsLoad:
function(obResult, status)
543 var _this = jsGoogleCESearch_<?echo $MAP_ID;?>;
545 if (status != google.maps.GeocoderStatus.OK && status != google.maps.GeocoderStatus.ZERO_RESULTS)
547 _this.handleError({message: status});
557 if (
null == _this.obOut)
558 _this.__generateOutput();
560 _this.obOut.innerHTML =
'';
561 _this.clearSearchResults();
564 if (status == google.maps.GeocoderStatus.OK)
566 len = obResult.length;
572 for (var i = 0; i < len; i++)
574 _this.arSearchResults[i] = obResult[i].geometry;
577 for (var j = 0; j < obResult[i].address_components.length; j++)
579 lnk_text += (lnk_text.length > 0 ?
', ' :
'') + obResult[i].address_components[j].long_name;
582 _this.obOut.appendChild(BX.create(
'LI', {
583 attrs: {className: i == 0 ?
'bx-google-first' :
''},
586 attrs: {href:
"javascript:void(0)"},
587 props: {BXSearchIndex: i},
588 events: {click: _this.__showSearchResult},
601 _this.obOut.innerHTML =
'<li class="bx-google-notfound">' + window.jsAdminGoogleMess.nothing_found +
'</li>';
608 __showSearchResult:
function()
610 if (
null !== this.BXSearchIndex)
612 jsGoogleCESearch_<?echo $MAP_ID;?>.map.setCenter(jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].location);
613 if (jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].viewport)
614 jsGoogleCESearch_<?echo $MAP_ID;?>.map.fitBounds(jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].viewport);
618 showResults:
function()
620 if (
null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
622 jsGoogleCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
623 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.display =
'block';
627 hideResults:
function()
629 if (
null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
631 setTimeout(
"jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
635 clearSearchResults:
function()
637 for (var i = 0; i < jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
639 delete jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
642 jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
647 if (!jsGoogleCESearch_<?echo $MAP_ID;?>.bInited)
650 jsGoogleCESearch_<?echo $MAP_ID;?>.bInited =
false;
651 if (
null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
653 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsGoogleCESearch_<?echo $MAP_ID;?>.obOut);
654 jsGoogleCESearch_<?echo $MAP_ID;?>.obOut =
null;
657 jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
658 jsGoogleCESearch_<?echo $MAP_ID;?>.map =
null;
659 jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder =
null;
660 jsGoogleCESearch_<?echo $MAP_ID;?>.obInput =
null;
661 jsGoogleCESearch_<?echo $MAP_ID;?>.timerID =
null;
666 $out = ob_get_contents();
669 if ($arProperty[
'MULTIPLE'] ==
'Y')
670 $googleMapLastNumber++;
678 $value[
'VALUE'] ??=
null;
679 if($value[
"VALUE"] <>
'')
681 $value = parent::ConvertFromDB($arProperty, $value);
682 if ((
$arParams[
'MODE'] ??
null) ==
'CSV_EXPORT')
684 $s = $value[
"VALUE"];
688 $googleMapLastNumber = 0;
689 $apiKey = isset($arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY']) ? $arProperty[
'USER_TYPE_SETTINGS'][
'API_KEY'] :
'';
690 $arCoords = explode(
',', $value[
'VALUE']);
692 $GLOBALS[
'APPLICATION']->IncludeComponent(
693 'bitrix:map.google.view',
696 'MAP_DATA' => serialize(
array(
697 'google_lat' => $arCoords[0],
698 'google_lon' => $arCoords[1],
699 'PLACEMARKS' =>
array(
701 'LON' => $arCoords[1],
702 'LAT' => $arCoords[0],
706 'MAP_WIDTH' =>
$arParams[
'WIDTH'] ??
null,
707 'MAP_HEIGHT' =>
$arParams[
'HEIGHT'] ??
null,
708 'MAP_ID' =>
'MAP_GOOGLE_VIEW_'.$arProperty[
'IBLOCK_ID'].
'_'.$arProperty[
'ID'].
'__n'.$googleMapLastNumber.
'_',
712 false,
array(
'HIDE_ICONS' =>
'Y')
715 $s .= ob_get_contents();
732 $paramsHTMLControl = [
733 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
734 'MODE' =>
'FORM_FILL',
739 if (is_array(
$params[
'VALUE']))
741 foreach (
$params[
'VALUE'] as $element)
743 $value[] = [
'VALUE' => $element];
750 'VALUE' =>
$params[
'VALUE'] ??
''
754 return static::GetPropertyFieldHtml(
$settings, $value, $paramsHTMLControl);
760 $paramsHTMLControl = [
761 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
766 $paramsHTMLControl[
'WIDTH'] =
$params[
'WIDTH'];
770 $paramsHTMLControl[
'HEIGHT'] =
$params[
'HEIGHT'];
775 $multipleResult =
'';
776 if (is_array(
$params[
'VALUE']))
778 foreach (
$params[
'VALUE'] as $element)
780 $value = [
'VALUE' => $element];
781 $multipleResult .= static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl) .
'<br>';
784 return $multipleResult;
789 'VALUE' =>
$params[
'VALUE'] ??
''
793 return static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl);
802 if (Loader::includeModule(
'bitrix24'))
810 elseif (Loader::includeModule(
'intranet'))
822 'filter' => [
'=ID' =>
'ru',
'=ACTIVE' =>
'Y']
824 $row = $languageIterator->fetch();
825 unset($languageIterator);
836 $row = $languageIterator->fetch();
837 unset($languageIterator);
846 "PROPERTY_TYPE" =>
"S",
847 "USER_TYPE" =>
"map_yandex",
848 "DESCRIPTION" =>
GetMessage(
"IBLOCK_PROP_MAP_YANDEX"),
849 "GetPropertyFieldHtml" =>
array(__CLASS__,
"GetPropertyFieldHtml"),
850 "GetPublicViewHTML" =>
array(__CLASS__,
"GetPublicViewHTML"),
851 "GetPublicEditHTML" =>
array(__CLASS__,
"GetPublicEditHTML"),
852 "ConvertToDB" =>
array(__CLASS__,
"ConvertToDB"),
853 "ConvertFromDB" =>
array(__CLASS__,
"ConvertFromDB"),
854 "GetSettingsHTML" =>
array(__CLASS__,
"GetSettingsHTML"),
855 "PrepareSettings" =>
array(__CLASS__,
"PrepareSettings"),
856 'GetUIEntityEditorProperty' =>
array(__CLASS__,
'GetUIEntityEditorProperty'),
857 'GetUIEntityEditorPropertyEditHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyEditHtml'),
858 'GetUIEntityEditorPropertyViewHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyViewHtml'),
866<div
id=
"key_input_control_<?echo $MAP_ID?>">
867 <?echo str_replace(
'#DOMAIN#', $strDomain,
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_NO_KEY_MESSAGE'))?><br /><br />
868 <?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_NO_KEY')?><input type=
"text" name=
"map_yandex_key_<?echo $MAP_ID?>" id=
"map_yandex_key_<?echo $MAP_ID?>" /> <input type=
"button" value=
"<?echo htmlspecialcharsbx(GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_BUTTON'))?>" onclick=
"setYandexKey('<?echo $strDomain?>', 'map_yandex_key_<?echo $MAP_ID?>')" /> <input type=
"button" value=
"<?echo htmlspecialcharsbx(GetMessage('IBLOCK_PROP_MAP_YANDEX_SAVE_KEY_BUTTON'))?>" onclick=
"saveYandexKey('<?echo $strDomain?>', 'map_yandex_key_<?echo $MAP_ID?>')" />
870<div
id=
"key_input_message_<?echo $MAP_ID?>" style=
"display: none;"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_NO_KEY_OKMESSAGE')?></div>
875function setYandexKey(domain, input)
877 LoadMap_<?echo $MAP_ID?>(document.getElementById(input).value);
880function saveYandexKey(domain, input)
882 var value = document.getElementById(input).value;
884 CHttpRequest.Action =
function(result)
889 document.getElementById(
'key_input_control_<?echo $MAP_ID?>').style.display =
'none';
890 document.getElementById(
'key_input_message_<?echo $MAP_ID?>').style.display =
'block';
891 if (!window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'])
892 setYandexKey(domain, input);
895 alert(
'<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_ERRORMESSAGE
'))?>');
898 var data =
'key_type=yandex&domain=' + domain +
'&key=' + value +
'&<?echo bitrix_sessid_get()?>';
900 CHttpRequest.Post(
'/bitrix/admin/settings.php?lang=<?echo LANGUAGE_ID?>&mid=fileman&save_map_key=Y', data);
906 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
908 $arPropertyFields =
array(
909 'HIDE' =>
array(
'ROW_COUNT',
'COL_COUNT',
'SMART_FILTER',
'FILTRABLE',
'SEARCHABLE',
'WITH_DESCRIPTION'),
910 'SET' =>
array(
'SMART_FILTER' =>
'N',
'FILTRABLE' =>
'N',
'SEARCHABLE' =>
'N')
918 $arProperty[
'SMART_FILTER'] =
'N';
919 $arProperty[
'FILTRABLE'] =
'N';
920 $arProperty[
'SEARCHABLE'] =
'N';
921 $arProperty[
'USER_TYPE_SETTINGS'] =
array();
929 static $yandexMapLastNumber = 0;
930 static $yandexMapID =
'';
932 if (($arProperty[
'MULTIPLE'] ==
'Y' && $yandexMapID !== $arProperty[
'ID']) || $arProperty[
'MULTIPLE'] ==
'N')
933 $yandexMapLastNumber = 0;
935 if ($arProperty[
'MULTIPLE'] ==
'Y')
936 $yandexMapID = $arProperty[
'ID'];
939 $value[
'VALUE'] ??=
null;
940 if ($strHTMLControlName[
"MODE"] !=
"FORM_FILL")
941 return '<input type="text" name="'.htmlspecialcharsbx($strHTMLControlName[
'VALUE']).
'" value="'.
htmlspecialcharsbx($value[
'VALUE']).
'" />';
943 if ($value[
'VALUE'] <>
'')
945 list($POINT_LAT, $POINT_LON) = explode(
',', $value[
'VALUE'], 2);
950 $POINT_LAT = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INIT_LAT'));
951 $POINT_LON = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INIT_LON'));
956 if ($arProperty[
'MULTIPLE'] ==
'Y' && isset(
$GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']]))
960 $MAP_ID =
$GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']];
964 $MAP_ID =
'map_yandex_'.$arProperty[
'CODE'].
'_'.$arProperty[
'ID'];
965 $GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']] = $MAP_ID;
969<div
id=
"bx_map_hint_<?echo $MAP_ID?>" style=
"display: none;">
970 <div
id=
"bx_map_hint_value_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'block' : 'none'?>;">
972 echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INSTR_VALUE').
'<br /><br />';
975 <div
id=
"bx_map_hint_novalue_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'none' : 'block'?>;">
977 echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INSTR').
'<br /><br />';
983 'bitrix:map.yandex.system',
986 'INIT_MAP_TYPE' =>
'MAP',
987 'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
988 'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
989 'INIT_MAP_SCALE' => 10,
990 'OPTIONS' =>
array(
'ENABLE_SCROLL_ZOOM',
'ENABLE_DRAGGING'),
991 'CONTROLS' =>
array(
'ZOOM',
'MINIMAP',
'TYPECONTROL',
'SCALELINE'),
992 'MAP_WIDTH' =>
'95%',
998 false,
array(
'HIDE_ICONS' =>
'Y')
1004 BX.ready(
function(){
1005 var tabArea = BX.findParent(BX(
"BX_YMAP_<?=$MAP_ID?>"), {className:
"adm-detail-content"});
1006 if (tabArea && tabArea.id)
1008 var tabButton = BX(
"tab_cont_" + tabArea.id);
1009 BX.bind(tabButton,
"click",
function() { BXMapYandexAfterShow(
"<?=$MAP_ID?>"); });
1013 <?
if($arProperty[
'MULTIPLE'] ==
'N'):?>
1014 function setPointValue_<?echo $MAP_ID?>(obEvent)
1016 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1018 if (
null == window.obPoint_<?echo $MAP_ID?>__n0_)
1020 window.obPoint_<?echo $MAP_ID?>__n0_ =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1021 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n0_);
1022 window.obPoint_<?echo $MAP_ID?>__n0_.events.add(
'dragend', updatePointPosition_<?echo $MAP_ID?>__n0_);
1026 window.obPoint_<?echo $MAP_ID?>__n0_.geometry.setCoordinates(obPoint);
1029 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1030 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1031 BX(
'point_control_<?echo $MAP_ID?>__n0_').style.display =
'inline-block';
1033 updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
1034 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.geometry.getCoordinates(), {delay:0});
1037 function setPointValue_<?echo $MAP_ID?>(obEvent)
1039 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1040 var i = 0, point = [], k = [];
1041 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
1043 if(BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value ==
''
1044 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon')
1045 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value ==
'')
1053 BX.IBlock.Tools.addNewRow(BX(
'point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.parentNode.parentNode.id)
1055 k = (k.length) ? Math.min.apply(
null, k) : i;
1056 var obPnt =
'obPoint_<?echo $MAP_ID?>__n'+k+
'_',
1057 updPP =
'updatePointPosition_<?echo $MAP_ID?>__n'+k+
'_';
1060 window[obPnt] =
null;
1061 window[obPnt] =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1062 window.GLOBAL_arMapObjects[
"<?echo $MAP_ID?>"].geoObjects.add(window[obPnt]);
1063 window[obPnt].events.add(
"dragend", window[updPP]);
1064 window[updPP](obPoint);
1067 BX(
'point_control_<?echo $MAP_ID?>__n'+k+
'_').style.display =
'inline-block';
1069 updateMapHint_<?echo $MAP_ID?>();
1073 function setDefaultPreset_<?echo $MAP_ID?>()
1075 if(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects)
1077 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.each(
function (geoObject) {
1078 geoObject.options.set({preset:
'twirl#blueIcon'});
1083 function updateMapHint_<?echo $MAP_ID?>()
1087 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
1089 if (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value !==
'' || !BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon') || BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value !==
'')
1095 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'block';
1096 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'none';
1100 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1101 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1106<div
id=
"bx_address_search_control_<?echo $MAP_ID?>" style=
"display: none;margin-top:15px;"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_SEARCH')?><input type=
"text" name=
"bx_address_<?echo $MAP_ID?>" id=
"bx_address_<?echo $MAP_ID?>" value=
"" style=
"width: 300px;" autocomplete=
"off" /></div>
1111<input type=
"text" style=
"width:125px;margin:0 0 4px" name=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" id=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />, <input type=
"text" style=
"width:125px;margin:0 15px 4px 0;" name=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" id=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />
1112<div
id=
"point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_" style=
"display:none;margin:0 0 4px"><a href=
"javascript:void(0);" onclick=
"findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_GOTO_POINT')?></a> | <a href=
"javascript:void(0);" onclick=
"if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT')?></a></div><br />
1113<input type=
"text" style=
"display:none;" id=
"value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_" name=
"<?=htmlspecialcharsbx($strHTMLControlName["VALUE
"])?>" value=
"<?=htmlspecialcharsEx($value["VALUE
"])?>" />
1115 window.jsAdminYandexMess = {
1116 nothing_found:
'<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NOTHING_FOUND
'))?>'
1118 jsUtils.loadCSSFile(
'/bitrix/components/bitrix/map.yandex.view/settings/settings.css');
1120 function BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1122 if (!window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'])
1123 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 300);
1126 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
null;
1128 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.remove(
'dblclick', window.setPointValue_<?echo $MAP_ID?>);
1129 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.add(
'dblclick', window.setPointValue_<?echo $MAP_ID?>);
1130 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.add(
'click', window.setDefaultPreset_<?echo $MAP_ID?>);
1131 var searchInput = BX(
'bx_address_<?echo $MAP_ID?>');
1132 <?
if (\
Bitrix\Main\Config\Option::get(
'fileman',
'yandex_map_api_key',
'')):?>
1133 BX.bind(searchInput,
"keydown", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
1134 BX.bind(searchInput,
"contextmenu", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
1136 searchInput.disabled =
true;
1137 searchInput.title =
'<?=CUtil::JSEscape(GetMessage("IBLOCK_PROP_MAP_YANDEX_SEARCH_KEY_REQUIRED"))?>';
1139 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'none';
1141 <?
if ($bHasValue):?>
1142 setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_([<?echo $POINT_LAT?>, <?echo $POINT_LON?>]);
1143 if (<?=$yandexMapLastNumber?> > 0)
1144 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].setBounds(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.getBounds(), {checkZoomRange: true});
1147 BX(
'bx_address_search_control_<?echo $MAP_ID?>').style.display =
'block';
1148 BX(
'bx_map_hint_<?echo $MAP_ID?>').style.display =
'block';
1153 function findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1155 if (
null != window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1157 window.setDefaultPreset_<?echo $MAP_ID?>();
1158 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
1159 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.options.set({preset:
'twirl#redIcon'});
1164 function removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1166 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.remove(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1167 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
null;
1169 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'none';
1171 updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
1173 updateMapHint_<?echo $MAP_ID?>();
1176 function setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obEvent)
1178 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1180 if (
null == window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1182 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1183 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1184 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.events.add(
'dragend', updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1188 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.setCoordinates(obPoint);
1191 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'inline-block';
1192 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1193 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1195 updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint);
1196 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
1199 function setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1201 var vv = [BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value, BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value];
1202 if (vv[0] ==
'' && vv[1] ==
'')
1204 removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
1206 var v = [parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value), parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value)];
1207 if (!isNaN(v[0]) && !isNaN(v[1]))
1209 setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(v);
1213 function updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint)
1216 if (!!obPoint && !!obPoint.geometry)
1217 obPoint = obPoint.geometry.getCoordinates();
1218 else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1219 obPoint = window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates();
1223 var obInput = BX(
'value_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_');
1224 obInput.value =
null == obPoint ?
'' : obPoint[0] +
',' + obPoint[1];
1226 BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value = obPoint ? obPoint[0] :
'';
1227 BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value = obPoint ? obPoint[1] :
'';
1230 BX.ready(
function() {
1231 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 100);
1234 var jsYandexCESearch_<?echo $MAP_ID;?> = {
1244 arSearchResults: [],
1245 strLastSearch:
null,
1249 __init:
function(input)
1251 if (jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
return;
1253 jsYandexCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'];
1254 jsYandexCESearch_<?echo $MAP_ID;?>.obInput = input;
1256 input.onfocus = jsYandexCESearch_<?echo $MAP_ID;?>.showResults;
1257 input.onblur = jsYandexCESearch_<?echo $MAP_ID;?>.hideResults;
1259 jsYandexCESearch_<?echo $MAP_ID;?>.bInited =
true;
1262 setTypingStarted:
function(e)
1267 jsYandexCESearch_<?echo $MAP_ID;?>.hideResults();
1269 if (e.keyCode == 13 )
1271 jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
1276 if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
1277 jsYandexCESearch_<?echo $MAP_ID;?>.__init(
this);
1279 if (e.type==
"contextmenu")
1280 jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
1282 jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
1284 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.timerID)
1285 clearTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.timerID);
1287 jsYandexCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.doSearch, jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay);
1291 doSearch:
function()
1293 this.strLastSearch = jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value);
1295 if (this.strLastSearch.length > 1)
1297 ymaps.geocode(this.strLastSearch).then(
1298 jsYandexCESearch_<?echo $MAP_ID;?>.__searchResultsLoad,
1306 alert(window.jsAdminYandexMess.mess_error +
': ' + error.message);
1309 setResultsCoordinates:
function()
1311 var obPos = jsUtils.GetRealPos(jsYandexCESearch_<?echo $MAP_ID;?>.obInput);
1312 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) +
'px';
1313 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left +
'px';
1316 __generateOutput:
function()
1318 jsYandexCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement(
'UL'));
1319 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.className =
'bx-yandex-address-search-results';
1322 __searchResultsLoad:
function(res)
1324 var _this = jsYandexCESearch_<?echo $MAP_ID;?>;
1326 if (
null == _this.obOut)
1327 _this.__generateOutput();
1329 _this.obOut.innerHTML =
'';
1330 _this.clearSearchResults();
1332 var len = res.geoObjects.getLength();
1335 for (var i = 0; i < len; i++)
1337 _this.arSearchResults[i] = res.geoObjects.get(i);
1339 var obListElement = document.createElement(
'LI');
1342 obListElement.className =
'bx-yandex-first';
1344 var obLink = document.createElement(
'A');
1345 obLink.href =
"javascript:void(0)";
1346 var obText = obLink.appendChild(document.createElement(
'SPAN'));
1347 obText.appendChild(document.createTextNode(
1348 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i].properties.get(
'metaDataProperty').GeocoderMetaData.text
1351 obLink.BXSearchIndex = i;
1352 obLink.onclick = _this.__showSearchResult;
1354 obListElement.appendChild(obLink);
1355 _this.obOut.appendChild(obListElement);
1361 _this.obOut.innerHTML =
'<li class="bx-yandex-notfound">' + window.jsAdminYandexMess.nothing_found +
'</li>';
1364 _this.showResults();
1367 __showSearchResult:
function()
1369 if (
null !== this.BXSearchIndex)
1371 var bounds = jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].properties.get(
'boundedBy');
1372 jsYandexCESearch_<?echo $MAP_ID;?>.map.setBounds(bounds, { checkZoomRange:
true });
1376 showResults:
function()
1378 if(this.strLastSearch!=jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value))
1379 jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
1381 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
1383 jsYandexCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
1384 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display =
'block';
1388 hideResults:
function()
1390 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
1392 setTimeout(
"jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
1396 clearSearchResults:
function()
1398 for (var i = 0; i < jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
1400 delete jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
1403 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
1408 if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
1411 jsYandexCESearch_<?echo $MAP_ID;?>.bInited =
false;
1412 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
1414 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsYandexCESearch_<?echo $MAP_ID;?>.obOut);
1415 jsYandexCESearch_<?echo $MAP_ID;?>.obOut =
null;
1418 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
1419 jsYandexCESearch_<?echo $MAP_ID;?>.map =
null;
1420 jsYandexCESearch_<?echo $MAP_ID;?>.geocoder =
null;
1421 jsYandexCESearch_<?echo $MAP_ID;?>.obInput =
null;
1422 jsYandexCESearch_<?echo $MAP_ID;?>.timerID =
null;
1428 $out = ob_get_contents();
1431 if ($arProperty[
'MULTIPLE'] ==
'Y')
1432 $yandexMapLastNumber++;
1441 static $yandexMapLastNumber = 0;
1442 static $yandexMapID =
'';
1444 if (($arProperty[
'MULTIPLE'] ==
'Y' && $yandexMapID !== $arProperty[
'ID']) || $arProperty[
'MULTIPLE'] ==
'N')
1445 $yandexMapLastNumber = 0;
1447 if ($arProperty[
'MULTIPLE'] ==
'Y')
1448 $yandexMapID = $arProperty[
'ID'];
1450 $value[
'VALUE'] ??=
null;
1451 if ($value[
'VALUE'] <>
'')
1453 [$POINT_LAT, $POINT_LON] = explode(
',', $value[
'VALUE'], 2);
1458 $POINT_LAT = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INIT_LAT'));
1459 $POINT_LON = doubleval(
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INIT_LON'));
1465 if ($arProperty[
'MULTIPLE'] ==
'Y' && isset(
$GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']]))
1467 $MAP_ID =
$GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']];
1471 $MAP_ID =
'map_yandex_'.$arProperty[
'CODE'].
'_'.$arProperty[
'ID'];
1472 $GLOBALS[
'YANDEX_MAP_PROPERTY'][$arProperty[
'ID']] = $MAP_ID;
1476<div
id=
"bx_map_hint_<?echo $MAP_ID?>" style=
"display: none;">
1477 <div
id=
"bx_map_hint_value_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'block' : 'none'?>;">
1479 echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INSTR_VALUE').
'<br /><br />';
1482 <div
id=
"bx_map_hint_novalue_<?echo $MAP_ID?>" style=
"display: <?echo $bHasValue ? 'none' : 'block'?>;">
1484 echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_INSTR').
'<br /><br />';
1490 'bitrix:map.yandex.system',
1493 'INIT_MAP_TYPE' =>
'MAP',
1494 'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
1495 'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
1496 'INIT_MAP_SCALE' => 10,
1497 'OPTIONS' =>
array(
'ENABLE_SCROLL_ZOOM',
'ENABLE_DRAGGING'),
1498 'CONTROLS' =>
array(
'ZOOM',
'MINIMAP',
'TYPECONTROL',
'SCALELINE'),
1500 'MAP_HEIGHT' => 400,
1501 'MAP_ID' => $MAP_ID,
1504 false,
array(
'HIDE_ICONS' =>
'Y')
1508 BX.ready(
function(){
1509 var tabArea = BX.findParent(BX(
"BX_YMAP_<?=$MAP_ID?>"), {className:
"adm-detail-content"});
1510 if (tabArea && tabArea.id)
1512 var tabButton = BX(
"tab_cont_" + tabArea.id);
1513 BX.bind(tabButton,
"click",
function() { BXMapYandexAfterShow(
"<?=$MAP_ID?>"); });
1517 <?
if($arProperty[
'MULTIPLE'] ==
'N'):?>
1518 function setPointValue_<?echo $MAP_ID?>(obEvent)
1520 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1522 if (
null == window.obPoint_<?echo $MAP_ID?>__n0_)
1524 window.obPoint_<?echo $MAP_ID?>__n0_ =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1525 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n0_);
1526 window.obPoint_<?echo $MAP_ID?>__n0_.events.add(
'dragend', updatePointPosition_<?echo $MAP_ID?>__n0_);
1530 window.obPoint_<?echo $MAP_ID?>__n0_.geometry.setCoordinates(obPoint);
1533 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1534 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1535 BX(
'point_control_<?echo $MAP_ID?>__n0_').style.display =
'inline-block';
1537 updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
1538 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.geometry.getCoordinates(), {delay:0});
1541 function setPointValue_<?echo $MAP_ID?>(obEvent)
1543 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1544 var i = 0, point = [], k = [];
1545 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
1547 if(BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value ==
''
1548 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon')
1549 && BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value ==
'')
1557 BX(
'point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.id =
'<?echo $MAP_ID?>';
1558 addNewRow_<?echo $MAP_ID?>(BX(
'point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.id);
1560 k = (k.length) ? Math.min.apply(
null, k) : i;
1561 var obPnt =
'obPoint_<?echo $MAP_ID?>__n'+k+
'_',
1562 updPP =
'updatePointPosition_<?echo $MAP_ID?>__n'+k+
'_';
1565 window[obPnt] =
null;
1566 window[obPnt] =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1567 window.GLOBAL_arMapObjects[
"<?echo $MAP_ID?>"].geoObjects.add(window[obPnt]);
1568 window[obPnt].events.add(
"dragend", window[updPP]);
1569 window[updPP](obPoint);
1572 BX(
'point_control_<?echo $MAP_ID?>__n'+k+
'_').style.display =
'inline-block';
1574 updateMapHint_<?echo $MAP_ID?>();
1578 function addNewRow_<?echo $MAP_ID?>(tdID, row_to_clone)
1580 var TD = document.getElementById(tdID);
1581 var cnt = BX.findChildren(TD, {tag :
'DIV'},
false).length;
1582 var sHTML = BX.findChildren(TD, {tag :
'DIV'},
false)[cnt-1].innerHTML;
1583 var oDiv = TD.appendChild(document.createElement(
'div'));
1584 oDiv.parentNode.appendChild(document.createElement(
'br'));
1590 s = sHTML.indexOf(
'[n',p);
1592 e = sHTML.indexOf(
']',s);
1594 n = parseInt(sHTML.substr(s+2,e-s));
1595 sHTML = sHTML.substr(0, s)+
'[n'+(++n)+
']'+sHTML.substr(e+1);
1601 s = sHTML.indexOf(
'__n',p);
1603 e = sHTML.indexOf(
'_',s+2);
1605 n = parseInt(sHTML.substr(s+3,e-s));
1606 sHTML = sHTML.substr(0, s)+
'__n'+(++n)+
'_'+sHTML.substr(e+1);
1612 s = sHTML.indexOf(
'__N',p);
1614 e = sHTML.indexOf(
'__',s+2);
1616 n = parseInt(sHTML.substr(s+3,e-s));
1617 sHTML = sHTML.substr(0, s)+
'__N'+(++n)+
'__'+sHTML.substr(e+2);
1620 oDiv.innerHTML = sHTML;
1622 var inputName = document.getElementById(
'value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_').name;
1624 s = inputName.indexOf(
'][',p);
1625 e = inputName.indexOf(
']',s+1);
1626 inputName = inputName.substr(0, s)+
']['+(++n)+
']'+inputName.substr(e+1);
1627 document.getElementById(
'value_<?echo $MAP_ID;?>__n' + --n +
'_').name = inputName;
1629 var patt =
new RegExp (
"<"+
"script"+
">[^\000]*?<"+
"\/"+
"script"+
">",
"ig");
1630 var code = sHTML.match(patt);
1633 for(var i = 0; i < code.length; i++)
1637 s = code[i].substring(8, code[i].length-9);
1638 jsUtils.EvalGlobal(s);
1643 if (BX && BX.adminPanel)
1645 BX.adminPanel.modifyFormElements(oDiv);
1646 BX.onCustomEvent(
'onAdminTabsChange');
1649 setTimeout(
function() {
1650 var r = BX.findChildren(oDiv, {tag: /^(input|
select|textarea)$/i});
1651 if (r && r.length > 0)
1653 for (var i=0,l=r.length;i<l;i++)
1655 if (r[i].form && r[i].form.BXAUTOSAVE)
1656 r[i].form.BXAUTOSAVE.RegisterInput(r[i]);
1664 function setDefaultPreset_<?echo $MAP_ID?>()
1666 if(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects)
1668 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.each(
function (geoObject) {
1669 geoObject.options.set({preset:
'twirl#blueIcon'});
1674 function updateMapHint_<?echo $MAP_ID?>()
1678 while (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat'))
1680 if (BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lat').value !==
'' || !BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon') || BX(
'point_<?echo $MAP_ID?>__n' + i +
'_lon').value !==
'')
1686 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'block';
1687 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'none';
1691 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1692 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1697<div
id=
"bx_address_search_control_<?echo $MAP_ID?>" style=
"display: none;margin-top:15px;"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_SEARCH')?><input type=
"text" name=
"bx_address_<?echo $MAP_ID?>" id=
"bx_address_<?echo $MAP_ID?>" value=
"" style=
"width: 300px;" autocomplete=
"off" /></div>
1702<input type=
"text" style=
"width:125px;margin:0 0 4px" name=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" id=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />, <input type=
"text" style=
"width:125px;margin:0 15px 4px 0;" name=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" id=
"point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" onchange=
"setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />
1703<div
id=
"point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_" style=
"display:none;margin:0 0 4px;font-size: 12px"><a href=
"javascript:void(0);" onclick=
"findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_GOTO_POINT')?></a> | <a href=
"javascript:void(0);" onclick=
"if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo
GetMessage(
'IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT')?></a></div><br />
1704<input type=
"text" style=
"display:none;" id=
"value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_" name=
"<?=htmlspecialcharsbx($strHTMLControlName["VALUE
"])?>" value=
"<?=htmlspecialcharsEx($value["VALUE
"])?>" />
1706 window.jsAdminYandexMess = {
1707 nothing_found:
'<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NOTHING_FOUND
'))?>'
1709 jsUtils.loadCSSFile(
'/bitrix/components/bitrix/map.yandex.view/settings/settings.css');
1711 function BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1713 if (!window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'])
1714 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 300);
1717 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
null;
1719 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.remove(
'dblclick', window.setPointValue_<?echo $MAP_ID?>);
1720 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.add(
'dblclick', window.setPointValue_<?echo $MAP_ID?>);
1721 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].events.add(
'click', window.setDefaultPreset_<?echo $MAP_ID?>);
1722 var searchInput = BX(
'bx_address_<?echo $MAP_ID?>');
1723 <?
if (\
Bitrix\Main\Config\Option::get(
'fileman',
'yandex_map_api_key',
'')):?>
1724 BX.bind(searchInput,
"keydown", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
1725 BX.bind(searchInput,
"contextmenu", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
1727 searchInput.disabled =
true;
1728 searchInput.title =
'<?=CUtil::JSEscape(GetMessage("IBLOCK_PROP_MAP_YANDEX_SEARCH_KEY_REQUIRED"))?>';
1730 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'none';
1731 <?
if ($bHasValue):?>
1732 setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_([<?echo $POINT_LAT?>, <?echo $POINT_LON?>]);
1733 if (<?=$yandexMapLastNumber?> > 0)
1734 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].setBounds(window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.getBounds(), {checkZoomRange: true});
1737 BX(
'bx_address_search_control_<?echo $MAP_ID?>').style.display =
'block';
1738 BX(
'bx_map_hint_<?echo $MAP_ID?>').style.display =
'block';
1743 function findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1745 if (
null != window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1747 window.setDefaultPreset_<?echo $MAP_ID?>();
1748 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
1749 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.options.set({preset:
'twirl#redIcon'});
1754 function removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1756 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.remove(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1757 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
null;
1759 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'none';
1761 updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
1763 updateMapHint_<?echo $MAP_ID?>();
1766 function setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obEvent)
1768 var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get(
"coordPosition");
1770 if (
null == window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1772 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ =
new ymaps.Placemark(obPoint, {}, {draggable:
true});
1773 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1774 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.events.add(
'dragend', updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
1778 window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.setCoordinates(obPoint);
1781 BX(
'point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display =
'inline-block';
1782 BX(
'bx_map_hint_novalue_<?echo $MAP_ID?>').style.display =
'none';
1783 BX(
'bx_map_hint_value_<?echo $MAP_ID?>').style.display =
'block';
1785 updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint);
1786 window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
1789 function setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
1791 var vv = [BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value, BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value];
1792 if (vv[0] ==
'' && vv[1] ==
'')
1794 removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
1796 var v = [parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value), parseFloat(BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value)];
1797 if (!isNaN(v[0]) && !isNaN(v[1]))
1799 setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(v);
1803 function updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint)
1805 if (!!obPoint && !!obPoint.geometry)
1806 obPoint = obPoint.geometry.getCoordinates();
1807 else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
1808 obPoint = window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates();
1812 var obInput = BX(
'value_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_');
1813 obInput.value =
null == obPoint ?
'' : obPoint[0] +
',' + obPoint[1];
1815 BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value = obPoint ? obPoint[0] :
'';
1816 BX(
'point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value = obPoint ? obPoint[1] :
'';
1819 BX.ready(
function() {
1820 setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 100);
1823 var jsYandexCESearch_<?echo $MAP_ID;?> = {
1833 arSearchResults: [],
1834 strLastSearch:
null,
1838 __init:
function(input)
1840 if (jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
return;
1842 jsYandexCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects[
'<?echo $MAP_ID?>'];
1843 jsYandexCESearch_<?echo $MAP_ID;?>.obInput = input;
1845 input.onfocus = jsYandexCESearch_<?echo $MAP_ID;?>.showResults;
1846 input.onblur = jsYandexCESearch_<?echo $MAP_ID;?>.hideResults;
1848 jsYandexCESearch_<?echo $MAP_ID;?>.bInited =
true;
1851 setTypingStarted:
function(e)
1856 jsYandexCESearch_<?echo $MAP_ID;?>.hideResults();
1858 if (e.keyCode == 13 )
1860 jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
1865 if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
1866 jsYandexCESearch_<?echo $MAP_ID;?>.__init(
this);
1868 if (e.type==
"contextmenu")
1869 jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
1871 jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
1873 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.timerID)
1874 clearTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.timerID);
1876 jsYandexCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.doSearch, jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay);
1880 doSearch:
function()
1882 this.strLastSearch = jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value);
1884 if (this.strLastSearch.length > 1)
1886 ymaps.geocode(this.strLastSearch).then(
1887 jsYandexCESearch_<?echo $MAP_ID;?>.__searchResultsLoad,
1895 alert(window.jsAdminYandexMess.mess_error +
': ' + error.message);
1898 setResultsCoordinates:
function()
1900 var obPos = jsUtils.GetRealPos(jsYandexCESearch_<?echo $MAP_ID;?>.obInput);
1901 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) +
'px';
1902 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left +
'px';
1905 __generateOutput:
function()
1907 jsYandexCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement(
'UL'));
1908 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.className =
'bx-yandex-address-search-results';
1911 __searchResultsLoad:
function(res)
1913 var _this = jsYandexCESearch_<?echo $MAP_ID;?>;
1915 if (
null == _this.obOut)
1916 _this.__generateOutput();
1918 _this.obOut.innerHTML =
'';
1919 _this.clearSearchResults();
1921 var len = res.geoObjects.getLength();
1924 for (var i = 0; i < len; i++)
1926 _this.arSearchResults[i] = res.geoObjects.get(i);
1928 var obListElement = document.createElement(
'LI');
1931 obListElement.className =
'bx-yandex-first';
1933 var obLink = document.createElement(
'A');
1934 obLink.href =
"javascript:void(0)";
1935 var obText = obLink.appendChild(document.createElement(
'SPAN'));
1936 obText.appendChild(document.createTextNode(
1937 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i].properties.get(
'metaDataProperty').GeocoderMetaData.text
1940 obLink.BXSearchIndex = i;
1941 obLink.onclick = _this.__showSearchResult;
1943 obListElement.appendChild(obLink);
1944 _this.obOut.appendChild(obListElement);
1949 _this.obOut.innerHTML =
'<li class="bx-yandex-notfound">' + window.jsAdminYandexMess.nothing_found +
'</li>';
1952 _this.showResults();
1955 __showSearchResult:
function()
1957 if (
null !== this.BXSearchIndex)
1959 var bounds = jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].properties.get(
'boundedBy');
1960 jsYandexCESearch_<?echo $MAP_ID;?>.map.setBounds(bounds, { checkZoomRange:
true });
1964 showResults:
function()
1966 if(this.strLastSearch!=jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value))
1967 jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
1969 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
1971 jsYandexCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
1972 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display =
'block';
1976 hideResults:
function()
1978 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
1980 setTimeout(
"jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
1984 clearSearchResults:
function()
1986 for (var i = 0; i < jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
1988 delete jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
1991 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
1996 if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
1999 jsYandexCESearch_<?echo $MAP_ID;?>.bInited =
false;
2000 if (
null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
2002 jsYandexCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsYandexCESearch_<?echo $MAP_ID;?>.obOut);
2003 jsYandexCESearch_<?echo $MAP_ID;?>.obOut =
null;
2006 jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
2007 jsYandexCESearch_<?echo $MAP_ID;?>.map =
null;
2008 jsYandexCESearch_<?echo $MAP_ID;?>.geocoder =
null;
2009 jsYandexCESearch_<?echo $MAP_ID;?>.obInput =
null;
2010 jsYandexCESearch_<?echo $MAP_ID;?>.timerID =
null;
2018 <?$out = ob_get_contents();
2021 if ($arProperty[
'MULTIPLE'] ==
'Y')
2022 $yandexMapLastNumber++;
2030 $value[
'VALUE'] ??=
null;
2031 if ((
$arParams[
'MODE'] ??
null) ==
'CSV_EXPORT')
2033 if ($value[
"VALUE"] <>
'')
2035 $coordValue = parent::ConvertFromDB($arProperty, $value);
2036 $s = $coordValue[
"VALUE"];
2042 if($value[
"VALUE"] <>
'')
2044 $value = parent::ConvertFromDB($arProperty, $value);
2045 $arCoords = explode(
',', $value[
'VALUE']);
2047 $GLOBALS[
'APPLICATION']->IncludeComponent(
2048 'bitrix:map.yandex.view',
2051 'MAP_DATA' => serialize(
array(
2052 'yandex_lat' => $arCoords[0],
2053 'yandex_lon' => $arCoords[1],
2054 'PLACEMARKS' =>
array(
2056 'LON' => $arCoords[1],
2057 'LAT' => $arCoords[0],
2061 'MAP_ID' =>
'MAP_YANDEX_VIEW_'.$arProperty[
'IBLOCK_ID'].
'_'.$arProperty[
'ID'].
'_'.rand(),
2064 false,
array(
'HIDE_ICONS' =>
'Y')
2067 $s = ob_get_contents();
2085 $paramsHTMLControl = [
2086 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
2087 'MODE' =>
'FORM_FILL'
2092 if (is_array(
$params[
'VALUE']))
2094 foreach (
$params[
'VALUE'] as $element)
2096 $value[] = [
'VALUE' => $element];
2103 'VALUE' =>
$params[
'VALUE'] ??
''
2107 return static::GetPublicEditHTML(
$settings, $value, $paramsHTMLControl);
2113 $paramsHTMLControl = [
2114 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
2119 $multipleResult =
'';
2120 if (is_array(
$params[
'VALUE']))
2122 foreach (
$params[
'VALUE'] as $element)
2124 $value = [
'VALUE' => $element];
2125 $multipleResult .= static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl) .
'<br>';
2128 return $multipleResult;
2133 'VALUE' =>
$params[
'VALUE'] ??
''
2137 return static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl);
2152 public static function BasePrepareSettings($arProperty,
$key =
"SETTINGS")
2155 "BUFFER_LENGTH" =>
"10",
2156 "CONTROLBAR" =>
"bottom",
2161 "WMODE_FLV" =>
"transparent",
2162 "BGCOLOR" =>
"FFFFFF",
2163 "COLOR" =>
"000000",
2164 "OVER_COLOR" =>
"000000",
2165 "SCREEN_COLOR" =>
"000000",
2167 "WMODE_WMV" =>
"windowless",
2172 if(is_array($arProperty[
$key]))
2174 if (isset($arProperty[
$key][
"BUFFER_LENGTH"]))
2175 $arSet[
"BUFFER_LENGTH"] = intval($arProperty[
$key][
"BUFFER_LENGTH"]);
2177 if (isset($arProperty[
$key][
"CONTROLBAR"]))
2178 $arSet[
"CONTROLBAR"] = $arProperty[
$key][
"CONTROLBAR"];
2180 if (isset($arProperty[
$key][
"AUTOSTART"]))
2181 $arSet[
"AUTOSTART"] = $arProperty[
$key][
"AUTOSTART"] ==
"Y" ?
"Y" :
"N";
2183 if (isset($arProperty[
$key][
"VOLUME"]))
2184 $arSet[
"VOLUME"] = intval($arProperty[
$key][
"VOLUME"]);
2186 if (isset($arProperty[
$key][
"SKIN"]))
2187 $arSet[
"SKIN"] = $arProperty[
$key][
"SKIN"];
2189 if (isset($arProperty[
$key][
"FLASHVARS"]))
2190 $arSet[
"FLASHVARS"] = $arProperty[
$key][
"FLASHVARS"];
2192 if (isset($arProperty[
$key][
"WMODE_FLV"]))
2193 $arSet[
"WMODE_FLV"] = $arProperty[
$key][
"WMODE_FLV"];
2195 if (isset($arProperty[
$key][
"BGCOLOR"]))
2196 $arSet[
"BGCOLOR"] = $arProperty[
$key][
"BGCOLOR"];
2197 if (isset($arProperty[
$key][
"COLOR"]))
2198 $arSet[
"COLOR"] = $arProperty[
$key][
"COLOR"];
2199 if (isset($arProperty[
$key][
"OVER_COLOR"]))
2200 $arSet[
"OVER_COLOR"] = $arProperty[
$key][
"OVER_COLOR"];
2201 if (isset($arProperty[
$key][
"SCREEN_COLOR"]))
2202 $arSet[
"SCREEN_COLOR"] = $arProperty[
$key][
"SCREEN_COLOR"];
2204 if (isset($arProperty[
$key][
"SILVERVARS"]))
2205 $arSet[
"SILVERVARS"] = $arProperty[
$key][
"SILVERVARS"];
2207 if (isset($arProperty[
$key][
"WMODE_WMV"]))
2208 $arSet[
"WMODE_WMV"] = $arProperty[
$key][
"WMODE_WMV"];
2210 if (isset($arProperty[
$key][
"WIDTH"]))
2211 $arSet[
"WIDTH"] = $arProperty[
$key][
"WIDTH"];
2212 if (isset($arProperty[
$key][
"HEIGHT"]))
2213 $arSet[
"HEIGHT"] = $arProperty[
$key][
"HEIGHT"];
2218 public static function BaseGetSettingsHTML(
$name,
$val)
2220 $arSkins = GetSkinsEx(CUserTypeVideo::GetSkinPath());
2226tr.bx-prop-sub-
title td{background: #E2E1E0! important;
color: #525355! important; font-weight: bold! important; text-
align:
left! important; padding-
left: 10px;}
2229<tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_BOTH_SET')?></td></tr>
2231 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_BUFFER')?>:</td>
2233 <input type=
"text" name=
"<?= $name?>[BUFFER_LENGTH]" size=
"10" value=
"<?= intval($val["BUFFER_LENGTH
"])?>"/>
2237 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_CONTROLBAR')?>:</td>
2239 <
select name=
"<?= $name?>[CONTROLBAR]">
2240 <option value=
"bottom" <?
if(
$val[
"CONTROLBAR"] ==
'bottom') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_CONTROLBAR_DOWN')?></option>
2241 <option value=
"none" <?
if(
$val[
"CONTROLBAR"] ==
'none') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_CONTROLBAR_NONE')?></option>
2246 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_AUTOSTART')?>:</td>
2248 <input value=
"Y" type=
"checkbox" name=
"<?= $name?>[AUTOSTART]" <?
if(
$val[
"AUTOSTART"] ==
'Y') echo
'checked="checked"';?>/>
2252 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_VOLUME')?>:</td>
2254 <input type=
"text" name=
"<?= $name?>[VOLUME]" size=
"10" value=
"<?= intval($val["VOLUME
"])?>"/>
2258 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SIZE')?></td>
2260 <input type=
"text" name=
"<?= $name?>[WIDTH]" style=
"width: 70px;" size=
"10" value=
"<?= intval($val["WIDTH
"])?>"/>
2262 <input type=
"text" name=
"<?= $name?>[HEIGHT]" style=
"width: 70px;" size=
"10" value=
"<?= intval($val["HEIGHT
"])?>"/>
2265<tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_FLV_SET')?></td></tr>
2267 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_SKIN')?>:</td>
2268 <td
id=
"bx_player_skin_cell">
2269 <input
id=
"bx_player_skin_input" type=
"hidden" name=
"<?= $name?>[SKIN]" value=
"<?= htmlspecialcharsbx($val["SKIN
"])?>" />
2271jsUtils.loadCSSFile(
"/bitrix/components/bitrix/player/js/skin_selector.css");
2272jsUtils.loadJSFile(
"/bitrix/components/bitrix/player/js/prop_skin_selector.js",
function()
2274 if (!window.ComponentPropsSkinSelector || !window.BXSkinSelector)
2278 ComponentPropsSkinSelector({
2279 propertyID :
"SKIN",
2280 getElements :
function(){
return {SKIN_PATH: {value:
"<?= CVideoProperty::GetSkinPath()?>"}};},
2281 oInput : document.getElementById(
"bx_player_skin_input"),
2282 oCont : document.getElementById(
"bx_player_skin_cell"),
2283 data :
'<?= CUtil::JSEscape(CUtil::PhpToJSObject(array($arSkins, array('NoPreview
' => GetMessage("IBLOCK_PROP_VIDEO_NO_PREVIEW"))))) ?>'
2290 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_FLASHVARS')?>:</td>
2296 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_FLV')?>:</td>
2298 <
select name=
"<?= $name?>[WMODE_FLV]">
2299 <option value=
"window" <?
if(
$val[
"WMODE_FLV"] ==
'window' || !
$val[
"WMODE_FLV"]) echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_WINDOW')?></option>
2300 <option value=
"opaque" <?
if(
$val[
"WMODE_FLV"] ==
'opaque') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_OPAQUE')?></option>
2301 <option value=
"transparent" <?
if(
$val[
"WMODE_FLV"] ==
'transparent') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_TRANSPARENT')?></option>
2305<tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_WMV_SET')?></td></tr>
2307 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_BGCOLOR')?>:</td>
2308 <td><input type=
"text" name=
"<?= $name?>[BGCOLOR]" size=
"10" value=
"<?= htmlspecialcharsbx($val["BGCOLOR
"])?>"/></td>
2311 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_COLOR')?>:</td>
2312 <td><input type=
"text" name=
"<?= $name?>[COLOR]" size=
"10" value=
"<?= htmlspecialcharsbx($val["COLOR
"])?>"/></td>
2315 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_OVER_COLOR')?>:</td>
2316 <td><input type=
"text" name=
"<?= $name?>[OVER_COLOR]" size=
"10" value=
"<?= htmlspecialcharsbx($val["OVER_COLOR
"])?>"/></td>
2319 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_SCREEN_COLOR')?>:</td>
2320 <td><input type=
"text" name=
"<?= $name?>[SCREEN_COLOR]" size=
"10" value=
"<?= htmlspecialcharsbx($val["SCREEN_COLOR
"])?>"/ ></td>
2323 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_SILVERVARS')?>:</td>
2325 <textarea cols=
"25" name=
"<?= $name?>[SILVERVARS]"><?=
htmlspecialcharsbx(
$val[
"SILVERVARS"])?></textarea>
2329 <td><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_WMV')?>:</td>
2331 <
select name=
"<?= $name?>[WMODE_WMV]">
2332 <option value=
"window" <?
if(
$val[
"WMODE_WMV"] ==
'window') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_WINDOW')?></option>
2333 <option value=
"windowless" <?
if(
$val[
"WMODE_WMV"] ==
'windowless') echo
'selected';?>><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SET_WMODE_TRANSPARENT')?></option>
2343 public static function BaseGetEditFormHTML($set,
$val,
$name, $controlMode=
false)
2346 $id = str_replace(
array(
"[",
"]",
":"),
"_",
$name);
2350 if (intval(
$val[
'width']) <= 0)
2351 $val[
'width'] = intval($set[
'WIDTH']);
2352 if (intval(
$val[
'height']) <= 0)
2353 $val[
'height'] = intval($set[
'HEIGHT']);
2357<div
style=
"padding: 5px;">
2359table.bx-video-prop-tbl{border-
collapse:
collapse! important; border: 1px solid #E0E4F1;}
2360table.bx-video-prop-tbl td{padding: 3px 5px! important; border-bottom: 1px dotted #BABABA !important;}
2361table.bx-video-prop-tbl tr.bx-prop-main-
title td{background: #E0E4F1! important;
color: #525355! important; font-weight: bold! important; text-
align: center! important; border-bottom-
width: 0px !important; padding: 5px! important;}
2362table.bx-video-prop-tbl tr.bx-prop-sub-
title td{background: #E2E1E0! important;
color: #525355! important; font-weight: bold! important; text-
align:
left! important; border-bottom-
width: 0px !important;}
2363table.bx-video-prop-tbl td.bx-pr-
title{text-
align:
right! important; vertical-
align:
top! important; padding-
top: 8px !important;}
2364div.bx-
path-div a{float:
right !important;}
2366div.bx-
path-div-changed a.bx-leave{
display: block !important;}
2367div.bx-
path-div-changed a.bx-change{
display: none !important;}
2369div.bx-
path-div-changed input.bx-
path{text-decoration: line-through !important;}
2373<table
class=
"bx-video-prop-tbl">
2374 <tr
class=
"bx-prop-main-title"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PARAMS_TITLE')?></td></tr>
2375 <?
if ($controlMode !=
"iblock_element_admin"): ?>
2377 <tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PARAMS_TITLE_VIEW')?></td></tr>
2379 <td colSpan=
"2" style=
"text-align: center;">
2384 "PLAYER_TYPE" =>
"auto",
2386 "WIDTH" =>
$val[
'width'],
2387 "HEIGHT" =>
$val[
'height'],
2388 "FILE_TITLE" =>
$val[
'title'],
2389 "FILE_DURATION" => intval(
$val[
'duration']),
2390 "FILE_AUTHOR" =>
$val[
'author'],
2391 "FILE_DATE" =>
$val[
'date'],
2392 "FILE_DESCRIPTION" =>
$val[
'desc'],
2393 "SKIN_PATH" => CVideoProperty::GetSkinPath(),
2394 "SKIN" => $set[
"SKIN"],
2395 "CONTROLBAR" => $set[
"CONTROLBAR"],
2396 "WMODE" => $set[
"WMODE_FLV"],
2397 "WMODE_WMV" => $set[
"WMODE_WMV"],
2398 "SHOW_CONTROLS" => $set[
"CONTROLBAR"] !=
'none' ?
"Y" :
"N",
2399 "CONTROLS_BGCOLOR" => $set[
"CONTROLS_BGCOLOR"],
2400 "CONTROLS_COLOR" => $set[
"CONTROLS_COLOR"],
2401 "CONTROLS_OVER_COLOR" => $set[
"CONTROLS_OVER_COLOR"],
2402 "SCREEN_COLOR" => $set[
"SCREEN_COLOR"],
2403 "AUTOSTART" => $set[
"AUTOSTART"],
2404 "VOLUME" => $set[
"VOLUME"],
2405 "ADDITIONAL_FLASHVARS" => $set[
"FLASHVARS"],
2406 "BUFFER_LENGTH" => $set[
"BUFFER_LENGTH"],
2407 "ADDITIONAL_WMVVARS" => $set[
"SILVERVARS"],
2409 "LOGO_POSITION" =>
"none"
2412 array(
'HIDE_ICONS' =>
'Y')
2418 <tr><td
class=
"bx-pr-title" style=
"width: 300px;"></td><td
style=
"width: 240px;"></td></tr>
2420 <tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PARAMS_TITLE_MAIN')?></td></tr>
2424 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_FILE')?>:</td>
2426 <div
id=
"bx_video_path_div_<?= $id?>" class=
"bx-path-div">
2427 <input type=
"hidden" value=
"<?= htmlspecialcharsEx($path)?>" name=
"<?= $name?>[CUR_PATH]" />
2428 <input
id=
"bx_video_b_new_file_<?= $id?>" type=
"hidden" value=
"N" name=
"<?= $name?>[B_NEW_FILE]" />
2429 <input
class=
"bx-path" readonly=
"readonly" value=
"<?= htmlspecialcharsex($path)?>" size=
"30" />
2431 <a href=
"javascript: void(0)" onclick=
"return ChangeOrLeaveFile<?=$id?>(true);" class=
"bx-change" id=
"bx-change"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_FILE_CHANGE')?></a>
2432 <a href=
"javascript: void(0)" onclick=
"return ChangeOrLeaveFile<?=$id?>(false);" class=
"bx-leave"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_FILE_LEAVE')?></a>
2436 <?
if(CVideoProperty::CheckFileInUploadDir(
$path)):?>
2437 <tr
id=
"bx_video_del_row_<?= $id?>" style=
"display: none;">
2438 <td
class=
"bx-pr-title"></td>
2440 <input type=
"checkbox" value=
"Y" id=
"bx_video_del_<?= $id?>" checked=
"checked" name=
"<?= $name?>[DEL_CUR_FILE]" /><label
for=
"bx_video_del_<?= $id?>"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_DEL_FILE')?></label>
2446 <tr
id=
"bx_video_new_path_row_<?= $id?>" <?
if (
$path <> ''){ echo
'style="display: none;"'; }?>>
2447 <td
class=
"bx-pr-title" style=
"width: 300px;"><?=
GetMessage(
$path <> '' ?
'IBLOCK_PROP_VIDEO_PATH_NEW' :
'IBLOCK_PROP_VIDEO_PATH')?>:</td>
2448 <td
style=
"width: 240px;">
2449 <img src=
"/bitrix/images/1.gif" class=
"spacer" />
2450 <div
id=
"bx_video_path_cont1_<?= $id?>" style=
"display: none;">
2451 <input type=
"text" size=
"30" value=
"" id=
"bx_video_path_<?= $id?>" style=
"float:left;" name=
"<?= $name?>[PATH]" />
2455 "event" =>
"OpenFileBrowser_".$id,
2456 "arResultDest" => Array(
"FUNCTION_NAME" =>
"SetVideoPath".$id),
2457 "arPath" => Array(),
2460 "showUploadTab" =>
false,
2461 "showAddToMenuTab" =>
false,
2462 "fileFilter" =>
'flv,mp4,mp3,wmv',
2463 "allowAllFiles" =>
true,
2464 "SaveConfig" =>
true
2468 CMedialib::ShowBrowseButton(
2470 "id" =>
'OpenFileBrowser_but_'.$id,
2471 "event" =>
"OpenFileBrowser_".$id,
2472 'MedialibConfig' =>
array(
2473 "event" =>
"OpenFileBrowser_ml_".$id,
2474 "arResultDest" =>
array(
"FUNCTION_NAME" =>
"SetVideoPath".$id)
2478 <a href=
"javascript: void(0)" onclick=
"return DisplayCont('bx_video_path_cont2_<?= $id?>', 'bx_video_path_cont1_<?= $id?>');" style=
"float: right;"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PATH_FROM_PC')?></a>
2480 <div
id=
"bx_video_path_cont2_<?= $id?>">
2481 <input type=
"file" value=
"" id=
"bx_video_file_<?= $id?>" name=
"<?= $name?>[FILE]" />
2483 <a href=
"javascript: void(0)" onclick=
"return DisplayCont('bx_video_path_cont1_<?= $id?>', 'bx_video_path_cont2_<?= $id?>');" style=
"float: right;"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PATH_FROM_FD')?></a>
2489 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_FILE')?>:</td>
2491 <div
id=
"bx_video_path_div_<?= $id?>" class=
"bx-path-div">
2492 <input type=
"text" size=
"25" value=
"<?= htmlspecialcharsex($path)?>" size=
"30" name=
"<?= $name?>[PATH]"/>
2499 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_SIZE')?>:</td>
2501 <input
id=
"bx_video_width_<?= $id?>" type=
"text" size=
"10" style=
"width: 70px;" value=
"<?= htmlspecialcharsbx($val['width'])?>" name=
"<?= $name?>[WIDTH]" />
2503 <input
id=
"bx_video_height_<?= $id?>" type=
"text" size=
"10" style=
"width: 70px;" value=
"<?= htmlspecialcharsbx($val['height'])?>" name=
"<?= $name?>[HEIGHT]" />
2506 <tr
class=
"heading"><td colSpan=
"2"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_PARAMS_TITLE_INFO')?></td></tr>
2508 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_TITLE')?>:</td>
2509 <td><input
id=
"bx_video_title_<?= $id?>" type=
"text" size=
"30" value=
"<?= htmlspecialcharsbx($val['title'])?>" name=
"<?= $name?>[TITLE]" /></td>
2512 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_DURATION')?>:</td>
2513 <td><input
id=
"bx_video_duration_<?= $id?>" type=
"text" size=
"30" value=
"<?= htmlspecialcharsbx($val['duration'])?>" name=
"<?= $name?>[DURATION]"/></td>
2516 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_AUTHOR')?>:</td>
2517 <td><input
id=
"bx_video_author_<?= $id?>" type=
"text" size=
"30" value=
"<?= htmlspecialcharsbx($val['author'])?>" name=
"<?= $name?>[AUTHOR]"/></td>
2520 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_DATE')?>:</td>
2521 <td><input
id=
"bx_video_date_<?= $id?>" type=
"text" size=
"30" value=
"<?= htmlspecialcharsbx($val['date'])?>" name=
"<?= $name?>[DATE]" /></td>
2524 <td
class=
"bx-pr-title"><?=
GetMessage(
'IBLOCK_PROP_VIDEO_DESC')?>:</td>
2525 <td><input
id=
"bx_video_desc_<?= $id?>" type=
"text" size=
"30" value=
"<?= htmlspecialcharsbx($val['desc'])?>" name=
"<?= $name?>[DESC]"/></td>
2529function DisplayCont(id1, id2)
2532 el1 = document.getElementById(id1),
2533 el2 = document.getElementById(id2);
2537 el1.style.display =
"block";
2538 el2.style.display =
"none";
2543function SetVideoPath<?= $id?>(filename,
path, site)
2547 srcInput = document.getElementById(
"bx_video_path_<?= $id?>");
2549 if (typeof filename ==
'object')
2552 document.getElementById(
"bx_video_title_<?= $id?>").value = filename.name ||
'';
2553 document.getElementById(
"bx_video_desc_<?= $id?>").value = filename.description ||
'';
2557 url = (
path ==
'/' ?
'' :
path) +
'/'+filename;
2560 srcInput.value = url;
2561 if(srcInput.onchange)
2562 srcInput.onchange();
2567function ChangeOrLeaveFile<?= $id?>(bChange)
2570 pDiv = document.getElementById(
"bx_video_path_div_<?= $id?>"),
2571 pDelRow = document.getElementById(
"bx_video_del_row_<?= $id?>"),
2572 pBNewFile = document.getElementById(
"bx_video_b_new_file_<?= $id?>"),
2573 pNewFileRow = document.getElementById(
"bx_video_new_path_row_<?= $id?>"),
2574 _display = jsUtils.IsIE() ?
"inline" :
"table-row";
2577 pBNewFile.value = bChange ?
"Y" :
"N";
2580 pDelRow.style.display = bChange ? _display :
'none';
2583 pNewFileRow.style.display = bChange ? _display :
'none';
2585 pDiv.className = bChange ?
"bx-path-div bx-path-div-changed" :
"bx-path-div";
2592 $s = ob_get_contents();
2597 public static function BaseConvertToDB($value)
2602 if (!is_array($value))
2606 if (implode(
"|", array_keys($value)) ===
'path|width|height|title|duration|author|date|desc')
2607 return serialize($value);
2609 if ($value[
"B_NEW_FILE"] !=
"N")
2611 if ($value[
"CUR_PATH"] <>
'' && $value[
"DEL_CUR_FILE"] ==
"Y" && CIBlockPropertyVideo::CheckFileInUploadDir($value[
"CUR_PATH"]))
2614 $cur_path_ =
$_SERVER[
"DOCUMENT_ROOT"].Rel2Abs(
"/", $value[
"CUR_PATH"]);
2615 $flTmp =
$io->GetFile($cur_path_);
2616 $flSzTmp = $flTmp->GetFileSize();
2617 if(
$io->Delete($cur_path_))
2620 if(COption::GetOptionInt(
"main",
"disk_space") > 0)
2621 CDiskQuota::updateDiskQuota(
"file", $flSzTmp,
"delete");
2626 if ($value[
"PATH"] <>
'' )
2630 else if (isset($value[
"FILE"]) && $value[
"FILE"][
"tmp_name"] <>
'')
2632 $pathToDir = CIBlockPropertyVideo::GetUploadDirPath();
2633 if (!
$io->DirectoryExists(
$_SERVER[
"DOCUMENT_ROOT"].$pathToDir))
2637 $name = preg_replace(
"/[^a-zA-Z0-9_:\.]/is",
"_", $value[
"FILE"][
"name"]);
2638 $baseNamePart = mb_substr(
$name, 0, mb_strrpos(
$name,
'.'));
2645 while(
$io->FileExists(
$_SERVER[
"DOCUMENT_ROOT"].Rel2Abs($pathToDir,
$name)))
2646 $name = $baseNamePart.
"_(".++$ind.
").".$ext;
2649 if (is_uploaded_file($value[
"FILE"][
"tmp_name"])
2650 &&
$io->Copy($value[
"FILE"][
"tmp_name"],
$_SERVER[
"DOCUMENT_ROOT"].$pathto))
2654 if(COption::GetOptionInt(
"main",
"disk_space") > 0)
2655 CDiskQuota::updateDiskQuota(
"file", $value[
"FILE"][
"size"],
"add");
2660 elseif ($value[
"CUR_PATH"] <>
'')
2662 if(preg_match(
"/^(http|https):\\/\\//", $value[
"CUR_PATH"]))
2669 $arRes[
"width"] = intval($value[
"WIDTH"]);
2670 $arRes[
"height"] = intval($value[
"HEIGHT"]);
2673 if (
$arRes[
"height"] < 0)
2683 $strRes = serialize(
$arRes);
2690 public static function BaseConvertFromDB(
$val =
"")
2694 $val = unserialize(
$val, [
'allowed_classes' =>
false]);
2699 public static function BaseCheckFields(
$val)
2701 if (!is_array(
$val))
2706 if (
$val[
"B_NEW_FILE"] !=
"N" && isset(
$val[
"FILE"]) &&
$val[
'DEL_CUR_FILE'] !=
'Y')
2708 if(!empty(
$val[
"FILE"][
"error"]))
2712 if(
$val[
"FILE"][
"error"] === UPLOAD_ERR_INI_SIZE ||
$val[
"FILE"][
"error"] === UPLOAD_ERR_FORM_SIZE)
2716 elseif(
$val[
"FILE"][
"error"] !== UPLOAD_ERR_NO_FILE)
2722 if(
$val[
"FILE"][
"tmp_name"] <>
'')
2725 $name = preg_replace(
"/[^a-zA-Z0-9_:\.]/is",
"_",
$name);
2732 elseif (!is_uploaded_file(
$val[
"FILE"][
"tmp_name"]))
2739 $quota =
new CDiskQuota();
2741 if (!$quota->checkDiskQuota(
array(
"FILE_SIZE" =>
$val[
"FILE"][
"size"])))
2752 public static function BaseGetAdminListViewHTML(
$val)
2754 if (!is_array(
$val) ||
$val[
"path"] ==
'')
2756 return '<span style="white-space: nowrap;" title="'.htmlspecialcharsbx(
$val[
"path"]).
'">'.
GetMessage(
"IBLOCK_PROP_VIDEO").
' ['.htmlspecialcharsex(
$val[
"path"]).
']</span>';
2759 public static function BaseGetPublicHTML($set,
$val)
2761 if (
$val[
"path"] ==
'')
2768<div
title=
"<?= addslashes($title)?>">
2773 "PLAYER_TYPE" =>
"auto",
2774 "PATH" =>
$val[
"path"],
2775 "WIDTH" =>
$val[
'width'],
2776 "HEIGHT" =>
$val[
'height'],
2777 "FILE_TITLE" =>
$val[
'title'],
2778 "FILE_DURATION" => intval(
$val[
'duration']),
2779 "FILE_AUTHOR" =>
$val[
'author'],
2780 "FILE_DATE" =>
$val[
'date'],
2781 "FILE_DESCRIPTION" =>
$val[
'desc'],
2782 "SKIN_PATH" => CIBlockPropertyVideo::GetSkinPath(),
2783 "SKIN" => $set[
"SKIN"],
2784 "CONTROLBAR" => $set[
"CONTROLBAR"],
2785 "WMODE" => $set[
"WMODE_FLV"],
2786 "WMODE_WMV" => $set[
"WMODE_WMV"],
2787 "SHOW_CONTROLS" => $set[
"CONTROLBAR"] !=
'none' ?
"Y" :
"N",
2788 "CONTROLS_BGCOLOR" => $set[
"CONTROLS_BGCOLOR"],
2789 "CONTROLS_COLOR" => $set[
"CONTROLS_COLOR"],
2790 "CONTROLS_OVER_COLOR" => $set[
"CONTROLS_OVER_COLOR"],
2791 "SCREEN_COLOR" => $set[
"SCREEN_COLOR"],
2792 "AUTOSTART" => $set[
"AUTOSTART"],
2793 "VOLUME" => $set[
"VOLUME"],
2794 "ADDITIONAL_FLASHVARS" => $set[
"FLASHVARS"],
2795 "BUFFER_LENGTH" => $set[
"BUFFER_LENGTH"],
2796 "ADDITIONAL_WMVVARS" => $set[
"SILVERVARS"],
2798 "LOGO_POSITION" =>
"none"
2801 array(
'HIDE_ICONS' =>
'Y')
2805 $s = ob_get_contents();
2810 public static function BaseOnSearchContent(
$val)
2812 if(!is_array(
$val) && is_string(
$val))
2814 $val = unserialize(
$val, [
'allowed_classes' =>
false]);
2824 if (!empty(
$val[
'path']))
2826 if (!empty(
$val[
'title']))
2829 if (!empty(
$val[
'author']))
2832 if (!empty(
$val[
'desc']))
2839 public static function CheckFileInUploadDir(
$path =
'')
2841 $pathToDir = CVideoProperty::GetUploadDirPath();
2842 return mb_substr(
$path, 0, mb_strlen($pathToDir)) == $pathToDir;
2845 public static function GetUploadDirPath()
2847 return "/upload/video/";
2850 public static function GetSkinPath()
2852 return "/bitrix/components/bitrix/player/mediaplayer/skins";
2857if (!function_exists(
'getSkinsEx'))
2859 function getSkinsEx(
$path)
2867 $arSkins = getSkinsFromDir(
$path);
2871 while(
false !== ($skinDir = @readdir(
$handle)))
2874 if(!is_dir(
$basePath.
'/'.$skinDir) || $skinDir ==
"." || $skinDir ==
".." )
2877 $arSkins = array_merge($arSkins,getSkinsFromDir(
$path.
'/'.$skinDir));
2882 function getSkinsFromDir(
$path)
2885 $arSkinExt =
array(
'swf',
'zip',
'css');
2886 $arPreviewExt =
array(
'png',
'gif',
'jpg',
'jpeg');
2887 $prExtCnt =
count($arPreviewExt);
2891 while(
false !== (
$f = @readdir(
$handle)))
2897 if (in_array($ext, $arSkinExt))
2899 $name = mb_substr(
$f, 0, -mb_strlen($ext) - 1);
2903 if (mb_strpos(
$name,
'.min') !==
false)
2906 $Skin =
array(
'filename' =>
$f);
2907 $Skin[
'name'] = mb_strtoupper(mb_substr(
$name, 0, 1)).mb_strtolower(mb_substr(
$name, 1));
2908 $Skin[
'the_path'] =
$path;
2911 for (
$i = 0;
$i < $prExtCnt;
$i++)
2915 $Skin[
'preview'] =
$name.
'.'.$arPreviewExt[
$i];
2928class CIBlockPropertyVideo
extends CVideoProperty
2930 public static function GetUserTypeDescription()
2932 if (Loader::includeModule(
"bitrix24"))
2938 "PROPERTY_TYPE" =>
"S",
2939 "USER_TYPE" =>
"video",
2940 "DESCRIPTION" =>
GetMessage(
"IBLOCK_PROP_VIDEO"),
2941 "GetPropertyFieldHtml" =>
array(__CLASS__,
"GetPropertyFieldHtml"),
2942 "GetPublicViewHTML" =>
array(__CLASS__,
"GetPublicViewHTML"),
2943 "ConvertToDB" =>
array(__CLASS__,
"ConvertToDB"),
2944 "ConvertFromDB" =>
array(__CLASS__,
"ConvertFromDB"),
2945 "CheckFields" =>
array(__CLASS__,
"CheckFields"),
2946 "GetSearchContent" =>
array(__CLASS__,
"GetSearchContent"),
2947 "GetSettingsHTML" =>
array(__CLASS__,
"GetSettingsHTML"),
2948 "PrepareSettings" =>
array(__CLASS__,
"PrepareSettings"),
2949 "GetAdminListViewHTML" =>
array(__CLASS__,
"GetAdminListViewHTML"),
2950 "GetLength" =>
array(__CLASS__,
"GetLength"),
2951 'GetUIEntityEditorProperty' =>
array(__CLASS__,
'GetUIEntityEditorProperty'),
2952 'GetUIEntityEditorPropertyEditHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyEditHtml'),
2953 'GetUIEntityEditorPropertyViewHtml' =>
array(__CLASS__,
'GetUIEntityEditorPropertyViewHtml'),
2957 public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
2959 $dbVal = CUserTypeVideo::BaseConvertToDB($value[
"VALUE"]);
2960 $val = CUserTypeVideo::BaseConvertFromDB($dbVal);
2961 return CIBlockPropertyVideo::BaseGetEditFormHTML($arProperty[
"USER_TYPE_SETTINGS"],
$val, $strHTMLControlName[
"VALUE"], $strHTMLControlName[
"MODE"]);
2964 public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
2966 return CIBlockPropertyVideo::BaseGetAdminListViewHTML($value[
"VALUE"]);
2969 public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
2971 $pathExist = (isset($value[
'VALUE'][
'path']) &&
$value[
'VALUE'][
'path'] !=
'');
2972 if (isset($strHTMLControlName[
'MODE']) && $strHTMLControlName[
'MODE'] ==
'CSV_EXPORT')
2973 return ($pathExist ? $value[
'VALUE'][
'path'] :
'');
2974 elseif (isset($strHTMLControlName[
'MODE']) && $strHTMLControlName[
'MODE'] ==
'SIMPLE_TEXT')
2975 return ($pathExist ? $value['VALUE']['
path'] : '');
2977 return CIBlockPropertyVideo::BaseGetPublicHTML($arProperty[
"USER_TYPE_SETTINGS"], $value[
"VALUE"]);
2980 public static function ConvertFromDB($arProperty, $value)
2982 $value[
'VALUE'] = CIBlockPropertyVideo::BaseConvertFromDB($value[
'VALUE'] ??
null) ?:
'';
2986 public static function ConvertToDB($arProperty, $value)
2988 return [
"VALUE" => CIBlockPropertyVideo::BaseConvertToDB($value[
"VALUE"])];
2991 public static function CheckFields($arProperty, $value)
2993 return CIBlockPropertyVideo::BaseCheckFields($value[
"VALUE"]);
2996 public static function GetLength($arProperty, $value)
3000 && array_key_exists(
"VALUE", $value)
3001 && is_array($value[
"VALUE"])
3005 array_key_exists(
"PATH", $value[
"VALUE"])
3006 && trim($value[
"VALUE"][
"PATH"]) <>
''
3011 array_key_exists(
"FILE", $value[
"VALUE"])
3012 && is_array($value[
"VALUE"][
"FILE"])
3013 && $value[
"VALUE"][
"FILE"][
"error"] === 0
3018 array_key_exists(
"CUR_PATH", $value[
"VALUE"])
3019 && mb_strlen(trim($value[
"VALUE"][
"CUR_PATH"]))
3020 && !($value[
"VALUE"][
"B_NEW_FILE"] ===
"Y" && $value[
"VALUE"][
"DEL_CUR_FILE"] ===
"Y")
3028 public static function PrepareSettings($arProperty)
3030 $arResult = CUserTypeVideo::BasePrepareSettings($arProperty,
"USER_TYPE_SETTINGS");
3038 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
3040 $arPropertyFields =
array(
3041 "HIDE" =>
array(
"FILTRABLE",
"ROW_COUNT",
"COL_COUNT",
"DEFAULT_VALUE",
"SMART_FILTER"),
3042 "SET" =>
array(
"FILTRABLE" =>
"N",
"SMART_FILTER" =>
"N"),
3043 "USER_TYPE_SETTINGS_TITLE" =>
GetMessage(
"IBLOCK_PROP_VIDEO_SET_NAME")
3046 $arSettings = CIBlockPropertyVideo::PrepareSettings($arProperty);
3047 if (isset($arSettings[
'USER_TYPE_SETTINGS']))
3048 $arSettings = $arSettings[
'USER_TYPE_SETTINGS'];
3050 return CIBlockPropertyVideo::BaseGetSettingsHTML($strHTMLControlName[
"NAME"], $arSettings);
3053 public static function GetSearchContent($arProperty, $value, $strHTMLControlName)
3055 return CIBlockPropertyVideo::BaseOnSearchContent($value[
"VALUE"]);
3058 public static function GetUIEntityEditorProperty(
$settings, $value)
3065 public static function GetUIEntityEditorPropertyEditHtml(
array $params = []) : string
3071 if (is_array(
$params[
'VALUE']))
3075 for($index = 0; $index <
$params[
'SETTINGS'][
'MULTIPLE_CNT']; $index++)
3078 'VALUE' =>
$params[
'VALUE'][$index] ?? []
3080 $paramsHTMLControl = [
3081 'VALUE' =>
$params[
'FIELD_NAME'] .
'[' . $index .
']' ??
'[' . $index .
']',
3083 $editor .= static::GetPropertyFieldHtml(
$settings, $value, $paramsHTMLControl);
3091 'VALUE' =>
$params[
'VALUE'] ?? []
3093 $paramsHTMLControl = [
3094 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
3097 return static::GetPropertyFieldHtml(
$settings, $value, $paramsHTMLControl);
3100 public static function GetUIEntityEditorPropertyViewHtml(
array $params = []) : string
3103 $paramsHTMLControl = [
3104 'VALUE' =>
$params[
'FIELD_NAME'] ??
'',
3109 $multipleResult =
'';
3110 if (is_array(
$params[
'VALUE']))
3112 foreach (
$params[
'VALUE'] as $element)
3115 'VALUE' => empty($element) ? [] : $element
3117 $multipleResult .= static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl) .
'<br>';
3120 return $multipleResult;
3129 return static::GetPublicViewHTML(
$settings, $value, $paramsHTMLControl);
3134class CUserTypeVideo
extends CVideoProperty
3136 public static function GetUserTypeDescription()
3139 "USER_TYPE_ID" =>
"video",
3140 "CLASS_NAME" =>
"CUserTypeVideo",
3141 "DESCRIPTION" =>
GetMessage(
"IBLOCK_PROP_VIDEO"),
3142 "BASE_TYPE" =>
"string"
3146 public static function GetDBColumnType($arUserField)
3148 $connection = \Bitrix\Main\Application::getConnection();
3150 return $helper->getColumnTypeByField(
new \Bitrix\Main\ORM\Fields\TextField(
'x'));
3153 public static function PrepareSettings($arProperty)
3155 return CUserTypeVideo::BasePrepareSettings($arProperty,
"SETTINGS");
3158 public static function GetSettingsHTML($arUserField, $arHtmlControl,
$bVarsFromForm)
3160 if(!is_array($arUserField))
3161 $arUserField =
array();
3163 $arUserField[
"SETTINGS"] =
$bVarsFromForm ?
$GLOBALS[$arHtmlControl[
"NAME"]] : CUserTypeVideo::PrepareSettings($arUserField);
3164 return CUserTypeVideo::BaseGetSettingsHTML($arHtmlControl[
"NAME"], $arUserField[
"SETTINGS"]);
3167 public static function GetEditFormHTML($arUserField, $arHtmlControl)
3170 return CUserTypeVideo::BaseGetEditFormHTML($arUserField[
"SETTINGS"],
$val, $arHtmlControl[
"NAME"]);
3173 public static function OnBeforeSave($arUserField, $value)
3175 return CUserTypeVideo::BaseConvertToDB($value);
3178 public static function GetAdminListViewHTML($arUserField, $arHtmlControl)
3181 return CUserTypeVideo::BaseGetAdminListViewHTML(
$val);
3184 public static function CheckFields($arUserField, $value)
3186 $result = CUserTypeVideo::BaseCheckFields($value);
3199 public static function OnSearchIndex($arUserField)
3201 return CIBlockPropertyVideo::BaseOnSearchContent($arUserField[
"VALUE"]);
3204 public static function GetPublicViewHTML($arUserField, $arHtmlControl)
3207 return CUserTypeVideo::BaseGetPublicHTML($arUserField[
"SETTINGS"],
$val);
3210 public static function canUseArrayValueForSingleField(): bool
return[Dependency::CONTAINER=> Container::class, Dependency::IBLOCK_INFO=> IblockInfo::class, Dependency::PRODUCT_CONVERTER=> ProductConverter::class, Dependency::REPOSITORY_FACADE=> Repository::class, Dependency::PRODUCT_FACTORY=> ProductFactory::class, Dependency::PRODUCT_REPOSITORY=> ProductRepository::class, ProductFactory::PRODUCT=> Product::class, Dependency::SECTION_FACTORY=> SectionFactory::class, Dependency::SECTION_REPOSITORY=> SectionRepository::class, SectionFactory::SECTION=> Section::class, SectionFactory::SECTION_COLLECTION=> SectionCollection::class, Dependency::SKU_FACTORY=> SkuFactory::class, Dependency::SKU_REPOSITORY=> SkuRepository::class, SkuFactory::SIMPLE_SKU=> SimpleSku::class, SkuFactory::SKU=> Sku::class, SkuFactory::SKU_COLLECTION=> SkuCollection::class, Dependency::PROPERTY_FACTORY=> PropertyFactory::class, Dependency::PROPERTY_REPOSITORY=> PropertyRepository::class, PropertyFactory::PROPERTY=> Property::class, PropertyFactory::PROPERTY_COLLECTION=> PropertyCollection::class, Dependency::PROPERTY_VALUE_FACTORY=> PropertyValueFactory::class, PropertyValueFactory::PROPERTY_VALUE=> PropertyValue::class, PropertyValueFactory::PROPERTY_VALUE_COLLECTION=> PropertyValueCollection::class, Dependency::PROPERTY_FEATURE_FACTORY=> PropertyFeatureFactory::class, Dependency::PROPERTY_FEATURE_REPOSITORY=> PropertyFeatureRepository::class, PropertyFeatureFactory::PROPERTY_FEATURE=> PropertyFeature::class, PropertyFeatureFactory::PROPERTY_FEATURE_COLLECTION=> PropertyFeatureCollection::class, Dependency::PRICE_FACTORY=> PriceFactory::class, Dependency::PRICE_REPOSITORY=> PriceRepository::class, PriceFactory::SIMPLE_PRICE=> SimplePrice::class, PriceFactory::QUANTITY_DEPENDENT_PRICE=> QuantityDependentPrice::class, PriceFactory::PRICE_COLLECTION=> PriceCollection::class, Dependency::IMAGE_FACTORY=> ImageFactory::class, Dependency::IMAGE_REPOSITORY=> ImageRepository::class, ImageFactory::DETAIL_IMAGE=> DetailImage::class, ImageFactory::PREVIEW_IMAGE=> PreviewImage::class, ImageFactory::MORE_PHOTO_IMAGE=> MorePhotoImage::class, ImageFactory::IMAGE_COLLECTION=> ImageCollection::class, Dependency::MEASURE_RATIO_FACTORY=> MeasureRatioFactory::class, Dependency::MEASURE_RATIO_REPOSITORY=> MeasureRatioRepository::class, MeasureRatioFactory::SIMPLE_MEASURE_RATIO=> SimpleMeasureRatio::class, MeasureRatioFactory::MEASURE_RATIO_COLLECTION=> MeasureRatioCollection::class, Dependency::BARCODE_FACTORY=> BarcodeFactory::class, Dependency::BARCODE_REPOSITORY=> BarcodeRepository::class, BarcodeFactory::BARCODE=> Barcode::class, BarcodeFactory::BARCODE_COLLECTION=> BarcodeCollection::class, Dependency::STORE_PRODUCT_FACTORY=> StoreProductFactory::class, Dependency::STORE_PRODUCT_REPOSITORY=> StoreProductRepository::class, StoreProductFactory::STORE_PRODUCT=> StoreProduct::class, StoreProductFactory::STORE_PRODUCT_COLLECTION=> StoreProductCollection::class, 'sku.tree'=> SkuTree::class, 'integration.seo.facebook.facade'=> FacebookFacade::class, 'integration.seo.facebook.product.processor'=> FacebookProductProcessor::class, 'integration.seo.facebook.product.repository'=> FacebookProductRepository::class,]
static getList(array $parameters=array())
static ShowScript($arConfig)
static GetUIEntityEditorPropertyEditHtml(array $params=[])
static PrepareSettings($arProperty)
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
static GetUserTypeDescription()
static GetUIEntityEditorPropertyViewHtml(array $params=[])
static GetUIEntityEditorProperty($settings, $value)
static GetPublicViewHTML($arProperty, $value, $arParams)
static _GetMapKey($map_type, &$strDomain)
static GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
static GetUserTypeDescription()
static GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
static ConvertFromDB($arProperty, $value)
static ConvertToDB($arProperty, $value)
static GetUIEntityEditorPropertyEditHtml(array $params=[])
static PrepareSettings($arProperty)
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
static GetPublicEditHTML($arProperty, $value, $strHTMLControlName)
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
static GetUserTypeDescription()
static GetUIEntityEditorPropertyViewHtml(array $params=[])
static GetUIEntityEditorProperty($settings, $value)
static _DrawKeyInputControl($MAP_ID, $strDomain)
static GetPublicViewHTML($arProperty, $value, $arParams)
hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> height
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
hidden mSiteList<?=htmlspecialcharsbx(serialize( $siteList))?><?=htmlspecialcharsbx( $siteList[ $j]["ID"])?> _Propery<? if(((COption::GetOptionString( $module_id, "different_set", "N")=="Y") &&( $j !=0))||(COption::GetOptionString( $module_id, "different_set", "N")=="N")) echo "display: none;"?> top adm detail content cell l top adm detail content cell r heading center center ID left
$_SERVER["DOCUMENT_ROOT"]
if(preg_match('/^ else[a-z0-9_]{2}$/i', $siteID)===1)
handleError($rcpt, $rcptErrors)
htmlspecialcharsback($str)
HasScriptExtension($check_name)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Rel2Abs($curdir, $relpath)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title
$GLOBALS['YANDEX_MAP_PROPERTY']
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']
adm detail iblock types adm detail iblock list tr_SITE_ID display