[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorCountdownEditController 4 extends PhabricatorCountdownController { 5 6 private $id; 7 public function willProcessRequest(array $data) { 8 $this->id = idx($data, 'id'); 9 } 10 11 public function processRequest() { 12 13 $request = $this->getRequest(); 14 $user = $request->getUser(); 15 $epoch_control = id(new AphrontFormDateControl()) 16 ->setUser($user) 17 ->setName('epoch') 18 ->setLabel(pht('End Date')) 19 ->setInitialTime(AphrontFormDateControl::TIME_END_OF_DAY); 20 21 if ($this->id) { 22 $page_title = pht('Edit Countdown'); 23 $countdown = id(new PhabricatorCountdownQuery()) 24 ->setViewer($user) 25 ->withIDs(array($this->id)) 26 ->requireCapabilities( 27 array( 28 PhabricatorPolicyCapability::CAN_VIEW, 29 PhabricatorPolicyCapability::CAN_EDIT, 30 )) 31 ->executeOne(); 32 if (!$countdown) { 33 return new Aphront404Response(); 34 } 35 } else { 36 $page_title = pht('Create Countdown'); 37 $countdown = PhabricatorCountdown::initializeNewCountdown($user); 38 } 39 $epoch_control->setValue($countdown->getEpoch()); 40 41 $e_text = true; 42 $errors = array(); 43 if ($request->isFormPost()) { 44 $title = $request->getStr('title'); 45 $epoch = $epoch_control->readValueFromRequest($request); 46 $view_policy = $request->getStr('viewPolicy'); 47 48 $e_text = null; 49 if (!strlen($title)) { 50 $e_text = pht('Required'); 51 $errors[] = pht('You must give the countdown a name.'); 52 } 53 if (!$epoch) { 54 $errors[] = pht('You must give the countdown a valid end date.'); 55 } 56 57 if (!count($errors)) { 58 $countdown->setTitle($title); 59 $countdown->setEpoch($epoch); 60 $countdown->setViewPolicy($view_policy); 61 $countdown->save(); 62 return id(new AphrontRedirectResponse()) 63 ->setURI('/countdown/'.$countdown->getID().'/'); 64 } 65 } 66 67 if ($countdown->getEpoch()) { 68 $display_epoch = phabricator_datetime($countdown->getEpoch(), $user); 69 } else { 70 $display_epoch = $request->getStr('epoch'); 71 } 72 73 $crumbs = $this->buildApplicationCrumbs(); 74 75 $cancel_uri = '/countdown/'; 76 if ($countdown->getID()) { 77 $cancel_uri = '/countdown/'.$countdown->getID().'/'; 78 $crumbs->addTextCrumb('C'.$countdown->getID(), $cancel_uri); 79 $crumbs->addTextCrumb(pht('Edit')); 80 $submit_label = pht('Save Changes'); 81 } else { 82 $crumbs->addTextCrumb(pht('Create Countdown')); 83 $submit_label = pht('Create Countdown'); 84 } 85 86 $policies = id(new PhabricatorPolicyQuery()) 87 ->setViewer($user) 88 ->setObject($countdown) 89 ->execute(); 90 91 $form = id(new AphrontFormView()) 92 ->setUser($user) 93 ->setAction($request->getRequestURI()->getPath()) 94 ->appendChild( 95 id(new AphrontFormTextControl()) 96 ->setLabel(pht('Title')) 97 ->setValue($countdown->getTitle()) 98 ->setName('title') 99 ->setError($e_text)) 100 ->appendChild($epoch_control) 101 ->appendChild( 102 id(new AphrontFormPolicyControl()) 103 ->setUser($user) 104 ->setName('viewPolicy') 105 ->setPolicyObject($countdown) 106 ->setPolicies($policies) 107 ->setCapability(PhabricatorPolicyCapability::CAN_VIEW)) 108 ->appendChild( 109 id(new AphrontFormSubmitControl()) 110 ->addCancelButton($cancel_uri) 111 ->setValue($submit_label)); 112 113 $form_box = id(new PHUIObjectBoxView()) 114 ->setHeaderText($page_title) 115 ->setFormErrors($errors) 116 ->setForm($form); 117 118 return $this->buildApplicationPage( 119 array( 120 $crumbs, 121 $form_box, 122 ), 123 array( 124 'title' => $page_title, 125 )); 126 } 127 128 }
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 |