• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/main.php
  • Класс: CAllMain
  • Вызов: CAllMain::GetPopupLink
public function GetPopupLink($arUrl)
{
	CUtil::InitJSCore(array('window', 'ajax'));

	if (
		class_exists('CUserOptions')
		&& (
			!isset($arUrl['PARAMS'])
			|| !is_array($arUrl['PARAMS'])
			|| !isset($arUrl['PARAMS']['resizable'])
			|| $arUrl['PARAMS']['resizable'] !== false
		)
	)
	{
		$pos = mb_strpos($arUrl['URL'], '?');
		if ($pos === false)
			$check_url = $arUrl['URL'];
		else
			$check_url = mb_substr($arUrl['URL'], 0, $pos);

		if (defined('SITE_TEMPLATE_ID'))
		{
			$arUrl['URL'] = (new Uri($arUrl['URL']))
				->addParams(['siteTemplateId' => SITE_TEMPLATE_ID])
				->getUri()
			;
		}

		$arPos = CUtil::GetPopupSize($check_url);

		if ($arPos['width'])
		{
			if (!is_array($arUrl['PARAMS']))
				$arUrl['PARAMS'] = array();

			$arUrl['PARAMS']['width'] = $arPos['width'];
			$arUrl['PARAMS']['height'] = $arPos['height'];
		}
	}

	$dialog_class = 'CDialog';
	if (isset($arUrl['PARAMS']['dialog_type']) && $arUrl['PARAMS']['dialog_type'])
	{
		switch ($arUrl['PARAMS']['dialog_type'])
		{
			case 'EDITOR': $dialog_class = 'CEditorDialog'; break;
			case 'ADMIN': $dialog_class = 'CAdminDialog'; break;
		}
	}
	elseif (strpos($arUrl['URL'], 'bxpublic=') !== false)
	{
		$dialog_class = 'CAdminDialog';
	}

	$arDialogParams = array(
		'content_url' => $arUrl['URL'],
		'width' => null,
		'height' => null,
	);

	if (isset($arUrl['PARAMS']['width']))
		$arDialogParams['width'] = intval($arUrl['PARAMS']['width']);
	if (isset($arUrl['PARAMS']['height']))
		$arDialogParams['height'] = intval($arUrl['PARAMS']['height']);
	if (isset($arUrl['PARAMS']['min_width']))
		$arDialogParams['min_width'] = intval($arUrl['PARAMS']['min_width']);
	if (isset($arUrl['PARAMS']['min_height']))
		$arDialogParams['min_height'] = intval($arUrl['PARAMS']['min_height']);
	if (isset($arUrl['PARAMS']['resizable']) && $arUrl['PARAMS']['resizable'] === false)
		$arDialogParams['resizable'] = false;
	if (isset($arUrl['POST']) && $arUrl['POST'])
		$arDialogParams['content_post'] = $arUrl['POST'];

	return '(new BX.'.$dialog_class.'('.CUtil::PhpToJsObject($arDialogParams).')).Show()';
}