• Модуль: 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;
}