@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 72 lines 2.1 kB view raw
1<?php 2 3final class AlmanacPropertyDeleteController 4 extends AlmanacPropertyController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $request->getViewer(); 8 9 $response = $this->loadPropertyObject(); 10 if ($response) { 11 return $response; 12 } 13 14 $object = $this->getPropertyObject(); 15 16 $key = $request->getStr('key'); 17 if (!strlen($key)) { 18 return new Aphront404Response(); 19 } 20 21 $cancel_uri = $object->getURI(); 22 23 $builtins = $object->getAlmanacPropertyFieldSpecifications(); 24 $is_builtin = isset($builtins[$key]); 25 26 if ($is_builtin) { 27 $title = pht('Reset Property'); 28 $body = pht( 29 'Reset property "%s" to its default value?', 30 $key); 31 $submit_text = pht('Reset Property'); 32 } else { 33 $title = pht('Delete Property'); 34 $body = pht( 35 'Delete property "%s"?', 36 $key); 37 $submit_text = pht('Delete Property'); 38 } 39 40 $validation_exception = null; 41 if ($request->isFormPost()) { 42 $xaction_type = $object->getAlmanacPropertyDeleteTransactionType(); 43 44 $xaction = $object->getApplicationTransactionTemplate() 45 ->setTransactionType($xaction_type) 46 ->setMetadataValue('almanac.property', $key); 47 48 $editor = $object->getApplicationTransactionEditor() 49 ->setActor($viewer) 50 ->setContentSourceFromRequest($request) 51 ->setContinueOnNoEffect(true) 52 ->setContinueOnMissingFields(true); 53 54 try { 55 $editor->applyTransactions($object, array($xaction)); 56 return id(new AphrontRedirectResponse())->setURI($cancel_uri); 57 } catch (PhabricatorApplicationTransactionValidationException $ex) { 58 $validation_exception = $ex; 59 } 60 } 61 62 return $this->newDialog() 63 ->setTitle($title) 64 ->setValidationException($validation_exception) 65 ->addHiddenInput('objectPHID', $object->getPHID()) 66 ->addHiddenInput('key', $key) 67 ->appendParagraph($body) 68 ->addCancelButton($cancel_uri) 69 ->addSubmitButton($submit_text); 70 } 71 72}