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