@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 sort and filter defaults to modular transactions

Test Plan: Unit tests pass, manually changed the default sort and filter on a workboard and observed expected transactions in the DB.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley

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

+61 -35
+4
src/__phutil_library_map__.php
··· 3636 3636 'PhabricatorProjectEditController' => 'applications/project/controller/PhabricatorProjectEditController.php', 3637 3637 'PhabricatorProjectEditEngine' => 'applications/project/engine/PhabricatorProjectEditEngine.php', 3638 3638 'PhabricatorProjectEditPictureController' => 'applications/project/controller/PhabricatorProjectEditPictureController.php', 3639 + 'PhabricatorProjectFilterTransaction' => 'applications/project/xaction/PhabricatorProjectFilterTransaction.php', 3639 3640 'PhabricatorProjectFulltextEngine' => 'applications/project/search/PhabricatorProjectFulltextEngine.php', 3640 3641 'PhabricatorProjectHeraldAction' => 'applications/project/herald/PhabricatorProjectHeraldAction.php', 3641 3642 'PhabricatorProjectHeraldAdapter' => 'applications/project/herald/PhabricatorProjectHeraldAdapter.php', ··· 3694 3695 'PhabricatorProjectSilencedEdgeType' => 'applications/project/edge/PhabricatorProjectSilencedEdgeType.php', 3695 3696 'PhabricatorProjectSlug' => 'applications/project/storage/PhabricatorProjectSlug.php', 3696 3697 'PhabricatorProjectSlugsTransaction' => 'applications/project/xaction/PhabricatorProjectSlugsTransaction.php', 3698 + 'PhabricatorProjectSortTransaction' => 'applications/project/xaction/PhabricatorProjectSortTransaction.php', 3697 3699 'PhabricatorProjectStandardCustomField' => 'applications/project/customfield/PhabricatorProjectStandardCustomField.php', 3698 3700 'PhabricatorProjectStatus' => 'applications/project/constants/PhabricatorProjectStatus.php', 3699 3701 'PhabricatorProjectStatusTransaction' => 'applications/project/xaction/PhabricatorProjectStatusTransaction.php', ··· 9082 9084 'PhabricatorProjectEditController' => 'PhabricatorProjectController', 9083 9085 'PhabricatorProjectEditEngine' => 'PhabricatorEditEngine', 9084 9086 'PhabricatorProjectEditPictureController' => 'PhabricatorProjectController', 9087 + 'PhabricatorProjectFilterTransaction' => 'PhabricatorProjectTransactionType', 9085 9088 'PhabricatorProjectFulltextEngine' => 'PhabricatorFulltextEngine', 9086 9089 'PhabricatorProjectHeraldAction' => 'HeraldAction', 9087 9090 'PhabricatorProjectHeraldAdapter' => 'HeraldAdapter', ··· 9139 9142 'PhabricatorProjectSilencedEdgeType' => 'PhabricatorEdgeType', 9140 9143 'PhabricatorProjectSlug' => 'PhabricatorProjectDAO', 9141 9144 'PhabricatorProjectSlugsTransaction' => 'PhabricatorProjectTransactionType', 9145 + 'PhabricatorProjectSortTransaction' => 'PhabricatorProjectTransactionType', 9142 9146 'PhabricatorProjectStandardCustomField' => array( 9143 9147 'PhabricatorProjectCustomField', 9144 9148 'PhabricatorStandardCustomFieldInterface',
+2 -2
src/applications/project/controller/PhabricatorProjectDefaultController.php
··· 32 32 $button = pht('Save Default Filter'); 33 33 34 34 $xaction_value = $request->getStr('filter'); 35 - $xaction_type = PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER; 35 + $xaction_type = PhabricatorProjectFilterTransaction::TRANSACTIONTYPE; 36 36 break; 37 37 case 'sort': 38 38 $title = pht('Set Board Default Order'); ··· 43 43 $button = pht('Save Default Order'); 44 44 45 45 $xaction_value = $request->getStr('order'); 46 - $xaction_type = PhabricatorProjectTransaction::TYPE_DEFAULT_SORT; 46 + $xaction_type = PhabricatorProjectSortTransaction::TRANSACTIONTYPE; 47 47 break; 48 48 default: 49 49 return new Aphront404Response();
-17
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_DEFAULT_SORT; 34 - $types[] = PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER; 35 33 $types[] = PhabricatorProjectTransaction::TYPE_BACKGROUND; 36 34 37 35 return $types; ··· 42 40 PhabricatorApplicationTransaction $xaction) { 43 41 44 42 switch ($xaction->getTransactionType()) { 45 - case PhabricatorProjectTransaction::TYPE_DEFAULT_SORT: 46 - return $object->getDefaultWorkboardSort(); 47 - case PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER: 48 - return $object->getDefaultWorkboardFilter(); 49 43 case PhabricatorProjectTransaction::TYPE_BACKGROUND: 50 44 return $object->getWorkboardBackgroundColor(); 51 45 } ··· 58 52 PhabricatorApplicationTransaction $xaction) { 59 53 60 54 switch ($xaction->getTransactionType()) { 61 - case PhabricatorProjectTransaction::TYPE_DEFAULT_SORT: 62 - case PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER: 63 - return $xaction->getNewValue(); 64 55 case PhabricatorProjectTransaction::TYPE_BACKGROUND: 65 56 $value = $xaction->getNewValue(); 66 57 if (!strlen($value)) { ··· 77 68 PhabricatorApplicationTransaction $xaction) { 78 69 79 70 switch ($xaction->getTransactionType()) { 80 - case PhabricatorProjectTransaction::TYPE_DEFAULT_SORT: 81 - $object->setDefaultWorkboardSort($xaction->getNewValue()); 82 - return; 83 - case PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER: 84 - $object->setDefaultWorkboardFilter($xaction->getNewValue()); 85 - return; 86 71 case PhabricatorProjectTransaction::TYPE_BACKGROUND: 87 72 $object->setWorkboardBackgroundColor($xaction->getNewValue()); 88 73 return; ··· 99 84 $new = $xaction->getNewValue(); 100 85 101 86 switch ($xaction->getTransactionType()) { 102 - case PhabricatorProjectTransaction::TYPE_DEFAULT_SORT: 103 - case PhabricatorProjectTransaction::TYPE_DEFAULT_FILTER: 104 87 case PhabricatorProjectTransaction::TYPE_BACKGROUND: 105 88 return; 106 89 }
+3 -16
src/applications/project/storage/PhabricatorProjectTransaction.php
··· 3 3 final class PhabricatorProjectTransaction 4 4 extends PhabricatorModularTransaction { 5 5 6 - const TYPE_DEFAULT_SORT = 'project:sort'; 7 - const TYPE_DEFAULT_FILTER = 'project:filter'; 8 6 const TYPE_BACKGROUND = 'project:background'; 9 7 10 8 // NOTE: This is deprecated, members are just a normal edge now. ··· 60 58 61 59 public function shouldHideForFeed() { 62 60 switch ($this->getTransactionType()) { 63 - case self::TYPE_DEFAULT_SORT: 64 - case self::TYPE_DEFAULT_FILTER: 65 61 case self::TYPE_BACKGROUND: 66 62 return true; 67 63 } 68 64 69 65 return parent::shouldHideForFeed(); 70 66 } 67 + 71 68 72 69 public function shouldHideForMail(array $xactions) { 73 70 switch ($this->getTransactionType()) { 74 71 case PhabricatorProjectWorkboardTransaction::TRANSACTIONTYPE: 75 - case self::TYPE_DEFAULT_SORT: 76 - case self::TYPE_DEFAULT_FILTER: 72 + case PhabricatorProjectSortTransaction::TRANSACTIONTYPE: 73 + case PhabricatorProjectFilterTransaction::TRANSACTIONTYPE: 77 74 case self::TYPE_BACKGROUND: 78 75 return true; 79 76 } ··· 139 136 } 140 137 } 141 138 break; 142 - 143 - case self::TYPE_DEFAULT_SORT: 144 - return pht( 145 - '%s changed the default sort order for the project workboard.', 146 - $author_handle); 147 - 148 - case self::TYPE_DEFAULT_FILTER: 149 - return pht( 150 - '%s changed the default filter for the project workboard.', 151 - $author_handle); 152 139 153 140 case self::TYPE_BACKGROUND: 154 141 return pht(
+26
src/applications/project/xaction/PhabricatorProjectFilterTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectFilterTransaction 4 + extends PhabricatorProjectTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'project:filter'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getDefaultWorkboardFilter(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setDefaultWorkboardFilter($value); 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + '%s changed the default filter for the project workboard.', 19 + $this->renderAuthor()); 20 + } 21 + 22 + public function shouldHide() { 23 + return true; 24 + } 25 + 26 + }
+26
src/applications/project/xaction/PhabricatorProjectSortTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectSortTransaction 4 + extends PhabricatorProjectTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'project:sort'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getDefaultWorkboardSort(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setDefaultWorkboardSort($value); 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + '%s changed the default sort order for the project workboard.', 19 + $this->renderAuthor()); 20 + } 21 + 22 + public function shouldHide() { 23 + return true; 24 + } 25 + 26 + }