Flesh out more web UI actions for new URI interface
Summary: Ref T10748. - Allow users to add new URIs by clicking a button instead of knowing a secret URI. - Validate that URIs are actually valid URIs. - Add enable/disable action and strings. Test Plan: - Created a new URI. - Tried to create a nonsense URI, created a good URI. - Enabled/disabled a URI. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10748 Differential Revision: https://secure.phabricator.com/D15825
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
final class DiffusionRepositoryURIDisableController
|
||||
extends DiffusionController {
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$response = $this->loadDiffusionContextForEdit();
|
||||
if ($response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$viewer = $this->getViewer();
|
||||
$drequest = $this->getDiffusionRequest();
|
||||
$repository = $drequest->getRepository();
|
||||
|
||||
$id = $request->getURIData('id');
|
||||
$uri = id(new PhabricatorRepositoryURIQuery())
|
||||
->setViewer($viewer)
|
||||
->withIDs(array($id))
|
||||
->withRepositories(array($repository))
|
||||
->requireCapabilities(
|
||||
array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
PhabricatorPolicyCapability::CAN_EDIT,
|
||||
))
|
||||
->executeOne();
|
||||
if (!$uri) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$is_disabled = $uri->getIsDisabled();
|
||||
$view_uri = $uri->getViewURI();
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
$xactions = array();
|
||||
|
||||
$xactions[] = id(new PhabricatorRepositoryURITransaction())
|
||||
->setTransactionType(PhabricatorRepositoryURITransaction::TYPE_DISABLE)
|
||||
->setNewValue(!$is_disabled);
|
||||
|
||||
$editor = id(new DiffusionURIEditor())
|
||||
->setActor($viewer)
|
||||
->setContinueOnNoEffect(true)
|
||||
->setContinueOnMissingFields(true)
|
||||
->setContentSourceFromRequest($request)
|
||||
->applyTransactions($uri, $xactions);
|
||||
|
||||
return id(new AphrontRedirectResponse())->setURI($view_uri);
|
||||
}
|
||||
|
||||
if ($is_disabled) {
|
||||
$title = pht('Enable URI');
|
||||
$body = pht(
|
||||
'Enable this URI? Any configured behaviors will begin working '.
|
||||
'again.');
|
||||
$button = pht('Enable URI');
|
||||
} else {
|
||||
$title = pht('Disable URI');
|
||||
$body = pht(
|
||||
'Disable this URI? It will no longer be observed, fetched, mirrored, '.
|
||||
'served or shown to users.');
|
||||
$button = pht('Disable URI');
|
||||
}
|
||||
|
||||
return $this->newDialog()
|
||||
->setTitle($title)
|
||||
->appendParagraph($body)
|
||||
->addCancelButton($view_uri)
|
||||
->addSubmitButton($button);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
final class DiffusionRepositoryURIEditController
|
||||
extends DiffusionRepositoryEditController {
|
||||
extends DiffusionController {
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$response = $this->loadDiffusionContextForEdit();
|
||||
|
||||
@@ -82,16 +82,18 @@ final class DiffusionRepositoryURIViewController
|
||||
|
||||
private function buildCurtain(PhabricatorRepositoryURI $uri) {
|
||||
$viewer = $this->getViewer();
|
||||
$id = $uri->getID();
|
||||
|
||||
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
||||
$viewer,
|
||||
$uri,
|
||||
PhabricatorPolicyCapability::CAN_EDIT);
|
||||
|
||||
$edit_uri = $uri->getEditURI();
|
||||
|
||||
$curtain = $this->newCurtainView($uri);
|
||||
|
||||
$edit_uri = $uri->getEditURI();
|
||||
|
||||
$curtain->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setIcon('fa-pencil')
|
||||
@@ -100,6 +102,24 @@ final class DiffusionRepositoryURIViewController
|
||||
->setWorkflow(!$can_edit)
|
||||
->setDisabled(!$can_edit));
|
||||
|
||||
if ($uri->getIsDisabled()) {
|
||||
$disable_name = pht('Enable URI');
|
||||
$disable_icon = 'fa-check';
|
||||
} else {
|
||||
$disable_name = pht('Disable URI');
|
||||
$disable_icon = 'fa-ban';
|
||||
}
|
||||
|
||||
$disable_uri = $uri->getRepository()->getPathURI("uri/disable/{$id}/");
|
||||
|
||||
$curtain->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setIcon($disable_icon)
|
||||
->setName($disable_name)
|
||||
->setHref($disable_uri)
|
||||
->setWorkflow(true)
|
||||
->setDisabled(!$can_edit));
|
||||
|
||||
return $curtain;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user