- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/integration/ui/entityselector/departmentprovider.php
- Класс: BitrixIntranetIntegrationUIEntitySelectorDepartmentProvider
- Вызов: DepartmentProvider::fillDepartments
private function fillDepartments(Dialog $dialog, EO_Section_Collection $departments, ?bool $forceDynamic = null)
{
$allowDepartment = $this->getAllowOnlyUserDepartment();
$parents = [];
$parentIdList = [];
foreach ($departments as $department)
{
$isRootDepartment =
$department->getDepthLevel() === 1 || $department->getId() === self::getRootDepartmentId()
;
$hideRootDepartment = $isRootDepartment && !$this->options['allowSelectRootDepartment'];
$parentIdList[$department->getId()] = $department->getIblockSectionId();
$availableInRecentTab = true;
if ($this->getSelectMode() === self::MODE_USERS_ONLY || $hideRootDepartment)
{
$availableInRecentTab = false;
}
if (
is_array($allowDepartment)
&& !$this->isAllowDepartment(
$department->getId(),
$department->getIblockSectionId(),
$allowDepartment,
$parentIdList
)
)
{
continue;
}
$item = new Item([
'id' => $department->getId(),
'entityId' => 'department',
'title' => $department->getName(),
'tabs' => 'departments',
'searchable' => $availableInRecentTab,
'availableInRecentTab' => $availableInRecentTab,
'nodeOptions' => [
'dynamic' => is_bool($forceDynamic) ? $forceDynamic : true,
'open' => $isRootDepartment,
],
]);
if ($this->getSelectMode() === self::MODE_DEPARTMENTS_ONLY && !$hideRootDepartment)
{
$item->addChild(new Item([
'id' => $department->getId(),
'title' => $department->getName(),
'entityId' => 'department',
'nodeOptions' => [
'title' => Loc::getMessage('INTRANET_ENTITY_SELECTOR_SELECT_DEPARTMENT'),
//'avatar' => '/bitrix/js/intranet/entity-selector/src/images/department-option.svg',
'renderMode' => 'override',
],
]));
}
elseif ($this->getSelectMode() === self::MODE_USERS_AND_DEPARTMENTS)
{
if (!$hideRootDepartment)
{
$item->addChild(new Item([
'id' => $department->getId(),
'title' => $department->getName(),
'entityId' => 'department',
'nodeOptions' => [
'title' => Loc::getMessage('INTRANET_ENTITY_SELECTOR_ALL_EMPLOYEES_SUBDIVISIONS'),
'avatar' => '/bitrix/js/intranet/entity-selector/src/images/department-option.svg',
'renderMode' => 'override',
],
]));
}
if ($this->options['allowFlatDepartments'])
{
$item->addChild(new Item([
'id' => $department->getId() . ':F',
'entityId' => 'department',
'title' =>
$department->getName() . ' '
. Loc::getMessage('INTRANET_ENTITY_SELECTOR_ONLY_EMPLOYEES')
,
'nodeOptions' => [
'title' => Loc::getMessage('INTRANET_ENTITY_SELECTOR_ONLY_DEPARTMENT_EMPLOYEES'),
'avatar' => '/bitrix/js/intranet/entity-selector/src/images/department-option.svg',
'renderMode' => 'override',
],
]));
}
}
$parentItem = $parents[$department->getIblockSectionId()] ?? null;
if ($parentItem)
{
$parentItem->addChild($item);
}
else
{
$dialog->addItem($item);
}
$parents[$department->getId()] = $item;
}
}