- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/form.php
- Класс: Bitrix\Crm\Controller\Form
- Вызов: Form::getWidgetsForEmbedAction
public function getWidgetsForEmbedAction(int $formId, int $count = self::EMBED_DEFAULT_WIDGETS_DISPLAY_COUNT) { if (!$this->getFormAccess()) { $this->addError(new Main\Error('Access denied.', self::ERROR_CODE_FORM_READ_ACCESS_DENIED)); return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_FORM_READ_ACCESS_DENIED]]; } if ($this->shouldVerifyPhone() && !$this->isPhoneVerified($formId)) { $this->addError(new Main\Error('Phone doesn\'t verified', self::ERROR_CODE_PHONE_NOT_VERIFIED, ['id' => $formId])); return []; } if (!$this->getSiteButtonAccess()) { $this->addError(new Main\Error('Access denied.', self::ERROR_CODE_WIDGET_READ_ACCESS_DENIED)); return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_WIDGET_READ_ACCESS_DENIED]]; } $form = new WebForm\Form($formId); $formData = $form->get(); $formType = self::getFormType($form); $widgets = $this->loadWidgetsDataForEmbed($formId, $count + 1, $formType); // +1 to check for additional widgets $showMoreLink = false; if (count($widgets) > $count) { $showMoreLink = true; array_pop($widgets); // +1 to check for additional widgets } $buttonForPreview = $previewLink = null; foreach ($widgets as $widget) { if (count($widget['relatedFormIds'])) { $buttonForPreview = $widget['id']; } } $previewLink = strtr(WebForm\Script::getPublicFormPath(), [ '#id#' => $formData['ID'], '#form_id#' => $formData['ID'], '#form_code#' => $formData['CODE'], '#form_sec#' => $formData['SECURITY_CODE'], ]); $previewLink = WebForm\Script::getDomain() . $previewLink . '?view=preview&preview=button&preview_id='.$buttonForPreview; return [ 'widgets' => $widgets, 'url' => [ 'allWidgets' => \CCrmUrlUtil::ToAbsoluteUrl(Crm\SiteButton\Manager::getUrl()), ], 'showMoreLink' => $showMoreLink, 'previewLink' => $previewLink, 'formName' => $form->getName(), 'formType' => $formType, 'helpCenterUrl' => self::getHelpCenterUrl(self::EMBED_HELP_CENTER_ID), 'helpCenterId' => self::EMBED_HELP_CENTER_ID, ]; }