@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Make Fund backers render a little more nicely

Summary: Ref T5835. Mostly UI smoothing. Also add a "Risks" field to initiatives.

Test Plan: {F214952}

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5835

Differential Revision: https://secure.phabricator.com/D10660

+69 -21
+2
resources/sql/autopatches/20141007.fundrisks.sql
··· 1 + ALTER TABLE {$NAMESPACE}_fund.fund_initiative 2 + ADD risks LONGTEXT NOT NULL COLLATE utf8_bin;
+2 -1
src/applications/fund/controller/FundInitiativeBackController.php
··· 118 118 ->setError($e_amount)); 119 119 120 120 return $this->newDialog() 121 - ->setTitle(pht('Back Initiative')) 121 + ->setTitle( 122 + pht('Back %s %s', $initiative->getMonogram(), $initiative->getName())) 122 123 ->setErrors($errors) 123 124 ->appendChild($form->buildLayoutView()) 124 125 ->addCancelButton($initiative_uri)
+12
src/applications/fund/controller/FundInitiativeEditController.php
··· 52 52 $v_merchant = $initiative->getMerchantPHID(); 53 53 54 54 $v_desc = $initiative->getDescription(); 55 + $v_risk = $initiative->getRisks(); 55 56 56 57 if ($is_new) { 57 58 $v_projects = array(); ··· 66 67 if ($request->isFormPost()) { 67 68 $v_name = $request->getStr('name'); 68 69 $v_desc = $request->getStr('description'); 70 + $v_risk = $request->getStr('risks'); 69 71 $v_view = $request->getStr('viewPolicy'); 70 72 $v_edit = $request->getStr('editPolicy'); 71 73 $v_merchant = $request->getStr('merchantPHID'); ··· 73 75 74 76 $type_name = FundInitiativeTransaction::TYPE_NAME; 75 77 $type_desc = FundInitiativeTransaction::TYPE_DESCRIPTION; 78 + $type_risk = FundInitiativeTransaction::TYPE_RISKS; 76 79 $type_merchant = FundInitiativeTransaction::TYPE_MERCHANT; 77 80 $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY; 78 81 $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY; ··· 86 89 $xactions[] = id(new FundInitiativeTransaction()) 87 90 ->setTransactionType($type_desc) 88 91 ->setNewValue($v_desc); 92 + 93 + $xactions[] = id(new FundInitiativeTransaction()) 94 + ->setTransactionType($type_risk) 95 + ->setNewValue($v_risk); 89 96 90 97 $xactions[] = id(new FundInitiativeTransaction()) 91 98 ->setTransactionType($type_merchant) ··· 196 203 ->setName('description') 197 204 ->setLabel(pht('Description')) 198 205 ->setValue($v_desc)) 206 + ->appendChild( 207 + id(new PhabricatorRemarkupControl()) 208 + ->setName('risks') 209 + ->setLabel(pht('Risks/Challenges')) 210 + ->setValue($v_risk)) 199 211 ->appendChild( 200 212 id(new AphrontFormTokenizerControl()) 201 213 ->setLabel(pht('Projects'))
+12 -1
src/applications/fund/controller/FundInitiativeViewController.php
··· 96 96 $this->getHandle($owner_phid)->renderLink()); 97 97 98 98 $view->addProperty( 99 - pht('Payable To Merchant'), 99 + pht('Payable to Merchant'), 100 100 $this->getHandle($merchant_phid)->renderLink()); 101 101 102 102 $view->addProperty( ··· 114 114 115 115 $view->addSectionHeader(pht('Description')); 116 116 $view->addTextContent($description); 117 + } 118 + 119 + $risks = $initiative->getRisks(); 120 + if (strlen($risks)) { 121 + $risks = PhabricatorMarkupEngine::renderOneObject( 122 + id(new PhabricatorMarkupOneOff())->setContent($risks), 123 + 'default', 124 + $viewer); 125 + 126 + $view->addSectionHeader(pht('Risks/Challenges')); 127 + $view->addTextContent($risks); 117 128 } 118 129 119 130 return $view;
+8
src/applications/fund/editor/FundInitiativeEditor.php
··· 16 16 17 17 $types[] = FundInitiativeTransaction::TYPE_NAME; 18 18 $types[] = FundInitiativeTransaction::TYPE_DESCRIPTION; 19 + $types[] = FundInitiativeTransaction::TYPE_RISKS; 19 20 $types[] = FundInitiativeTransaction::TYPE_STATUS; 20 21 $types[] = FundInitiativeTransaction::TYPE_BACKER; 21 22 $types[] = FundInitiativeTransaction::TYPE_MERCHANT; ··· 33 34 return $object->getName(); 34 35 case FundInitiativeTransaction::TYPE_DESCRIPTION: 35 36 return $object->getDescription(); 37 + case FundInitiativeTransaction::TYPE_RISKS: 38 + return $object->getRisks(); 36 39 case FundInitiativeTransaction::TYPE_STATUS: 37 40 return $object->getStatus(); 38 41 case FundInitiativeTransaction::TYPE_BACKER: ··· 51 54 switch ($xaction->getTransactionType()) { 52 55 case FundInitiativeTransaction::TYPE_NAME: 53 56 case FundInitiativeTransaction::TYPE_DESCRIPTION: 57 + case FundInitiativeTransaction::TYPE_RISKS: 54 58 case FundInitiativeTransaction::TYPE_STATUS: 55 59 case FundInitiativeTransaction::TYPE_BACKER: 56 60 case FundInitiativeTransaction::TYPE_MERCHANT: ··· 71 75 case FundInitiativeTransaction::TYPE_DESCRIPTION: 72 76 $object->setDescription($xaction->getNewValue()); 73 77 return; 78 + case FundInitiativeTransaction::TYPE_RISKS: 79 + $object->setRisks($xaction->getNewValue()); 80 + return; 74 81 case FundInitiativeTransaction::TYPE_MERCHANT: 75 82 $object->setMerchantPHID($xaction->getNewValue()); 76 83 return; ··· 106 113 switch ($xaction->getTransactionType()) { 107 114 case FundInitiativeTransaction::TYPE_NAME: 108 115 case FundInitiativeTransaction::TYPE_DESCRIPTION: 116 + case FundInitiativeTransaction::TYPE_RISKS: 109 117 case FundInitiativeTransaction::TYPE_STATUS: 110 118 case FundInitiativeTransaction::TYPE_MERCHANT: 111 119 case FundInitiativeTransaction::TYPE_BACKER:
+25 -19
src/applications/fund/query/FundBackerSearchEngine.php
··· 126 126 127 127 $viewer = $this->requireViewer(); 128 128 129 - $list = id(new PHUIObjectItemListView()); 129 + $rows = array(); 130 130 foreach ($backers as $backer) { 131 - $backer_handle = $handles[$backer->getBackerPHID()]; 132 - 133 - $currency = $backer->getAmountAsCurrency(); 134 - 135 - $header = pht( 136 - '%s for %s', 137 - $currency->formatForDisplay(), 138 - $handles[$backer->getInitiativePHID()]->renderLink()); 139 - 140 - $item = id(new PHUIObjectItemView()) 141 - ->setHeader($header) 142 - ->addIcon( 143 - 'none', 144 - phabricator_datetime($backer->getDateCreated(), $viewer)) 145 - ->addByline(pht('Backer: %s', $backer_handle->renderLink())); 146 - 147 - $list->addItem($item); 131 + $rows[] = array( 132 + $handles[$backer->getInitiativePHID()]->renderLink(), 133 + $handles[$backer->getBackerPHID()]->renderLink(), 134 + $backer->getAmountAsCurrency()->formatForDisplay(), 135 + phabricator_datetime($backer->getDateCreated(), $viewer), 136 + ); 148 137 } 149 138 139 + $table = id(new AphrontTableView($rows)) 140 + ->setHeaders( 141 + array( 142 + pht('Initiative'), 143 + pht('Backer'), 144 + pht('Amount'), 145 + pht('Date'), 146 + )) 147 + ->setColumnClasses( 148 + array( 149 + null, 150 + null, 151 + 'wide right', 152 + 'right', 153 + )); 150 154 151 - return $list; 155 + return id(new PHUIObjectBoxView()) 156 + ->setHeaderText(pht('Backers')) 157 + ->appendChild($table); 152 158 } 153 159 154 160 }
+1
src/applications/fund/storage/FundInitiative.php
··· 15 15 protected $ownerPHID; 16 16 protected $merchantPHID; 17 17 protected $description; 18 + protected $risks; 18 19 protected $viewPolicy; 19 20 protected $editPolicy; 20 21 protected $status;
+7
src/applications/fund/storage/FundInitiativeTransaction.php
··· 5 5 6 6 const TYPE_NAME = 'fund:name'; 7 7 const TYPE_DESCRIPTION = 'fund:description'; 8 + const TYPE_RISKS = 'fund:risks'; 8 9 const TYPE_STATUS = 'fund:status'; 9 10 const TYPE_BACKER = 'fund:backer'; 10 11 const TYPE_MERCHANT = 'fund:merchant'; ··· 64 65 $new); 65 66 } 66 67 break; 68 + case FundInitiativeTransaction::TYPE_RISKS: 69 + return pht( 70 + '%s edited the risks for this initiative.', 71 + $this->renderHandleLink($author_phid)); 67 72 case FundInitiativeTransaction::TYPE_DESCRIPTION: 68 73 return pht( 69 74 '%s edited the description of this initiative.', ··· 159 164 $old = $this->getOldValue(); 160 165 switch ($this->getTransactionType()) { 161 166 case FundInitiativeTransaction::TYPE_DESCRIPTION: 167 + case FundInitiativeTransaction::TYPE_RISKS: 162 168 return ($old === null); 163 169 } 164 170 return parent::shouldHide(); ··· 167 173 public function hasChangeDetails() { 168 174 switch ($this->getTransactionType()) { 169 175 case FundInitiativeTransaction::TYPE_DESCRIPTION: 176 + case FundInitiativeTransaction::TYPE_RISKS: 170 177 return ($this->getOldValue() !== null); 171 178 } 172 179