Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/ui/lib/buttons/ |
Upload File : |
<?php namespace Bitrix\UI\Buttons; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Text; use Bitrix\Main\Web\Json; class DocumentButton extends Button { private array $documentButtonConfig = []; /** * @return array */ protected function getDefaultParameters(): array { return [ 'tag' => Tag::BUTTON, 'color' => Color::LIGHT_BORDER, 'dropdown' => true, 'domId' => $this->getUniqId(), 'text' => Loc::getMessage('UI_BUTTON_DOCUMENT_TEXT'), 'dataset' => [ 'toolbar-collapsed-icon' => Icon::LIST, ], ]; } protected function buildFromArray($params): void { if (isset($params['documentButtonConfig']) && is_array($params['documentButtonConfig'])) { $this->setDocumentButtonConfig($params['documentButtonConfig']); unset($params['documentButtonConfig']); } parent::buildFromArray($params); if (!empty($params['domId']) && is_string($params['domId'])) { $this->setDomId($params['domId']); } } public function setDocumentButtonConfig(array $config): void { $this->documentButtonConfig = $config; } private function getDocumentButtonConfig(): array { return $this->documentButtonConfig; } protected function listExtensions(): array { return [ 'documentpreview', ]; } protected function renderJavascript(): string { $id = $this->getDomId(); $config = $this->getDocumentButtonConfig(); if ($id === '' || empty($config)) { return ''; } $id = Text\HtmlFilter::encode($id); $params = Json::encode($config); return <<<JS if (BX.DocumentGenerator && BX.DocumentGenerator.Button) { const button = new BX.DocumentGenerator.Button('$id', $params); button.init(); } else { console.warn('BX.DocumentGenerator.Button is not found'); } JS ; } public function render($jsInit = true): string { if (!Loader::includeModule('documentgenerator')) { return ''; } return parent::render(true); } private function setDomId(string $id): void { $this->getAttributeCollection()['id'] = $id; } private function getDomId(): string { return (string)($this->getAttributeCollection()['id'] ?? ''); } }