Differential D7822 Diff 17708 src/applications/harbormaster/controller/HarbormasterPlanDisableController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/harbormaster/controller/HarbormasterPlanDisableController.php
- This file was added.
<?php | |||||
final class HarbormasterPlanDisableController | |||||
extends HarbormasterPlanController { | |||||
private $id; | |||||
public function willProcessRequest(array $data) { | |||||
$this->id = $data['id']; | |||||
} | |||||
public function processRequest() { | |||||
$request = $this->getRequest(); | |||||
$viewer = $request->getUser(); | |||||
$this->requireApplicationCapability( | |||||
HarbormasterCapabilityManagePlans::CAPABILITY); | |||||
$plan = id(new HarbormasterBuildPlanQuery()) | |||||
->setViewer($viewer) | |||||
->withIDs(array($this->id)) | |||||
->executeOne(); | |||||
if (!$plan) { | |||||
return new Aphront404Response(); | |||||
} | |||||
$plan_uri = $this->getApplicationURI('plan/'.$plan->getID().'/'); | |||||
if ($request->isFormPost()) { | |||||
$type_status = HarbormasterBuildPlanTransaction::TYPE_STATUS; | |||||
$v_status = $plan->isDisabled() | |||||
? HarbormasterBuildPlan::STATUS_ACTIVE | |||||
: HarbormasterBuildPlan::STATUS_DISABLED; | |||||
$xactions = array(); | |||||
$xactions[] = id(new HarbormasterBuildPlanTransaction()) | |||||
->setTransactionType($type_status) | |||||
->setNewValue($v_status); | |||||
$editor = id(new HarbormasterBuildPlanEditor()) | |||||
->setActor($viewer) | |||||
->setContinueOnNoEffect(true) | |||||
->setContinueOnMissingFields(true) | |||||
->setContentSourceFromRequest($request); | |||||
$editor->applyTransactions($plan, $xactions); | |||||
return id(new AphrontRedirectResponse())->setURI($plan_uri); | |||||
} | |||||
if ($plan->isDisabled()) { | |||||
$title = pht('Enable Build Plan'); | |||||
$body = pht('Enable this build plan?'); | |||||
$button = pht('Enable Plan'); | |||||
} else { | |||||
$title = pht('Disable Build Plan'); | |||||
$body = pht( | |||||
'Disable this build plan? It will no longer be executed '. | |||||
'automatically.'); | |||||
$button = pht('Disable Plan'); | |||||
} | |||||
$dialog = id(new AphrontDialogView()) | |||||
->setUser($viewer) | |||||
->setTitle($title) | |||||
->appendChild($body) | |||||
->addSubmitButton($button) | |||||
->addCancelButton($plan_uri); | |||||
return id(new AphrontDialogResponse())->setDialog($dialog); | |||||
} | |||||
} |