- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Entity/File/FileItem.php
- Класс: BitrixImV2EntityFileFileItem
- Вызов: FileItem::getViewerAttributes
private function getViewerAttributes(): ?array
{
$diskFile = $this->getDiskFile();
try
{
$viewerType = FileAttributes::buildByFileData($diskFile->getFile() ?? [], $this->getDownloadLink())
->setObjectId($diskFile->getId())
->setGroupBy($this->getChatId() ?? $diskFile->getParentId())
->setAttribute('data-im-chat-id', $this->getChatId())
->setTitle($diskFile->getName())
->addAction([
'type' => 'download',
])
->addAction([
'type' => 'copyToMe',
'text' => Loc::getMessage('IM_FILE_ITEM_ACTION_SAVE_TO_OWN_FILES'),
'action' => 'BXIM.disk.saveToDiskAction',
'params' => [
'fileId' => $diskFile->getId(),
],
'extension' => 'disk.viewer.actions',
'buttonIconClass' => 'ui-btn-icon-cloud',
])
;
if ($viewerType->getTypeClass() === FileAttributes::JS_TYPE_CLASS_ONLYOFFICE)
{
$viewerType->setTypeClass('BX.Messenger.Integration.Viewer.OnlyOfficeChatItem');
if (
$diskFile->getCode() === CreateDocumentByCallTemplateScenario::CODE_RESUME
|| $diskFile->getRealObject()->getCode() === CreateDocumentByCallTemplateScenario::CODE_RESUME
)
{
$viewerType->setTypeClass('BX.Messenger.Integration.Viewer.OnlyOfficeResumeItem');
}
$viewerType->setExtension('im.integration.viewer');
}
if ($viewerType->getViewerType() !== BitrixMainUIViewerRendererRenderer::JS_TYPE_UNKNOWN)
{
return $viewerType->toDataSet();
}
}
catch (BitrixMainArgumentException $exception)
{
return null;
}
return null;
}