@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 Pholio to Frankenstein transactions

Summary: Begins the process of migrating Pholio to Modular Transactions by starting with the mock's description and changing the base class of PholioTransaction. Expect several more of these diffs to quickly follow. Also changes the icon for description changes to `fa-pencil`; previously it was check or ban, depending on the open/closed state. Looks like an accidental switch fallthrough.

Test Plan: made new mocks, edited their descriptions, observed same UI as previously

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: Korvin, epriestley

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

+64 -52
+5 -1
src/__phutil_library_map__.php
··· 4357 4357 'PholioDAO' => 'applications/pholio/storage/PholioDAO.php', 4358 4358 'PholioDefaultEditCapability' => 'applications/pholio/capability/PholioDefaultEditCapability.php', 4359 4359 'PholioDefaultViewCapability' => 'applications/pholio/capability/PholioDefaultViewCapability.php', 4360 + 'PholioDescriptionTransaction' => 'applications/pholio/xaction/PholioDescriptionTransaction.php', 4360 4361 'PholioImage' => 'applications/pholio/storage/PholioImage.php', 4361 4362 'PholioImagePHIDType' => 'applications/pholio/phid/PholioImagePHIDType.php', 4362 4363 'PholioImageQuery' => 'applications/pholio/query/PholioImageQuery.php', ··· 4393 4394 'PholioTransaction' => 'applications/pholio/storage/PholioTransaction.php', 4394 4395 'PholioTransactionComment' => 'applications/pholio/storage/PholioTransactionComment.php', 4395 4396 'PholioTransactionQuery' => 'applications/pholio/query/PholioTransactionQuery.php', 4397 + 'PholioTransactionType' => 'applications/pholio/xaction/PholioTransactionType.php', 4396 4398 'PholioTransactionView' => 'applications/pholio/view/PholioTransactionView.php', 4397 4399 'PholioUploadedImageView' => 'applications/pholio/view/PholioUploadedImageView.php', 4398 4400 'PhortuneAccount' => 'applications/phortune/storage/PhortuneAccount.php', ··· 9890 9892 'PholioDAO' => 'PhabricatorLiskDAO', 9891 9893 'PholioDefaultEditCapability' => 'PhabricatorPolicyCapability', 9892 9894 'PholioDefaultViewCapability' => 'PhabricatorPolicyCapability', 9895 + 'PholioDescriptionTransaction' => 'PholioTransactionType', 9893 9896 'PholioImage' => array( 9894 9897 'PholioDAO', 9895 9898 'PhabricatorMarkupInterface', ··· 9940 9943 'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule', 9941 9944 'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 9942 9945 'PholioSchemaSpec' => 'PhabricatorConfigSchemaSpec', 9943 - 'PholioTransaction' => 'PhabricatorApplicationTransaction', 9946 + 'PholioTransaction' => 'PhabricatorModularTransaction', 9944 9947 'PholioTransactionComment' => 'PhabricatorApplicationTransactionComment', 9945 9948 'PholioTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 9949 + 'PholioTransactionType' => 'PhabricatorModularTransactionType', 9946 9950 'PholioTransactionView' => 'PhabricatorApplicationTransactionView', 9947 9951 'PholioUploadedImageView' => 'AphrontView', 9948 9952 'PhortuneAccount' => array(
+1 -1
src/applications/pholio/controller/PholioMockEditController.php
··· 66 66 $xactions = array(); 67 67 68 68 $type_name = PholioTransaction::TYPE_NAME; 69 - $type_desc = PholioTransaction::TYPE_DESCRIPTION; 69 + $type_desc = PholioDescriptionTransaction::TRANSACTIONTYPE; 70 70 $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY; 71 71 $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY; 72 72 $type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
-8
src/applications/pholio/editor/PholioMockEditor.php
··· 30 30 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 31 31 32 32 $types[] = PholioTransaction::TYPE_NAME; 33 - $types[] = PholioTransaction::TYPE_DESCRIPTION; 34 33 $types[] = PholioTransaction::TYPE_STATUS; 35 34 $types[] = PholioTransaction::TYPE_INLINE; 36 35 ··· 50 49 switch ($xaction->getTransactionType()) { 51 50 case PholioTransaction::TYPE_NAME: 52 51 return $object->getName(); 53 - case PholioTransaction::TYPE_DESCRIPTION: 54 - return $object->getDescription(); 55 52 case PholioTransaction::TYPE_STATUS: 56 53 return $object->getStatus(); 57 54 case PholioTransaction::TYPE_IMAGE_FILE: ··· 96 93 97 94 switch ($xaction->getTransactionType()) { 98 95 case PholioTransaction::TYPE_NAME: 99 - case PholioTransaction::TYPE_DESCRIPTION: 100 96 case PholioTransaction::TYPE_STATUS: 101 97 case PholioTransaction::TYPE_IMAGE_NAME: 102 98 case PholioTransaction::TYPE_IMAGE_DESCRIPTION: ··· 215 211 $object->setOriginalName($xaction->getNewValue()); 216 212 } 217 213 break; 218 - case PholioTransaction::TYPE_DESCRIPTION: 219 - $object->setDescription($xaction->getNewValue()); 220 - break; 221 214 case PholioTransaction::TYPE_STATUS: 222 215 $object->setStatus($xaction->getNewValue()); 223 216 break; ··· 311 304 $type = $u->getTransactionType(); 312 305 switch ($type) { 313 306 case PholioTransaction::TYPE_NAME: 314 - case PholioTransaction::TYPE_DESCRIPTION: 315 307 case PholioTransaction::TYPE_STATUS: 316 308 return $v; 317 309 case PholioTransaction::TYPE_IMAGE_REPLACE:
+1 -1
src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php
··· 24 24 $changes = array(); 25 25 $changes[PholioTransaction::TYPE_NAME] = 26 26 $this->generateTitle(); 27 - $changes[PholioTransaction::TYPE_DESCRIPTION] = 27 + $changes[PholioDescriptionTransaction::TRANSACTIONTYPE] = 28 28 $this->generateDescription(); 29 29 $changes[PhabricatorTransactions::TYPE_VIEW_POLICY] = 30 30 PhabricatorPolicies::POLICY_PUBLIC;
+6 -41
src/applications/pholio/storage/PholioTransaction.php
··· 1 1 <?php 2 2 3 - final class PholioTransaction extends PhabricatorApplicationTransaction { 3 + final class PholioTransaction extends PhabricatorModularTransaction { 4 4 5 5 // Edits to the high level mock 6 6 const TYPE_NAME = 'name'; 7 - const TYPE_DESCRIPTION = 'description'; 8 7 const TYPE_STATUS = 'status'; 9 8 10 9 // Edits to images within the mock ··· 26 25 return 'pholio'; 27 26 } 28 27 28 + public function getBaseTransactionClass() { 29 + return 'PholioTransactionType'; 30 + } 31 + 29 32 public function getApplicationTransactionType() { 30 33 return PholioMockPHIDType::TYPECONST; 31 34 } ··· 67 70 $old = $this->getOldValue(); 68 71 69 72 switch ($this->getTransactionType()) { 70 - case self::TYPE_DESCRIPTION: 71 - return ($old === null); 72 73 case self::TYPE_IMAGE_NAME: 73 74 case self::TYPE_IMAGE_DESCRIPTION: 74 75 return ($old === array(null => null)); ··· 89 90 case self::TYPE_INLINE: 90 91 return 'fa-comment'; 91 92 case self::TYPE_NAME: 92 - case self::TYPE_DESCRIPTION: 93 93 case self::TYPE_STATUS: 94 94 if ($new == PholioMock::STATUS_CLOSED) { 95 95 return 'fa-ban'; ··· 119 119 $tags[] = self::MAILTAG_STATUS; 120 120 break; 121 121 case self::TYPE_NAME: 122 - case self::TYPE_DESCRIPTION: 122 + case PholioDescriptionTransaction::TRANSACTIONTYPE: 123 123 case self::TYPE_IMAGE_NAME: 124 124 case self::TYPE_IMAGE_DESCRIPTION: 125 125 case self::TYPE_IMAGE_SEQUENCE: ··· 156 156 $new); 157 157 } 158 158 break; 159 - case self::TYPE_DESCRIPTION: 160 - return pht( 161 - "%s updated the mock's description.", 162 - $this->renderHandleLink($author_phid)); 163 - break; 164 159 case self::TYPE_STATUS: 165 160 if ($new == PholioMock::STATUS_CLOSED) { 166 161 return pht( ··· 268 263 $new); 269 264 } 270 265 break; 271 - case self::TYPE_DESCRIPTION: 272 - return pht( 273 - '%s updated the description for %s.', 274 - $this->renderHandleLink($author_phid), 275 - $this->renderHandleLink($object_phid)); 276 - break; 277 266 case self::TYPE_STATUS: 278 267 if ($new == PholioMock::STATUS_CLOSED) { 279 268 return pht( ··· 338 327 } 339 328 340 329 return $text; 341 - } 342 - 343 - public function hasChangeDetails() { 344 - switch ($this->getTransactionType()) { 345 - case self::TYPE_DESCRIPTION: 346 - case self::TYPE_IMAGE_DESCRIPTION: 347 - return true; 348 - } 349 - return parent::hasChangeDetails(); 350 - } 351 - 352 - public function renderChangeDetails(PhabricatorUser $viewer) { 353 - $old = $this->getOldValue(); 354 - $new = $this->getNewValue(); 355 - if ($this->getTransactionType() == 356 - self::TYPE_IMAGE_DESCRIPTION) { 357 - $old = reset($old); 358 - $new = reset($new); 359 - } 360 - 361 - return $this->renderTextCorpusChangeDetails( 362 - $viewer, 363 - $old, 364 - $new); 365 330 } 366 331 367 332 public function getColor() {
+47
src/applications/pholio/xaction/PholioDescriptionTransaction.php
··· 1 + <?php 2 + 3 + final class PholioDescriptionTransaction 4 + extends PholioTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'description'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getDescription(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setDescription($value); 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + "%s updated the mock's description.", 19 + $this->renderAuthor()); 20 + } 21 + 22 + public function getTitleForFeed() { 23 + return pht( 24 + '%s updated the description for %s.', 25 + $this->renderAuthor(), 26 + $this->renderObject()); 27 + } 28 + 29 + public function shouldHide() { 30 + $old = $this->getOldValue(); 31 + return ($old === null); 32 + } 33 + 34 + public function hasChangeDetailView() { 35 + return true; 36 + } 37 + 38 + public function newChangeDetailView() { 39 + $viewer = $this->getViewer(); 40 + 41 + return id(new PhabricatorApplicationTransactionTextDiffDetailView()) 42 + ->setViewer($viewer) 43 + ->setOldText($this->getOldValue()) 44 + ->setNewText($this->getNewValue()); 45 + } 46 + 47 + }
+4
src/applications/pholio/xaction/PholioTransactionType.php
··· 1 + <?php 2 + 3 + abstract class PholioTransactionType 4 + extends PhabricatorModularTransactionType {}