@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.

Migrate Project icons to modular transactions

Test Plan: Unit tests pass. Changed some icons, observed expected timeline entries.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley

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

+49 -35
+2
src/__phutil_library_map__.php
··· 3620 3620 'PhabricatorProjectHeraldFieldGroup' => 'applications/project/herald/PhabricatorProjectHeraldFieldGroup.php', 3621 3621 'PhabricatorProjectHovercardEngineExtension' => 'applications/project/engineextension/PhabricatorProjectHovercardEngineExtension.php', 3622 3622 'PhabricatorProjectIconSet' => 'applications/project/icon/PhabricatorProjectIconSet.php', 3623 + 'PhabricatorProjectIconTransaction' => 'applications/project/xaction/PhabricatorProjectIconTransaction.php', 3623 3624 'PhabricatorProjectIconsConfigOptionType' => 'applications/project/config/PhabricatorProjectIconsConfigOptionType.php', 3624 3625 'PhabricatorProjectImageTransaction' => 'applications/project/xaction/PhabricatorProjectImageTransaction.php', 3625 3626 'PhabricatorProjectInterface' => 'applications/project/interface/PhabricatorProjectInterface.php', ··· 9035 9036 'PhabricatorProjectHeraldFieldGroup' => 'HeraldFieldGroup', 9036 9037 'PhabricatorProjectHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension', 9037 9038 'PhabricatorProjectIconSet' => 'PhabricatorIconSet', 9039 + 'PhabricatorProjectIconTransaction' => 'PhabricatorProjectTransactionType', 9038 9040 'PhabricatorProjectIconsConfigOptionType' => 'PhabricatorConfigJSONOptionType', 9039 9041 'PhabricatorProjectImageTransaction' => 'PhabricatorProjectTransactionType', 9040 9042 'PhabricatorProjectListController' => 'PhabricatorProjectController',
+1 -1
src/applications/project/conduit/ProjectCreateConduitAPIMethod.php
··· 52 52 53 53 if ($request->getValue('icon')) { 54 54 $xactions[] = id(new PhabricatorProjectTransaction()) 55 - ->setTransactionType(PhabricatorProjectTransaction::TYPE_ICON) 55 + ->setTransactionType(PhabricatorProjectIconTransaction::TRANSACTIONTYPE) 56 56 ->setNewValue($request->getValue('icon')); 57 57 } 58 58
+1 -9
src/applications/project/editor/PhabricatorProjectTransactionEditor.php
··· 30 30 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 31 31 $types[] = PhabricatorTransactions::TYPE_JOIN_POLICY; 32 32 33 - $types[] = PhabricatorProjectTransaction::TYPE_ICON; 34 33 $types[] = PhabricatorProjectTransaction::TYPE_COLOR; 35 34 $types[] = PhabricatorProjectTransaction::TYPE_LOCKED; 36 35 $types[] = PhabricatorProjectTransaction::TYPE_PARENT; ··· 48 47 PhabricatorApplicationTransaction $xaction) { 49 48 50 49 switch ($xaction->getTransactionType()) { 51 - case PhabricatorProjectTransaction::TYPE_ICON: 52 - return $object->getIcon(); 53 50 case PhabricatorProjectTransaction::TYPE_COLOR: 54 51 return $object->getColor(); 55 52 case PhabricatorProjectTransaction::TYPE_LOCKED: ··· 75 72 PhabricatorApplicationTransaction $xaction) { 76 73 77 74 switch ($xaction->getTransactionType()) { 78 - case PhabricatorProjectTransaction::TYPE_ICON: 79 75 case PhabricatorProjectTransaction::TYPE_COLOR: 80 76 case PhabricatorProjectTransaction::TYPE_LOCKED: 81 77 case PhabricatorProjectTransaction::TYPE_PARENT: ··· 101 97 PhabricatorApplicationTransaction $xaction) { 102 98 103 99 switch ($xaction->getTransactionType()) { 104 - case PhabricatorProjectTransaction::TYPE_ICON: 105 - $object->setIcon($xaction->getNewValue()); 106 - return; 107 100 case PhabricatorProjectTransaction::TYPE_COLOR: 108 101 $object->setColor($xaction->getNewValue()); 109 102 return; ··· 143 136 $new = $xaction->getNewValue(); 144 137 145 138 switch ($xaction->getTransactionType()) { 146 - case PhabricatorProjectTransaction::TYPE_ICON: 147 139 case PhabricatorProjectTransaction::TYPE_COLOR: 148 140 case PhabricatorProjectTransaction::TYPE_LOCKED: 149 141 case PhabricatorProjectTransaction::TYPE_PARENT: ··· 329 321 case PhabricatorProjectNameTransaction::TRANSACTIONTYPE: 330 322 case PhabricatorProjectStatusTransaction::TRANSACTIONTYPE: 331 323 case PhabricatorProjectImageTransaction::TRANSACTIONTYPE: 332 - case PhabricatorProjectTransaction::TYPE_ICON: 324 + case PhabricatorProjectIconTransaction::TRANSACTIONTYPE: 333 325 case PhabricatorProjectTransaction::TYPE_COLOR: 334 326 PhabricatorPolicyFilter::requireCapability( 335 327 $this->requireActor(),
+2 -2
src/applications/project/engine/PhabricatorProjectEditEngine.php
··· 112 112 PhabricatorTransactions::TYPE_VIEW_POLICY, 113 113 PhabricatorTransactions::TYPE_EDIT_POLICY, 114 114 PhabricatorTransactions::TYPE_JOIN_POLICY, 115 - PhabricatorProjectTransaction::TYPE_ICON, 115 + PhabricatorProjectIconTransaction::TRANSACTIONTYPE, 116 116 PhabricatorProjectTransaction::TYPE_COLOR, 117 117 ); 118 118 $unavailable = array_fuse($unavailable); ··· 244 244 id(new PhabricatorIconSetEditField()) 245 245 ->setKey('icon') 246 246 ->setLabel(pht('Icon')) 247 - ->setTransactionType(PhabricatorProjectTransaction::TYPE_ICON) 247 + ->setTransactionType(PhabricatorProjectIconTransaction::TRANSACTIONTYPE) 248 248 ->setIconSet(new PhabricatorProjectIconSet()) 249 249 ->setDescription(pht('Project icon.')) 250 250 ->setConduitDescription(pht('Change the project icon.'))
+1 -23
src/applications/project/storage/PhabricatorProjectTransaction.php
··· 3 3 final class PhabricatorProjectTransaction 4 4 extends PhabricatorModularTransaction { 5 5 6 - const TYPE_ICON = 'project:icon'; 7 6 const TYPE_COLOR = 'project:color'; 8 7 const TYPE_LOCKED = 'project:locked'; 9 8 const TYPE_PARENT = 'project:parent'; ··· 99 98 } else { 100 99 return 'fa-unlock'; 101 100 } 102 - case self::TYPE_ICON: 103 - return PhabricatorProjectIconSet::getIconIcon($new); 104 101 case self::TYPE_MEMBERS: 105 102 return 'fa-user'; 106 103 } ··· 118 115 return pht( 119 116 '%s created this project.', 120 117 $this->renderHandleLink($author_phid)); 121 - 122 - case self::TYPE_ICON: 123 - $set = new PhabricatorProjectIconSet(); 124 - 125 - return pht( 126 - "%s set this project's icon to %s.", 127 - $author_handle, 128 - $set->getIconLabel($new)); 129 - break; 130 118 131 119 case self::TYPE_COLOR: 132 120 return pht( ··· 226 214 $new = $this->getNewValue(); 227 215 228 216 switch ($this->getTransactionType()) { 229 - 230 - case self::TYPE_ICON: 231 - $set = new PhabricatorProjectIconSet(); 232 - 233 - return pht( 234 - '%s set the icon for %s to %s.', 235 - $author_handle, 236 - $object_handle, 237 - $set->getIconLabel($new)); 238 - 239 217 case self::TYPE_COLOR: 240 218 return pht( 241 219 '%s set the color for %s to %s.', ··· 266 244 case PhabricatorProjectNameTransaction::TRANSACTIONTYPE: 267 245 case PhabricatorProjectSlugsTransaction::TRANSACTIONTYPE: 268 246 case PhabricatorProjectImageTransaction::TRANSACTIONTYPE: 269 - case self::TYPE_ICON: 247 + case PhabricatorProjectIconTransaction::TRANSACTIONTYPE: 270 248 case self::TYPE_COLOR: 271 249 $tags[] = self::MAILTAG_METADATA; 272 250 break;
+42
src/applications/project/xaction/PhabricatorProjectIconTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectIconTransaction 4 + extends PhabricatorProjectTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'project:icon'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getIcon(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setIcon($value); 14 + } 15 + 16 + public function getTitle() { 17 + $set = new PhabricatorProjectIconSet(); 18 + $new = $this->getNewValue(); 19 + 20 + return pht( 21 + "%s set this project's icon to %s.", 22 + $this->renderAuthor(), 23 + $this->renderValue($set->getIconLabel($new))); 24 + } 25 + 26 + public function getTitleForFeed() { 27 + $set = new PhabricatorProjectIconSet(); 28 + $new = $this->getNewValue(); 29 + 30 + return pht( 31 + '%s set the icon for %s to %s.', 32 + $this->renderAuthor(), 33 + $this->renderObject(), 34 + $this->renderValue($set->getIconLabel($new))); 35 + } 36 + 37 + public function getIcon() { 38 + $new = $this->getNewValue(); 39 + return PhabricatorProjectIconSet::getIconIcon($new); 40 + } 41 + 42 + }