- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/subtype/map.php
- Класс: BitrixLandingSubtypeMap
- Вызов: Map::prepareManifest
static function prepareManifest(array $manifest, Block $block = null, array $params = []): array
{
if (
$block === null
|| !self::isMapBlock($block)
)
{
return $manifest;
}
if (
isset(self::$manifestStore[$block->getId()])
&& !empty(self::$manifestStore[$block->getId()])
)
{
return self::$manifestStore[$block->getId()];
}
self::readSettings(Hook::getForSite($block->getSiteId()));
self::readProviderFromBlock($block);
// save provider in content
$manifest['callbacks'] = [
'afterAdd' => function (Block &$block)
{
$dom = $block->getDom();
$node = $dom->querySelector(self::MAP_SELECTOR);
if (!$node)
{
return;
}
$attrsExists = $node->getAttributes();
if (isset($attrsExists['data-map']) && $attrsExists['data-map'] !== '')
{
return;
}
$isUseYandex = self::$settings['YMAP']['USE'] && !empty(self::$settings['YMAP']['CODE']);
$isNotSettings =
(!self::$settings['YMAP']['USE'] || empty(self::$settings['YMAP']['CODE']))
&& (!self::$settings['GMAP']['USE'] || empty(self::$settings['GMAP']['CODE']));
$providerForNewBlock = self::PROVIDER_DEFAULT;
if (
($isUseYandex || $isNotSettings)
&& self::canUseYandex()
)
{
$providerForNewBlock = self::PROVIDER_YANDEX;
}
$block->setAttributes([
self::MAP_SELECTOR => [
'data-map-provider' => $providerForNewBlock,
],
]);
$defaultOptions = [
'center' => self::getDefaultMapCenter(),
'zoom' => 17,
'markers' => [
[
'latLng' => self::getDefaultMapCenter(),
'title' => 'Bitrix24',
'description' => 'Bitrix24 - Your company. United.',
],
],
];
$block->setAttributes([
self::MAP_SELECTOR => [
'data-map' => $defaultOptions,
],
]);
$block->save();
unset(self::$manifestStore[$block->getId()]);
},
];
$manifest = self::addRequiredUserAction($manifest);
$manifest = self::addNodes($manifest);
$manifest = self::addSettings($manifest);
$manifest = self::addVisualSettings($manifest);
$manifest = self::addAssets($manifest);
// save local, but disable common cache
$manifest['disableCache'] = true;
self::$manifestStore[$block->getId()] = $manifest;
return $manifest;
}