private function buildCurtain(PhabricatorRepositoryURI $uri) { $viewer = $this->getViewer(); $repository = $uri->getRepository(); $id = $uri->getID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $uri, PhabricatorPolicyCapability::CAN_EDIT); $curtain = $this->newCurtainView($uri); $edit_uri = $uri->getEditURI(); $curtain->addAction(id(new PhabricatorActionView())->setIcon('fa-pencil')->setName(pht('Edit URI'))->setHref($edit_uri)->setWorkflow(!$can_edit)->setDisabled(!$can_edit)); $credential_uri = $repository->getPathURI("uri/credential/{$id}/edit/"); $remove_uri = $repository->getPathURI("uri/credential/{$id}/remove/"); $has_credential = (bool) $uri->getCredentialPHID(); if ($uri->isBuiltin()) { $can_credential = false; } else { if (!$uri->newCommandEngine()->isCredentialSupported()) { $can_credential = false; } else { $can_credential = true; } } $can_update = $can_edit && $can_credential; $can_remove = $can_edit && $has_credential; if ($has_credential) { $credential_name = pht('Update Credential'); } else { $credential_name = pht('Set Credential'); } $curtain->addAction(id(new PhabricatorActionView())->setIcon('fa-key')->setName($credential_name)->setHref($credential_uri)->setWorkflow(true)->setDisabled(!$can_edit)); $curtain->addAction(id(new PhabricatorActionView())->setIcon('fa-times')->setName(pht('Remove Credential'))->setHref($remove_uri)->setWorkflow(true)->setDisabled(!$can_remove)); if ($uri->getIsDisabled()) { $disable_name = pht('Enable URI'); $disable_icon = 'fa-check'; } else { $disable_name = pht('Disable URI'); $disable_icon = 'fa-ban'; } $can_disable = $can_edit && !$uri->isBuiltin(); $disable_uri = $repository->getPathURI("uri/disable/{$id}/"); $curtain->addAction(id(new PhabricatorActionView())->setIcon($disable_icon)->setName($disable_name)->setHref($disable_uri)->setWorkflow(true)->setDisabled(!$can_disable)); return $curtain; }