Allow repositories to be activate/deactivated in a transaction-aware way
Summary: Adds activate/deactivate action plus transactions. Test Plan: See screenshot. Reviewers: btrahan Reviewed By: btrahan CC: aran Differential Revision: https://secure.phabricator.com/D7057
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
final class DiffusionRepositoryEditActivateController
|
||||
extends DiffusionController {
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$viewer = $request->getUser();
|
||||
$drequest = $this->diffusionRequest;
|
||||
$repository = $drequest->getRepository();
|
||||
|
||||
$repository = id(new PhabricatorRepositoryQuery())
|
||||
->setViewer($viewer)
|
||||
->requireCapabilities(
|
||||
array(
|
||||
PhabricatorPolicyCapability::CAN_VIEW,
|
||||
PhabricatorPolicyCapability::CAN_EDIT,
|
||||
))
|
||||
->withIDs(array($repository->getID()))
|
||||
->executeOne();
|
||||
|
||||
if (!$repository) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
$xaction = id(new PhabricatorRepositoryTransaction())
|
||||
->setTransactionType(PhabricatorRepositoryTransaction::TYPE_ACTIVATE)
|
||||
->setNewValue(!$repository->isTracked());
|
||||
|
||||
$editor = id(new PhabricatorRepositoryEditor())
|
||||
->setContinueOnNoEffect(true)
|
||||
->setContentSourceFromRequest($request)
|
||||
->setActor($viewer)
|
||||
->applyTransactions($repository, array($xaction));
|
||||
|
||||
return id(new AphrontReloadResponse())->setURI($edit_uri);
|
||||
}
|
||||
|
||||
$dialog = id(new AphrontDialogView())
|
||||
->setUser($viewer);
|
||||
|
||||
if ($repository->isTracked()) {
|
||||
$dialog
|
||||
->setTitle(pht('Deactivate Repository?'))
|
||||
->appendChild(
|
||||
pht('Deactivate this repository?'))
|
||||
->addSubmitButton(pht('Deactivate Repository'))
|
||||
->addCancelButton($edit_uri);
|
||||
} else {
|
||||
$dialog
|
||||
->setTitle(pht('Activate Repository?'))
|
||||
->appendChild(
|
||||
pht('Activate this repository?'))
|
||||
->addSubmitButton(pht('Activate Repository'))
|
||||
->addCancelButton($edit_uri);
|
||||
}
|
||||
|
||||
return id(new AphrontDialogResponse())
|
||||
->setDialog($dialog);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -18,8 +18,17 @@ final class DiffusionRepositoryEditController extends DiffusionController {
|
||||
|
||||
$title = pht('Edit %s', $repository->getName());
|
||||
|
||||
$content[] = id(new PHUIHeaderView())
|
||||
$header = id(new PHUIHeaderView())
|
||||
->setHeader($title);
|
||||
if (!$repository->isTracked()) {
|
||||
$header->addTag(
|
||||
id(new PhabricatorTagView())
|
||||
->setType(PhabricatorTagView::TYPE_STATE)
|
||||
->setName(pht('Inactive'))
|
||||
->setBackgroundColor(PhabricatorTagView::COLOR_BLACK));
|
||||
}
|
||||
|
||||
$content[] = $header;
|
||||
|
||||
$content[] = $this->buildBasicActions($repository);
|
||||
$content[] = $this->buildBasicProperties($repository);
|
||||
@@ -82,9 +91,28 @@ final class DiffusionRepositoryEditController extends DiffusionController {
|
||||
->setIcon('edit')
|
||||
->setName(pht('Edit Basic Information'))
|
||||
->setHref($this->getRepositoryControllerURI($repository, 'edit/basic/'))
|
||||
->setDisabled(!$can_edit);
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(!$can_edit);
|
||||
$view->addAction($edit);
|
||||
|
||||
$activate = id(new PhabricatorActionView())
|
||||
->setHref(
|
||||
$this->getRepositoryControllerURI($repository, 'edit/activate/'))
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(true);
|
||||
|
||||
if ($repository->isTracked()) {
|
||||
$activate
|
||||
->setIcon('disable')
|
||||
->setName(pht('Deactivate Repository'));
|
||||
} else {
|
||||
$activate
|
||||
->setIcon('enable')
|
||||
->setName(pht('Activate Repository'));
|
||||
}
|
||||
|
||||
$view->addAction($activate);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user