Path: blob/master/src/applications/drydock/controller/DrydockAuthorizationViewController.php
12262 views
<?php12final class DrydockAuthorizationViewController3extends DrydockController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();7$id = $request->getURIData('id');89$authorization = id(new DrydockAuthorizationQuery())10->setViewer($viewer)11->withIDs(array($id))12->executeOne();13if (!$authorization) {14return new Aphront404Response();15}1617$id = $authorization->getID();18$title = pht('Authorization %d', $id);1920$blueprint = $authorization->getBlueprint();21$blueprint_id = $blueprint->getID();2223$header = id(new PHUIHeaderView())24->setHeader($title)25->setUser($viewer)26->setPolicyObject($authorization);2728$state = $authorization->getBlueprintAuthorizationState();29$icon = DrydockAuthorization::getBlueprintStateIcon($state);30$name = DrydockAuthorization::getBlueprintStateName($state);3132$header->setStatus($icon, null, $name);3334$curtain = $this->buildCurtain($authorization);35$properties = $this->buildPropertyListView($authorization);3637$crumbs = $this->buildApplicationCrumbs();38$crumbs->addTextCrumb(39pht('Blueprints'),40$this->getApplicationURI('blueprint/'));41$crumbs->addTextCrumb(42$blueprint->getBlueprintName(),43$this->getApplicationURI("blueprint/{$blueprint_id}/"));44$crumbs->addTextCrumb($title);45$crumbs->setBorder(true);4647$object_box = id(new PHUIObjectBoxView())48->setHeader($header)49->addPropertyList($properties);5051$view = id(new PHUITwoColumnView())52->setHeader($header)53->setCurtain($curtain)54->addPropertySection(pht('Properties'), $properties);5556return $this->newPage()57->setTitle($title)58->setCrumbs($crumbs)59->appendChild(60array(61$view,62));6364}6566private function buildCurtain(DrydockAuthorization $authorization) {67$viewer = $this->getViewer();68$id = $authorization->getID();6970$curtain = $this->newCurtainView($authorization);7172$can_edit = PhabricatorPolicyFilter::hasCapability(73$viewer,74$authorization,75PhabricatorPolicyCapability::CAN_EDIT);7677$authorize_uri = $this->getApplicationURI("authorization/{$id}/authorize/");78$decline_uri = $this->getApplicationURI("authorization/{$id}/decline/");7980$state_authorized = DrydockAuthorization::BLUEPRINTAUTH_AUTHORIZED;81$state_declined = DrydockAuthorization::BLUEPRINTAUTH_DECLINED;8283$state = $authorization->getBlueprintAuthorizationState();84$can_authorize = $can_edit && ($state != $state_authorized);85$can_decline = $can_edit && ($state != $state_declined);8687$curtain->addAction(88id(new PhabricatorActionView())89->setHref($authorize_uri)90->setName(pht('Approve Authorization'))91->setIcon('fa-check')92->setWorkflow(true)93->setDisabled(!$can_authorize));9495$curtain->addAction(96id(new PhabricatorActionView())97->setHref($decline_uri)98->setName(pht('Decline Authorization'))99->setIcon('fa-times')100->setWorkflow(true)101->setDisabled(!$can_decline));102103return $curtain;104}105106private function buildPropertyListView(DrydockAuthorization $authorization) {107$viewer = $this->getViewer();108109$object_phid = $authorization->getObjectPHID();110$handles = $viewer->loadHandles(array($object_phid));111$handle = $handles[$object_phid];112113$view = new PHUIPropertyListView();114115$view->addProperty(116pht('Authorized Object'),117$handle->renderLink($handle->getFullName()));118119$view->addProperty(pht('Object Type'), $handle->getTypeName());120121$object_state = $authorization->getObjectAuthorizationState();122123$view->addProperty(124pht('Authorization State'),125DrydockAuthorization::getObjectStateName($object_state));126127return $view;128}129130}131132133