- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/epic.php
- Класс: BitrixTasksScrumControllersEpic
- Вызов: Epic::getTasksListAction
public function getTasksListAction()
{
$post = $this->request->getPostList()->toArray();
$groupId = (is_numeric($post['groupId']) ? (int) $post['groupId'] : 0);
$epicId = (is_numeric($post['epicId']) ? (int) $post['epicId'] : 0);
$userId = UtilUser::getId();
$gridId = (is_string($post['gridId'] ) ? $post['gridId'] : '');
$completed = ($post['completed'] === 'Y');
$isGridRequest = ($this->request->get('grid_id') != null);
$nav = new PageNavigation('tasks-lists-navigation');
$nav->setPageSize(10)->initFromUri();
$gridOptions = new GridOptions($gridId);
$gridVisibleColumns = $gridOptions->getVisibleColumns();
if (empty($gridVisibleColumns))
{
$gridVisibleColumns = ['NAME', 'STORY_POINTS', 'RESPONSIBLE'];
}
$epicService = new EpicService($userId);
$taskService = new TaskService($userId);
$itemService = new ItemService();
$userService = new UserService();
$epic = $epicService->getEpic($epicId);
if (!$epic->getId())
{
$this->errorCollection->add(
[
new Error(Loc::getMessage('TASKS_EC_ERROR_COULD_NOT_READ_EPIC'))
]
);
return null;
}
$filter = [
'GROUP_ID' => $groupId,
'::SUBFILTER-EPIC' => ['EPIC' => $epic->getId()],
'CHECK_PERMISSIONS' => 'Y',
'ONLY_ROOT_TASKS' => 'N',
'SCRUM_TASKS' => 'Y',
];
if ($completed)
{
$filter['=STATUS'] = Status::COMPLETED;
}
$taskIds = $taskService->getTaskIdsByFilter($filter, $nav);
(new BitrixTasksAccessAccessCacheLoader())->preload($userId, $taskIds);
$itemsStoryPoints = $itemService->getItemsStoryPointsBySourceId($taskIds);
$randomGenerator = new RandomSequence(rand());
$rows = [];
foreach ($taskIds as $taskId)
{
$task = TaskRegistry::getInstance()->get($taskId);
if (!$task)
{
continue;
}
$columns = [];
if (in_array('NAME', $gridVisibleColumns))
{
$columns['NAME'] = $this->getTaskNameColumn($taskId, $task['TITLE']);
}
if (in_array('STORY_POINTS', $gridVisibleColumns))
{
$columns['STORY_POINTS'] = $itemsStoryPoints[$taskId] ?? '';
}
if (in_array('RESPONSIBLE', $gridVisibleColumns))
{
$usersInfo = $userService->getInfoAboutUsers([$task['RESPONSIBLE_ID']]);
$columns['RESPONSIBLE'] = $this->getUserColumn($usersInfo);
}
$rows[] = [
'id' => $taskId . $randomGenerator->randString(2),
'columns' => $columns,
];
}
if (empty($rows))
{
return '';
}
$component = new Component('bitrix:main.ui.grid', '', [
'GRID_ID' => $gridId,
'COLUMNS' => $this->getUiTasksGridColumns(),
'ROWS' => $rows,
'NAV_OBJECT' => $nav,
'NAV_PARAMS' => ['SHOW_ALWAYS' => false],
'SHOW_PAGINATION' => true,
'SHOW_TOTAL_COUNTER' => false,
'SHOW_CHECK_ALL_CHECKBOXES' => false,
'SHOW_ROW_CHECKBOXES' => false,
'SHOW_SELECTED_COUNTER' => false,
'ALLOW_COLUMNS_SORT' => true,
'ALLOW_COLUMNS_RESIZE' => false,
'ALLOW_INLINE_EDIT' => false,
'AJAX_MODE' => 'N',
'AJAX_OPTION_JUMP' => 'N',
'AJAX_OPTION_STYLE' => 'N',
'AJAX_OPTION_HISTORY' => 'N'
]);
if ($isGridRequest)
{
$response = new HttpResponse();
$content = Json::decode($component->getContent());
$response->setContent($content['data']['html']);
return $response;
}
return $component;
}