SetTemplateCSS('ajax/ajax.css'); $APPLICATION->AddHeadScript('/bitrix/js/main/ajax.js'); } public static function GetComponentID($componentName, $componentTemplate, $additionalID) { $aTrace = Bitrix\Main\Diag\Helper::getBackTrace(0, DEBUG_BACKTRACE_IGNORE_ARGS); $trace_count = count($aTrace); $trace_current = $trace_count - 1; for ($i = 0; $i < $trace_count; $i++) { if (strtolower($aTrace[$i]['function']) == 'includecomponent' && (($c = strtolower($aTrace[$i]['class'])) == 'callmain' || $c == 'cmain')) { $trace_current = $i; break; } } $sSrcFile = $aTrace[$trace_current]["file"]; $iSrcLine = intval($aTrace[$trace_current]["line"]); if ($iSrcLine > 0 && $sSrcFile != '') { $session_string = $sSrcFile . '|' . $iSrcLine . '|' . $componentName . '|' . ($componentTemplate ?: '.default') . '|' . $additionalID ; return md5($session_string); } return false; } public static function GetSession() { return $_REQUEST[BX_AJAX_PARAM_ID] ?? false; } public static function GetSessionParam($ajax_id = false) { if (!$ajax_id) { $ajax_id = CAjax::GetSession(); } if ($ajax_id) { return BX_AJAX_PARAM_ID . '=' . $ajax_id; } return ''; } public static function AddSessionParam($url, $ajax_id = false) { $url_anchor = mb_strstr($url, '#'); if ($url_anchor !== false) { $url = mb_substr($url, 0, -mb_strlen($url_anchor)); } $url .= str_contains($url, '?') ? '&' : '?'; $url .= CAjax::GetSessionParam($ajax_id); if (isset($_REQUEST['AJAX_CALL'])) { $url .= '&AJAX_CALL=Y'; } if ($url_anchor !== false) { $url .= $url_anchor; } return $url; } // $text = htmlspecialcharred public static function GetLinkEx($real_url, $public_url, $text, $container_id, $additional = '') { if (!$public_url) { $public_url = $real_url; } return sprintf( '%s', htmlspecialcharsbx($public_url), CUtil::JSEscape(htmlspecialcharsbx($real_url)), CUtil::JSEscape(htmlspecialcharsbx($container_id)), $additional, $text ); } // $text - no htmlspecialchar public static function GetLink($url, $text, $container_id, $additional = '') { return CAjax::GetLinkEx($url, false, htmlspecialcharsbx($text), htmlspecialcharsbx($container_id), $additional); } public static function GetForm($form_params, $container_id, $ajax_id, $bReplace = true, $bShadow = true) { static $rndGenerator = null; if (!$rndGenerator) { $rndGenerator = new \Bitrix\Main\Type\RandomSequence("BX_AJAX"); } $rnd = $rndGenerator->randString(6); return '