Differential D14904 Diff 36033 src/applications/project/controller/PhabricatorProjectMilestonesController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectMilestonesController.php
Show All 12 Lines | public function handleRequest(AphrontRequest $request) { | ||||
$response = $this->loadProject(); | $response = $this->loadProject(); | ||||
if ($response) { | if ($response) { | ||||
return $response; | return $response; | ||||
} | } | ||||
$project = $this->getProject(); | $project = $this->getProject(); | ||||
$id = $project->getID(); | $id = $project->getID(); | ||||
$can_edit = PhabricatorPolicyFilter::hasCapability( | |||||
$viewer, | |||||
$project, | |||||
PhabricatorPolicyCapability::CAN_EDIT); | |||||
$has_support = $project->supportsMilestones(); | |||||
if ($has_support) { | |||||
$milestones = id(new PhabricatorProjectQuery()) | |||||
->setViewer($viewer) | |||||
->withParentProjectPHIDs(array($project->getPHID())) | |||||
->needImages(true) | |||||
->withIsMilestone(true) | |||||
->setOrder('newest') | |||||
->execute(); | |||||
} else { | |||||
$milestones = array(); | |||||
} | |||||
$can_create = $can_edit && $has_support; | |||||
if ($project->getHasMilestones()) { | |||||
$button_text = pht('Create Next Milestone'); | |||||
} else { | |||||
$button_text = pht('Add Milestones'); | |||||
} | |||||
$header = id(new PHUIHeaderView()) | |||||
->setHeader(pht('Milestones')) | |||||
->addActionLink( | |||||
id(new PHUIButtonView()) | |||||
->setTag('a') | |||||
->setHref("/project/edit/?milestone={$id}") | |||||
->setIconFont('fa-plus') | |||||
->setDisabled(!$can_create) | |||||
->setWorkflow(!$can_create) | |||||
->setText($button_text)); | |||||
$box = id(new PHUIObjectBoxView()) | |||||
->setHeader($header); | |||||
if (!$has_support) { | |||||
$no_support = pht( | |||||
'This project is a milestone. Milestones can not have their own '. | |||||
'milestones.'); | |||||
$info_view = id(new PHUIInfoView()) | |||||
->setErrors(array($no_support)) | |||||
->setSeverity(PHUIInfoView::SEVERITY_WARNING); | |||||
$box->setInfoView($info_view); | |||||
} | |||||
$box->setObjectList( | |||||
id(new PhabricatorProjectListView()) | |||||
->setUser($viewer) | |||||
->setProjects($milestones) | |||||
->renderList()); | |||||
$nav = $this->buildIconNavView($project); | $nav = $this->buildIconNavView($project); | ||||
$nav->selectFilter("milestones/{$id}/"); | $nav->selectFilter("milestones/{$id}/"); | ||||
$crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
$crumbs->addTextCrumb(pht('Milestones')); | $crumbs->addTextCrumb(pht('Milestones')); | ||||
return $this->newPage() | return $this->newPage() | ||||
->setNavigation($nav) | ->setNavigation($nav) | ||||
->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
->setTitle(array($project->getName(), pht('Milestones'))); | ->setTitle(array($project->getName(), pht('Milestones'))) | ||||
->appendChild($box); | |||||
} | } | ||||
} | } |