• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/UI/LeftMenu/Menu.php
  • Класс: BitrixIntranetUILeftMenuMenu
  • Вызов: Menu::applyPreset
public function applyPreset(PresetPresetInterface $preset)
{
	/**
	 * @var MenuItemBasic $item
	 */
	foreach (array_values($this->items) as $item)
	{
		if ($item instanceof MenuItemGroupSystem
			|| $item instanceof MenuItemItemAdminCustom)
		{
			$this->unsetItem($item);
		}
	}
	$presetItems = $preset->getItems();
	foreach ($presetItems as $item)
	{
		$this->setItem($item);
	}

	if ($item = reset($this->items))
	{
		do
		{
			$parentId = $preset->getParentForItem($item->getId(), $item);

			$parent = $parentId && isset($this->items[$parentId]) ?
				$this->items[$parentId] : $this->items['shown'];

			$item->setParent($parent);

			$item->setSort(
				$preset->getSortForItem(
					$item->getId(),
					$item->getParent()->getId()
				)
			);

		} while ($item = next($this->items));
	}
	unset($item);

	//region Delete empty system group. Important for Extranet&Marketplace
	foreach ($presetItems as $itemGroupSystem)
	{
		if ($itemGroupSystem instanceof MenuItemGroupSystem)
		{
			$isParent = false;
			if ($item = reset($this->items))
			{
				do
				{
					if ($item->getParent() === $itemGroupSystem)
					{
						$isParent = true;
						break;
					}
				} while ($item = next($this->items));
			}
			unset($item);
			if ($isParent === false)
			{
				$this->unsetItem($itemGroupSystem);
			}
		}
	}
	//endregion
}