private function buildActionList(HarbormasterBuildPlan $plan)
 {
     $request = $this->getRequest();
     $viewer = $request->getUser();
     $id = $plan->getID();
     $list = id(new PhabricatorActionListView())->setUser($viewer)->setObject($plan)->setObjectURI($this->getApplicationURI("plan/{$id}/"));
     $can_edit = $this->hasApplicationCapability(HarbormasterManagePlansCapability::CAPABILITY);
     $list->addAction(id(new PhabricatorActionView())->setName(pht('Edit Plan'))->setHref($this->getApplicationURI("plan/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)->setIcon('fa-pencil'));
     if ($plan->isDisabled()) {
         $list->addAction(id(new PhabricatorActionView())->setName(pht('Enable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-check'));
     } else {
         $list->addAction(id(new PhabricatorActionView())->setName(pht('Disable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-ban'));
     }
     $list->addAction(id(new PhabricatorActionView())->setName(pht('Add Build Step'))->setHref($this->getApplicationURI("step/add/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-plus'));
     $list->addAction(id(new PhabricatorActionView())->setName(pht('Run Plan Manually'))->setHref($this->getApplicationURI("plan/run/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-play-circle'));
     return $list;
 }
 private function buildActionList(HarbormasterBuildPlan $plan)
 {
     $viewer = $this->getViewer();
     $id = $plan->getID();
     $list = id(new PhabricatorActionListView())->setUser($viewer)->setObject($plan)->setObjectURI($this->getApplicationURI("plan/{$id}/"));
     $has_manage = $this->hasApplicationCapability(HarbormasterManagePlansCapability::CAPABILITY);
     $has_edit = PhabricatorPolicyFilter::hasCapability($viewer, $plan, PhabricatorPolicyCapability::CAN_EDIT);
     $can_edit = $has_manage && $has_edit;
     $list->addAction(id(new PhabricatorActionView())->setName(pht('Edit Plan'))->setHref($this->getApplicationURI("plan/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)->setIcon('fa-pencil'));
     if ($plan->isDisabled()) {
         $list->addAction(id(new PhabricatorActionView())->setName(pht('Enable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-check'));
     } else {
         $list->addAction(id(new PhabricatorActionView())->setName(pht('Disable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-ban'));
     }
     $can_run = $has_manage && $plan->canRunManually();
     $list->addAction(id(new PhabricatorActionView())->setName(pht('Run Plan Manually'))->setHref($this->getApplicationURI("plan/run/{$id}/"))->setWorkflow(true)->setDisabled(!$can_run)->setIcon('fa-play-circle'));
     return $list;
 }
 private function buildCurtainView(HarbormasterBuildPlan $plan)
 {
     $viewer = $this->getViewer();
     $id = $plan->getID();
     $curtain = $this->newCurtainView($plan);
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $plan, PhabricatorPolicyCapability::CAN_EDIT);
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Edit Plan'))->setHref($this->getApplicationURI("plan/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit)->setIcon('fa-pencil'));
     if ($plan->isDisabled()) {
         $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Enable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-check'));
     } else {
         $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Disable Plan'))->setHref($this->getApplicationURI("plan/disable/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit)->setIcon('fa-ban'));
     }
     $can_run = $can_edit && $plan->canRunManually();
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Run Plan Manually'))->setHref($this->getApplicationURI("plan/run/{$id}/"))->setWorkflow(true)->setDisabled(!$can_run)->setIcon('fa-play-circle'));
     $curtain->addPanel(id(new PHUICurtainPanelView())->setHeaderText(pht('Created'))->appendChild(phabricator_datetime($plan->getDateCreated(), $viewer)));
     return $curtain;
 }