Path: blob/master/src/applications/harbormaster/controller/HarbormasterStepViewController.php
12256 views
<?php12final class HarbormasterStepViewController3extends HarbormasterPlanController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $this->getViewer();11$id = $request->getURIData('id');1213$step = id(new HarbormasterBuildStepQuery())14->setViewer($viewer)15->withIDs(array($id))16->executeOne();17if (!$step) {18return new Aphront404Response();19}20$plan = $step->getBuildPlan();2122$plan_id = $plan->getID();23$plan_uri = $this->getApplicationURI("plan/{$plan_id}/");2425$field_list = PhabricatorCustomField::getObjectFields(26$step,27PhabricatorCustomField::ROLE_VIEW);28$field_list29->setViewer($viewer)30->readFieldsFromStorage($step);3132$crumbs = $this->buildApplicationCrumbs();33$crumbs->addTextCrumb(pht('Plan %d', $plan_id), $plan_uri);34$crumbs->addTextCrumb(pht('Step %d', $id));35$crumbs->setBorder(true);3637$header = id(new PHUIHeaderView())38->setHeader(pht('Build Step %d: %s', $id, $step->getName()))39->setHeaderIcon('fa-chevron-circle-right');4041$properties = $this->buildPropertyList($step, $field_list);42$curtain = $this->buildCurtainView($step);4344$timeline = $this->buildTransactionTimeline(45$step,46new HarbormasterBuildStepTransactionQuery());47$timeline->setShouldTerminate(true);4849$view = id(new PHUITwoColumnView())50->setHeader($header)51->setCurtain($curtain)52->setMainColumn(array(53$properties,54$timeline,55));5657return $this->newPage()58->setTitle(pht('Step %d', $id))59->setCrumbs($crumbs)60->appendChild($view);6162}6364private function buildPropertyList(65HarbormasterBuildStep $step,66PhabricatorCustomFieldList $field_list) {67$viewer = $this->getViewer();6869$view = id(new PHUIPropertyListView())70->setUser($viewer);7172try {73$implementation = $step->getStepImplementation();74} catch (Exception $ex) {75$implementation = null;76}7778if ($implementation) {79$type = $implementation->getName();80} else {81$type = phutil_tag(82'em',83array(),84pht(85'Invalid Implementation ("%s")!',86$step->getClassName()));87}8889$view->addProperty(pht('Step Type'), $type);9091$view->addProperty(92pht('Created'),93phabricator_datetime($step->getDateCreated(), $viewer));9495$field_list->appendFieldsToPropertyList(96$step,97$viewer,98$view);99100$description = $step->getDescription();101if (strlen($description)) {102$view->addSectionHeader(103pht('Description'),104PHUIPropertyListView::ICON_SUMMARY);105$view->addTextContent(106new PHUIRemarkupView($viewer, $description));107}108109return id(new PHUIObjectBoxView())110->setHeaderText(pht('Properties'))111->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)112->appendChild($view);113}114115116private function buildCurtainView(HarbormasterBuildStep $step) {117$viewer = $this->getViewer();118$id = $step->getID();119120$curtain = $this->newCurtainView($step);121122$can_edit = PhabricatorPolicyFilter::hasCapability(123$viewer,124$step,125PhabricatorPolicyCapability::CAN_EDIT);126127$curtain->addAction(128id(new PhabricatorActionView())129->setName(pht('Edit Step'))130->setHref($this->getApplicationURI("step/edit/{$id}/"))131->setWorkflow(!$can_edit)132->setDisabled(!$can_edit)133->setIcon('fa-pencil'));134135$curtain->addAction(136id(new PhabricatorActionView())137->setName(pht('Delete Step'))138->setHref($this->getApplicationURI("step/delete/{$id}/"))139->setWorkflow(true)140->setDisabled(!$can_edit)141->setIcon('fa-times'));142143return $curtain;144}145146147}148149150