[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorFileEditController extends PhabricatorFileController { 4 5 private $id; 6 7 public function willProcessRequest(array $data) { 8 $this->id = $data['id']; 9 } 10 11 public function processRequest() { 12 $request = $this->getRequest(); 13 $viewer = $request->getUser(); 14 15 $file = id(new PhabricatorFileQuery()) 16 ->setViewer($viewer) 17 ->withIDs(array($this->id)) 18 ->requireCapabilities( 19 array( 20 PhabricatorPolicyCapability::CAN_VIEW, 21 PhabricatorPolicyCapability::CAN_EDIT, 22 )) 23 ->executeOne(); 24 if (!$file) { 25 return new Aphront404Response(); 26 } 27 28 $title = pht('Edit %s', $file->getName()); 29 $view_uri = '/'.$file->getMonogram(); 30 31 $validation_exception = null; 32 if ($request->isFormPost()) { 33 $can_view = $request->getStr('canView'); 34 35 $xactions = array(); 36 37 $xactions[] = id(new PhabricatorFileTransaction()) 38 ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) 39 ->setNewValue($can_view); 40 41 $editor = id(new PhabricatorFileEditor()) 42 ->setActor($viewer) 43 ->setContentSourceFromRequest($request) 44 ->setContinueOnNoEffect(true); 45 46 try { 47 $editor->applyTransactions($file, $xactions); 48 return id(new AphrontRedirectResponse())->setURI($view_uri); 49 } catch (PhabricatorApplicationTransactionValidationException $ex) { 50 $validation_exception = $ex; 51 52 $file->setViewPolicy($can_view); 53 } 54 } 55 56 57 $policies = id(new PhabricatorPolicyQuery()) 58 ->setViewer($viewer) 59 ->setObject($file) 60 ->execute(); 61 62 $form = id(new AphrontFormView()) 63 ->setUser($viewer) 64 ->appendChild( 65 id(new AphrontFormPolicyControl()) 66 ->setUser($viewer) 67 ->setCapability(PhabricatorPolicyCapability::CAN_VIEW) 68 ->setPolicyObject($file) 69 ->setPolicies($policies) 70 ->setName('canView')) 71 ->appendChild( 72 id(new AphrontFormSubmitControl()) 73 ->addCancelButton($view_uri) 74 ->setValue(pht('Save Changes'))); 75 76 $crumbs = $this->buildApplicationCrumbs() 77 ->addTextCrumb($file->getMonogram(), $view_uri) 78 ->addTextCrumb(pht('Edit')); 79 80 $object_box = id(new PHUIObjectBoxView()) 81 ->setHeaderText($title) 82 ->setValidationException($validation_exception) 83 ->appendChild($form); 84 85 return $this->buildApplicationPage( 86 array( 87 $crumbs, 88 $object_box, 89 ), 90 array( 91 'title' => $title, 92 )); 93 } 94 95 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |