private function buildMilestoneList(PhabricatorProject $project) { if (!$project->getHasMilestones()) { return null; } $viewer = $this->getViewer(); $id = $project->getID(); $milestones = id(new PhabricatorProjectQuery())->setViewer($viewer)->withParentProjectPHIDs(array($project->getPHID()))->needImages(true)->withIsMilestone(true)->withStatuses(array(PhabricatorProjectStatus::STATUS_ACTIVE))->setOrderVector(array('milestoneNumber', 'id'))->execute(); if (!$milestones) { return null; } $milestone_list = id(new PhabricatorProjectListView())->setUser($viewer)->setProjects($milestones)->renderList(); $view_all = id(new PHUIButtonView())->setTag('a')->setIcon(id(new PHUIIconView())->setIcon('fa-list-ul'))->setText(pht('View All'))->setHref("/project/subprojects/{$id}/"); $header = id(new PHUIHeaderView())->setHeader(pht('Milestones'))->addActionLink($view_all); return id(new PHUIObjectBoxView())->setHeader($header)->setBackground(PHUIBoxView::GREY)->setObjectList($milestone_list); }