Path: blob/master/src/applications/almanac/controller/AlmanacPropertyDeleteController.php
12256 views
<?php12final class AlmanacPropertyDeleteController3extends AlmanacPropertyController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();78$response = $this->loadPropertyObject();9if ($response) {10return $response;11}1213$object = $this->getPropertyObject();1415$key = $request->getStr('key');16if (!strlen($key)) {17return new Aphront404Response();18}1920$cancel_uri = $object->getURI();2122$builtins = $object->getAlmanacPropertyFieldSpecifications();23$is_builtin = isset($builtins[$key]);2425if ($is_builtin) {26$title = pht('Reset Property');27$body = pht(28'Reset property "%s" to its default value?',29$key);30$submit_text = pht('Reset Property');31} else {32$title = pht('Delete Property');33$body = pht(34'Delete property "%s"?',35$key);36$submit_text = pht('Delete Property');37}3839$validation_exception = null;40if ($request->isFormPost()) {41$xaction_type = $object->getAlmanacPropertyDeleteTransactionType();4243$xaction = $object->getApplicationTransactionTemplate()44->setTransactionType($xaction_type)45->setMetadataValue('almanac.property', $key);4647$editor = $object->getApplicationTransactionEditor()48->setActor($viewer)49->setContentSourceFromRequest($request)50->setContinueOnNoEffect(true)51->setContinueOnMissingFields(true);5253try {54$editor->applyTransactions($object, array($xaction));55return id(new AphrontRedirectResponse())->setURI($cancel_uri);56} catch (PhabricatorApplicationTransactionValidationException $ex) {57$validation_exception = $ex;58}59}6061return $this->newDialog()62->setTitle($title)63->setValidationException($validation_exception)64->addHiddenInput('objectPHID', $object->getPHID())65->addHiddenInput('key', $key)66->appendParagraph($body)67->addCancelButton($cancel_uri)68->addSubmitButton($submit_text);69}7071}727374