public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); $authorization = id(new DrydockAuthorizationQuery())->setViewer($viewer)->withIDs(array($id))->executeOne(); if (!$authorization) { return new Aphront404Response(); } $id = $authorization->getID(); $title = pht('Authorization %d', $id); $blueprint = $authorization->getBlueprint(); $blueprint_id = $blueprint->getID(); $header = id(new PHUIHeaderView())->setHeader($title)->setUser($viewer)->setPolicyObject($authorization); $state = $authorization->getBlueprintAuthorizationState(); $icon = DrydockAuthorization::getBlueprintStateIcon($state); $name = DrydockAuthorization::getBlueprintStateName($state); $header->setStatus($icon, null, $name); $actions = $this->buildActionListView($authorization); $properties = $this->buildPropertyListView($authorization); $properties->setActionList($actions); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Blueprints'), $this->getApplicationURI('blueprint/')); $crumbs->addTextCrumb($blueprint->getBlueprintName(), $this->getApplicationURI("blueprint/{$blueprint_id}/")); $crumbs->addTextCrumb($title); $object_box = id(new PHUIObjectBoxView())->setHeader($header)->addPropertyList($properties); return $this->buildApplicationPage(array($crumbs, $object_box), array('title' => $title)); }
public function render() { $viewer = $this->getUser(); $blueprint_phids = $this->getBlueprintPHIDs(); $object_phid = $this->getObjectPHID(); // NOTE: We're intentionally letting you see the authorization state on // blueprints you can't see because this has a tremendous potential to // be extremely confusing otherwise. You still can't see the blueprints // themselves, but you can know if the object is authorized on something. if ($blueprint_phids) { $handles = $viewer->loadHandles($blueprint_phids); $authorizations = id(new DrydockAuthorizationQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withObjectPHIDs(array($object_phid))->withBlueprintPHIDs($blueprint_phids)->execute(); $authorizations = mpull($authorizations, null, 'getBlueprintPHID'); } else { $handles = array(); $authorizations = array(); } $items = array(); foreach ($blueprint_phids as $phid) { $authorization = idx($authorizations, $phid); if (!$authorization) { continue; } $handle = $handles[$phid]; $item = id(new PHUIStatusItemView())->setTarget($handle->renderLink()); $state = $authorization->getBlueprintAuthorizationState(); $item->setIcon(DrydockAuthorization::getBlueprintStateIcon($state), null, DrydockAuthorization::getBlueprintStateName($state)); $items[] = $item; } $status = new PHUIStatusListView(); foreach ($items as $item) { $status->addItem($item); } return $status; }
public function render() { $viewer = $this->getUser(); $authorizations = $this->authorizations; $view = new PHUIObjectItemListView(); $nodata = $this->getNoDataString(); if ($nodata) { $view->setNoDataString($nodata); } $handles = $viewer->loadHandles(mpull($authorizations, 'getObjectPHID')); foreach ($authorizations as $authorization) { $id = $authorization->getID(); $object_phid = $authorization->getObjectPHID(); $handle = $handles[$object_phid]; $item = id(new PHUIObjectItemView())->setHref("/drydock/authorization/{$id}/")->setObjectName(pht('Authorization %d', $id))->setHeader($handle->getFullName()); $item->addAttribute($handle->getTypeName()); $object_state = $authorization->getObjectAuthorizationState(); $item->addAttribute(DrydockAuthorization::getObjectStateName($object_state)); $state = $authorization->getBlueprintAuthorizationState(); $icon = DrydockAuthorization::getBlueprintStateIcon($state); $name = DrydockAuthorization::getBlueprintStateName($state); $item->setStatusIcon($icon, $name); $view->addItem($item); } return $view; }
public function render() { $viewer = $this->getUser(); $blueprint_phids = $this->getBlueprintPHIDs(); $object_phid = $this->getObjectPHID(); // NOTE: We're intentionally letting you see the authorization state on // blueprints you can't see because this has a tremendous potential to // be extremely confusing otherwise. You still can't see the blueprints // themselves, but you can know if the object is authorized on something. if ($blueprint_phids) { $handles = $viewer->loadHandles($blueprint_phids); $authorizations = id(new DrydockAuthorizationQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withObjectPHIDs(array($object_phid))->withBlueprintPHIDs($blueprint_phids)->execute(); $authorizations = mpull($authorizations, null, 'getBlueprintPHID'); } else { $handles = array(); $authorizations = array(); } $warnings = array(); $items = array(); foreach ($blueprint_phids as $phid) { $authorization = idx($authorizations, $phid); if (!$authorization) { continue; } $handle = $handles[$phid]; $item = id(new PHUIStatusItemView())->setTarget($handle->renderLink()); $state = $authorization->getBlueprintAuthorizationState(); $item->setIcon(DrydockAuthorization::getBlueprintStateIcon($state), null, DrydockAuthorization::getBlueprintStateName($state)); switch ($state) { case DrydockAuthorization::BLUEPRINTAUTH_REQUESTED: case DrydockAuthorization::BLUEPRINTAUTH_DECLINED: $warnings[] = $authorization; break; } $items[] = $item; } $status = new PHUIStatusListView(); if ($warnings) { $status->addItem(id(new PHUIStatusItemView())->setIcon('fa-exclamation-triangle', 'pink')->setTarget(pht('WARNING: There are %s unapproved authorization(s)!', new PhutilNumber(count($warnings))))); } foreach ($items as $item) { $status->addItem($item); } return $status; }