Path: blob/master/src/applications/almanac/controller/AlmanacBindingEditController.php
12256 views
<?php12final class AlmanacBindingEditController3extends AlmanacServiceController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();78$id = $request->getURIData('id');9if ($id) {10$binding = id(new AlmanacBindingQuery())11->setViewer($viewer)12->withIDs(array($id))13->requireCapabilities(14array(15PhabricatorPolicyCapability::CAN_VIEW,16PhabricatorPolicyCapability::CAN_EDIT,17))18->executeOne();19if (!$binding) {20return new Aphront404Response();21}2223$service = $binding->getService();24$is_new = false;2526$service_uri = $service->getURI();27$cancel_uri = $binding->getURI();28$title = pht('Edit Binding');29$save_button = pht('Save Changes');30} else {31$service = id(new AlmanacServiceQuery())32->setViewer($viewer)33->withIDs(array($request->getStr('serviceID')))34->requireCapabilities(35array(36PhabricatorPolicyCapability::CAN_VIEW,37PhabricatorPolicyCapability::CAN_EDIT,38))39->executeOne();4041$binding = AlmanacBinding::initializeNewBinding($service);42$is_new = true;4344$service_uri = $service->getURI();45$cancel_uri = $service_uri;46$title = pht('Create Binding');47$save_button = pht('Create Binding');48}4950$v_interface = array();51if ($binding->getInterfacePHID()) {52$v_interface = array($binding->getInterfacePHID());53}54$e_interface = true;5556$validation_exception = null;57if ($request->isFormPost()) {58$v_interface = $request->getArr('interfacePHIDs');5960$type_interface = AlmanacBindingInterfaceTransaction::TRANSACTIONTYPE;6162$xactions = array();6364$xactions[] = id(new AlmanacBindingTransaction())65->setTransactionType($type_interface)66->setNewValue(head($v_interface));6768$editor = id(new AlmanacBindingEditor())69->setActor($viewer)70->setContentSourceFromRequest($request)71->setContinueOnNoEffect(true);7273try {74$editor->applyTransactions($binding, $xactions);7576$binding_uri = $binding->getURI();77return id(new AphrontRedirectResponse())->setURI($binding_uri);78} catch (PhabricatorApplicationTransactionValidationException $ex) {79$validation_exception = $ex;80$e_interface = $ex->getShortMessage($type_interface);81}82}8384$form = id(new AphrontFormView())85->setUser($viewer)86->appendControl(87id(new AphrontFormTokenizerControl())88->setName('interfacePHIDs')89->setLabel(pht('Interface'))90->setLimit(1)91->setDatasource(new AlmanacInterfaceDatasource())92->setValue($v_interface)93->setError($e_interface))94->appendChild(95id(new AphrontFormSubmitControl())96->addCancelButton($cancel_uri)97->setValue($save_button));9899$box = id(new PHUIObjectBoxView())100->setValidationException($validation_exception)101->setHeaderText(pht('Binding'))102->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)103->appendChild($form);104105$crumbs = $this->buildApplicationCrumbs();106$crumbs->addTextCrumb($service->getName(), $service_uri);107if ($is_new) {108$crumbs->addTextCrumb(pht('Create Binding'));109$header = id(new PHUIHeaderView())110->setHeader(pht('Create Binding'))111->setHeaderIcon('fa-plus-square');112} else {113$crumbs->addTextCrumb(pht('Edit Binding'));114$header = id(new PHUIHeaderView())115->setHeader(pht('Create Binding'))116->setHeaderIcon('fa-pencil');117}118$crumbs->setBorder(true);119120$view = id(new PHUITwoColumnView())121->setHeader($header)122->setFooter(array(123$box,124));125126return $this->newPage()127->setTitle($title)128->setCrumbs($crumbs)129->appendChild($view);130}131132}133134135