Path: blob/master/src/applications/harbormaster/controller/HarbormasterPlanBehaviorController.php
12256 views
<?php12final class HarbormasterPlanBehaviorController3extends HarbormasterPlanController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();78$plan = id(new HarbormasterBuildPlanQuery())9->setViewer($viewer)10->withIDs(array($request->getURIData('id')))11->requireCapabilities(12array(13PhabricatorPolicyCapability::CAN_VIEW,14PhabricatorPolicyCapability::CAN_EDIT,15))16->executeOne();17if (!$plan) {18return new Aphront404Response();19}2021$behavior_key = $request->getURIData('behaviorKey');22$metadata_key = HarbormasterBuildPlanBehavior::getTransactionMetadataKey();2324$behaviors = HarbormasterBuildPlanBehavior::newPlanBehaviors();25$behavior = idx($behaviors, $behavior_key);26if (!$behavior) {27return new Aphront404Response();28}2930$plan_uri = $plan->getURI();3132$v_option = $behavior->getPlanOption($plan)->getKey();33if ($request->isFormPost()) {34$v_option = $request->getStr('option');3536$xactions = array();3738$xactions[] = id(new HarbormasterBuildPlanTransaction())39->setTransactionType(40HarbormasterBuildPlanBehaviorTransaction::TRANSACTIONTYPE)41->setMetadataValue($metadata_key, $behavior_key)42->setNewValue($v_option);4344$editor = id(new HarbormasterBuildPlanEditor())45->setActor($viewer)46->setContinueOnNoEffect(true)47->setContinueOnMissingFields(true)48->setContentSourceFromRequest($request);4950$editor->applyTransactions($plan, $xactions);5152return id(new AphrontRedirectResponse())->setURI($plan_uri);53}5455$select_control = id(new AphrontFormRadioButtonControl())56->setName('option')57->setValue($v_option)58->setLabel(pht('Option'));5960foreach ($behavior->getOptions() as $option) {61$icon = id(new PHUIIconView())62->setIcon($option->getIcon());6364$select_control->addButton(65$option->getKey(),66array(67$icon,68' ',69$option->getName(),70),71$option->getDescription());72}7374$form = id(new AphrontFormView())75->setViewer($viewer)76->appendInstructions(77pht(78'Choose a build plan behavior for "%s".',79phutil_tag('strong', array(), $behavior->getName())))80->appendRemarkupInstructions($behavior->getEditInstructions())81->appendControl($select_control);8283return $this->newDialog()84->setTitle(pht('Edit Behavior: %s', $behavior->getName()))85->appendForm($form)86->setWidth(AphrontDialogView::WIDTH_FORM)87->addSubmitButton(pht('Save Changes'))88->addCancelButton($plan_uri);89}9091}929394