• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/grid/row/actions/elementrowactionsprovider.php
  • Класс: BitrixIblockGridRowActionsElementRowActionsProvider
  • Вызов: ElementRowActionsProvider::getElementItems
private function getElementItems(array $rawFields): array
{
	if (empty($rawFields['ID']))
	{
		return [];
	}
	$elementId = (int)$rawFields['ID'];

	$result = [];

	if ($this->rights->canEditElement($elementId))
	{
		$detailUrl = $this->getElementDetailViewUrl($elementId);
		if (isset($detailUrl))
		{
			/**
			 * @var DetailViewItem $item
			 */
			$item = $this->getActionById(DetailViewItem::getId());
			if (isset($item))
			{
				$item->setUrl($detailUrl);
				$result[] = $item;
			}
		}

		if (isset($rawFields['ACTIVE']) && $rawFields['ACTIVE'] === 'Y')
		{
			self::appendIfNotNull(
				$result,
				$this->getActionById(DeactivateElementItem::getId())
			);
		}
		else
		{
			self::appendIfNotNull(
				$result,
				$this->getActionById(ActivateElementItem::getId())
			);
		}

		self::appendIfNotNull(
			$result,
			$this->getActionById(CreateCodeItem::getId())
		);

		if (!empty($result))
		{
			$result[] = new SeparatorAction();
		}

		$item = $this->getActionById(ClearCounterItem::getId());
		if (isset($item))
		{
			$result[] = $item;
			$result[] = new SeparatorAction();
		}

		if ($this->rights->canAddElement($elementId))
		{
			$copyUrl = $this->getElementCopyUrl($elementId);
			if (isset($copyUrl))
			{
				/**
				 * @var CopyElementItem $item
				 */
				$item = $this->getActionById(CopyElementItem::getId());
				if (isset($item))
				{
					$item->setUrl($copyUrl);
					$result[] = $item;
				}
			}
		}
	}

	if ($this->rights->canDeleteElement($elementId))
	{
		$item = $this->getActionById(DeleteElementItem::getId());
		if (isset($item))
		{
			if (!empty($result))
			{
				$lastItem = $result[array_key_last($result)];
				if (($lastItem instanceof SeparatorAction) === false)
				{
					$result[] = new SeparatorAction();
				}
			}

			$result[] = $item;
		}
	}

	return $result;
}