• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/sender/gridpanel.php
  • Класс: Bitrix\Crm\Integration\Sender\GridPanel
  • Вызов: GridPanel::getActionAddLetter
static function getActionAddLetter(array $applyButton, $gridManagerID)
{
	self::includeJsLibs();
	if (!Sender\Integration\Bitrix24\Service::isMailingsAvailable())
	{
		Sender\Integration\Bitrix24\Service::initLicensePopup();
	}

	$id = 'sender_letter_add';

	$letterTypes = array_map(
		function ($message)
		{
			/** @var Sender\Message\iBase $message */
			return ['NAME' => $message->getName(), 'VALUE' => $message->getCode()];
		},
		array_filter(
			Sender\Message\Factory::getMailingMessages(),
			function ($message)
			{
				/** @var Sender\Message\iBase $message */
				return $message->getCode() !== Sender\Message\iBase::CODE_IM;
			}
		)
	);
	sort($letterTypes);

	return [
		'NAME' => Loc::getMessage('CRM_INTEGRATION_SENDER_GRID_PANEL_ACTION_LETTER_ADD'),
		'VALUE' => $id,
		'ONCHANGE' => [
			[
				'ACTION' => Grid\Panel\Actions::CREATE,
				'DATA' => [
					[
						'TYPE' => Grid\Panel\Types::DROPDOWN,
						'ID' => 'sender_letter_code',
						'NAME' => 'SENDER_LETTER_CODE',
						'ITEMS' => $letterTypes
					],
					[
						'TYPE' => Grid\Panel\Types::HIDDEN,
						'ID' => 'sender_letter_available_codes',
						'NAME' => 'SENDER_LETTER_AVAILABLE_CODES',
						'VALUE' => implode(',', Sender\Integration\Bitrix24\Service::getAvailableMailingCodes()),
					],
					[
						'TYPE' => Grid\Panel\Types::HIDDEN,
						'ID' => 'sender_path_to_letter_add',
						'NAME' => 'SENDER_PATH_TO_LETTER_ADD',
						'VALUE' => self::getPathToAddLetter(),
					],
					$applyButton
				]
			],
			[
				'ACTION' => Grid\Panel\Actions::CALLBACK,
				'DATA' => [['JS' => "BX.CrmUIGridExtension.processActionChange('{$gridManagerID}', '{$id}')"]]
			]
		]
	];
}