Path: blob/master/src/applications/drydock/controller/DrydockBlueprintEditController.php
12256 views
<?php12final class DrydockBlueprintEditController extends DrydockBlueprintController {34public function handleRequest(AphrontRequest $request) {5$engine = id(new DrydockBlueprintEditEngine())6->setController($this);78$id = $request->getURIData('id');9if (!$id) {10$this->requireApplicationCapability(11DrydockCreateBlueprintsCapability::CAPABILITY);1213$type = $request->getStr('blueprintType');1415$impl = DrydockBlueprintImplementation::getNamedImplementation($type);16if (!$impl || !$impl->isEnabled()) {17return $this->buildTypeSelectionResponse();18}1920$engine21->addContextParameter('blueprintType', $type)22->setBlueprintImplementation($impl);23}2425return $engine->buildResponse();26}2728private function buildTypeSelectionResponse() {29$request = $this->getRequest();30$viewer = $this->getViewer();3132$implementations =33DrydockBlueprintImplementation::getAllBlueprintImplementations();3435$errors = array();36$e_blueprint = null;3738if ($request->isFormPost()) {39$class = $request->getStr('blueprintType');40if (!isset($implementations[$class])) {41$e_blueprint = pht('Required');42$errors[] = pht('You must choose a blueprint type.');43}44}4546$control = id(new AphrontFormRadioButtonControl())47->setName('blueprintType')48->setLabel(pht('Blueprint Type'))49->setError($e_blueprint);5051foreach ($implementations as $implementation_name => $implementation) {52$disabled = !$implementation->isEnabled();5354$impl_icon = $implementation->getBlueprintIcon();55$impl_name = $implementation->getBlueprintName();5657$impl_icon = id(new PHUIIconView())58->setIcon($impl_icon, 'lightgreytext');5960$control->addButton(61$implementation_name,62array($impl_icon, ' ', $impl_name),63array(64pht('Provides: %s', $implementation->getType()),65phutil_tag('br'),66phutil_tag('br'),67$implementation->getDescription(),68),69$disabled ? 'disabled' : null,70$disabled);71}7273$title = pht('Create New Blueprint');74$crumbs = $this->buildApplicationCrumbs();75$crumbs->addTextCrumb(pht('New Blueprint'));76$crumbs->setBorder(true);7778$form = id(new AphrontFormView())79->setUser($viewer)80->appendChild($control)81->appendChild(82id(new AphrontFormSubmitControl())83->addCancelButton($this->getApplicationURI('blueprint/'))84->setValue(pht('Continue')));8586$box = id(new PHUIObjectBoxView())87->setFormErrors($errors)88->setHeaderText($title)89->setBackground(PHUIObjectBoxView::WHITE_CONFIG)90->setForm($form);9192$view = id(new PHUITwoColumnView())93->setFooter($box);9495return $this->newPage()96->setTitle($title)97->setCrumbs($crumbs)98->appendChild($view);99}100101}102103104