• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/admin/locationhelper.php
  • Класс: BitrixSaleLocationAdminLocationHelper
  • Вызов: LocationHelper::appendMenuChildren
static function appendMenuChildren(&$attachTo, $attachWhat, $index, $queryParams)
{
	$i = 0;
	$overflow = false;
	$inChain = false;
	$limit = self::MENU_MAX_ITEMS_IN; // set always limited to self::MENU_MAX_ITEMS_IN (originally was intval($queryParams['LIMIT']));

	if(empty($index))
		return;

	if(is_array($index[$attachWhat]))
	{
		foreach($index[$attachWhat] as $id => $item)
		{
			if($limit && (!$overflow && $i >= $limit) || ($overflow && $inChain/* the previous item was significant */))
			{
				$overflow = true;

				$attachTo[] =  array(
					"text" => Loc::getMessage("SALE_MENU_LOCATION_THE_REST_OF"),
					"url" => static::getListUrl(intval($item['PARENT_ID'])),
					"module_id" => "sale",
					"parent_menu" => self::packItemsQueryString(array('ID' => $item['PARENT_ID'], 'LIMIT' => $limit, 'SHOW_CHECKBOX' => $queryParams['SHOW_CHECKBOX'])),
				);
			}

			$inChain = isset($index[$id]); // this is important node - it belongs to the chain being displayed

			if(!$overflow || $inChain)
			{
				$node = array(
					"text" => ($queryParams['SHOW_CHECKBOX'] ? ' ' : '').$item['NAME'],
					"fav_id" => intval($id), // allows javascript to know what item it is
					"url" => CHTTP::urlAddParams(static::getListUrl(intval($id)), ["apply_filter" => "y"]),
					"module_id" => "sale",
					"items_id" => self::packItemsQueryString(array('ID' => $id, 'LIMIT' => $limit, 'SHOW_CHECKBOX' => $queryParams['SHOW_CHECKBOX'])),
					//"skip_chain" => true, // uncomment, if you dont want this menu item figure in breadcrumbs
					"parent_menu" => self::packItemsQueryString(array('ID' => $item['PARENT_ID'], 'LIMIT' => $limit, 'SHOW_CHECKBOX' => $queryParams['SHOW_CHECKBOX'])),
					"more_url" => array( // additional route, which will be treated as an alias when calculating selected menu path
						self::getEditUrl(intval($id)), // when editing existed node
						self::getEditUrl(false, array('parent_id' => intval($id))) // when adding a new node
					)
				);

				if($item['CHILD_CNT'])
				{
					$node['dynamic'] = true;
					$node['items'] = array();

					if($inChain)
						self::appendMenuChildren($node['items'], $id, $index, $queryParams);
				}

				$attachTo[] = $node;

			}
			$i++;
		}
	}
}