[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class HeraldRuleViewController extends HeraldController { 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 $rule = id(new HeraldRuleQuery()) 16 ->setViewer($viewer) 17 ->withIDs(array($this->id)) 18 ->needConditionsAndActions(true) 19 ->executeOne(); 20 if (!$rule) { 21 return new Aphront404Response(); 22 } 23 24 $header = id(new PHUIHeaderView()) 25 ->setUser($viewer) 26 ->setHeader($rule->getName()) 27 ->setPolicyObject($rule); 28 29 if ($rule->getIsDisabled()) { 30 $header->setStatus( 31 'fa-ban', 32 'dark', 33 pht('Disabled')); 34 } else { 35 $header->setStatus( 36 'fa-check', 37 'bluegrey', 38 pht('Active')); 39 } 40 41 $actions = $this->buildActionView($rule); 42 $properties = $this->buildPropertyView($rule, $actions); 43 44 $id = $rule->getID(); 45 46 $crumbs = $this->buildApplicationCrumbs(); 47 $crumbs->addTextCrumb("H{$id}"); 48 $crumbs->setActionList($actions); 49 50 $object_box = id(new PHUIObjectBoxView()) 51 ->setHeader($header) 52 ->addPropertyList($properties); 53 54 $timeline = $this->buildTimeline($rule); 55 56 return $this->buildApplicationPage( 57 array( 58 $crumbs, 59 $object_box, 60 $timeline, 61 ), 62 array( 63 'title' => $rule->getName(), 64 )); 65 } 66 67 private function buildActionView(HeraldRule $rule) { 68 $viewer = $this->getRequest()->getUser(); 69 $id = $rule->getID(); 70 71 $view = id(new PhabricatorActionListView()) 72 ->setUser($viewer) 73 ->setObject($rule) 74 ->setObjectURI($this->getApplicationURI("rule/{$id}/")); 75 76 $can_edit = PhabricatorPolicyFilter::hasCapability( 77 $viewer, 78 $rule, 79 PhabricatorPolicyCapability::CAN_EDIT); 80 81 $view->addAction( 82 id(new PhabricatorActionView()) 83 ->setName(pht('Edit Rule')) 84 ->setHref($this->getApplicationURI("edit/{$id}/")) 85 ->setIcon('fa-pencil') 86 ->setDisabled(!$can_edit) 87 ->setWorkflow(!$can_edit)); 88 89 if ($rule->getIsDisabled()) { 90 $disable_uri = "disable/{$id}/enable/"; 91 $disable_icon = 'fa-check-circle-o'; 92 $disable_name = pht('Enable Rule'); 93 } else { 94 $disable_uri = "disable/{$id}/disable/"; 95 $disable_icon = 'fa-ban'; 96 $disable_name = pht('Disable Rule'); 97 } 98 99 $view->addAction( 100 id(new PhabricatorActionView()) 101 ->setName(pht('Disable Rule')) 102 ->setHref($this->getApplicationURI($disable_uri)) 103 ->setIcon($disable_icon) 104 ->setName($disable_name) 105 ->setDisabled(!$can_edit) 106 ->setWorkflow(true)); 107 108 return $view; 109 } 110 111 private function buildPropertyView( 112 HeraldRule $rule, 113 PhabricatorActionListView $actions) { 114 115 $viewer = $this->getRequest()->getUser(); 116 117 $this->loadHandles(HeraldAdapter::getHandlePHIDs($rule)); 118 119 $view = id(new PHUIPropertyListView()) 120 ->setUser($viewer) 121 ->setObject($rule) 122 ->setActionList($actions); 123 124 $view->addProperty( 125 pht('Rule Type'), 126 idx(HeraldRuleTypeConfig::getRuleTypeMap(), $rule->getRuleType())); 127 128 if ($rule->isPersonalRule()) { 129 $view->addProperty( 130 pht('Author'), 131 $this->getHandle($rule->getAuthorPHID())->renderLink()); 132 } 133 134 135 $adapter = HeraldAdapter::getAdapterForContentType($rule->getContentType()); 136 if ($adapter) { 137 $view->addProperty( 138 pht('Applies To'), 139 idx( 140 HeraldAdapter::getEnabledAdapterMap($viewer), 141 $rule->getContentType())); 142 143 if ($rule->isObjectRule()) { 144 $view->addProperty( 145 pht('Trigger Object'), 146 $this->getHandle($rule->getTriggerObjectPHID())->renderLink()); 147 } 148 149 $view->invokeWillRenderEvent(); 150 151 $view->addSectionHeader( 152 pht('Rule Description'), 153 PHUIPropertyListView::ICON_SUMMARY); 154 $view->addTextContent( 155 $adapter->renderRuleAsText($rule, $this->getLoadedHandles())); 156 } 157 158 return $view; 159 } 160 161 private function buildTimeline(HeraldRule $rule) { 162 $viewer = $this->getRequest()->getUser(); 163 164 $xactions = id(new HeraldTransactionQuery()) 165 ->setViewer($viewer) 166 ->withObjectPHIDs(array($rule->getPHID())) 167 ->needComments(true) 168 ->execute(); 169 170 $engine = id(new PhabricatorMarkupEngine()) 171 ->setViewer($viewer); 172 foreach ($xactions as $xaction) { 173 if ($xaction->getComment()) { 174 $engine->addObject( 175 $xaction->getComment(), 176 PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); 177 } 178 } 179 $engine->process(); 180 181 return id(new PhabricatorApplicationTransactionView()) 182 ->setUser($viewer) 183 ->setObjectPHID($rule->getPHID()) 184 ->setTransactions($xactions) 185 ->setMarkupEngine($engine); 186 } 187 188 }
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 |