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

Convert Nuance queues to modular transactions

Summary:
Ref T12738. Swaps queues over.

Also fixes a typo from D17990.

Test Plan: Renamed a queue.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12738

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

+51 -105
+2
src/__phutil_library_map__.php
··· 1652 1652 'NuanceQueueEditEngine' => 'applications/nuance/editor/NuanceQueueEditEngine.php', 1653 1653 'NuanceQueueEditor' => 'applications/nuance/editor/NuanceQueueEditor.php', 1654 1654 'NuanceQueueListController' => 'applications/nuance/controller/NuanceQueueListController.php', 1655 + 'NuanceQueueNameTransaction' => 'applications/nuance/xaction/NuanceQueueNameTransaction.php', 1655 1656 'NuanceQueuePHIDType' => 'applications/nuance/phid/NuanceQueuePHIDType.php', 1656 1657 'NuanceQueueQuery' => 'applications/nuance/query/NuanceQueueQuery.php', 1657 1658 'NuanceQueueSearchEngine' => 'applications/nuance/query/NuanceQueueSearchEngine.php', ··· 6765 6766 'NuanceQueueEditEngine' => 'PhabricatorEditEngine', 6766 6767 'NuanceQueueEditor' => 'PhabricatorApplicationTransactionEditor', 6767 6768 'NuanceQueueListController' => 'NuanceQueueController', 6769 + 'NuanceQueueNameTransaction' => 'NuanceQueueTransactionType', 6768 6770 'NuanceQueuePHIDType' => 'PhabricatorPHIDType', 6769 6771 'NuanceQueueQuery' => 'NuanceQuery', 6770 6772 'NuanceQueueSearchEngine' => 'PhabricatorApplicationSearchEngine',
+1 -1
src/applications/nuance/editor/NuanceQueueEditEngine.php
··· 75 75 ->setKey('name') 76 76 ->setLabel(pht('Name')) 77 77 ->setDescription(pht('Name of the queue.')) 78 - ->setTransactionType(NuanceQueueTransaction::TYPE_NAME) 78 + ->setTransactionType(NuanceQueueNameTransaction::TRANSACTIONTYPE) 79 79 ->setIsRequired(true) 80 80 ->setValue($object->getName()), 81 81 );
-79
src/applications/nuance/editor/NuanceQueueEditor.php
··· 14 14 public function getTransactionTypes() { 15 15 $types = parent::getTransactionTypes(); 16 16 17 - $types[] = NuanceQueueTransaction::TYPE_NAME; 18 - 19 17 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 20 18 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 21 19 22 20 return $types; 23 21 } 24 - 25 - protected function getCustomTransactionOldValue( 26 - PhabricatorLiskDAO $object, 27 - PhabricatorApplicationTransaction $xaction) { 28 - 29 - switch ($xaction->getTransactionType()) { 30 - case NuanceQueueTransaction::TYPE_NAME: 31 - return $object->getName(); 32 - } 33 - 34 - return parent::getCustomTransactionOldValue($object, $xaction); 35 - } 36 - 37 - protected function getCustomTransactionNewValue( 38 - PhabricatorLiskDAO $object, 39 - PhabricatorApplicationTransaction $xaction) { 40 - 41 - switch ($xaction->getTransactionType()) { 42 - case NuanceQueueTransaction::TYPE_NAME: 43 - return $xaction->getNewValue(); 44 - } 45 - 46 - return parent::getCustomTransactionNewValue($object, $xaction); 47 - } 48 - 49 - protected function applyCustomInternalTransaction( 50 - PhabricatorLiskDAO $object, 51 - PhabricatorApplicationTransaction $xaction) { 52 - 53 - switch ($xaction->getTransactionType()) { 54 - case NuanceQueueTransaction::TYPE_NAME: 55 - $object->setName($xaction->getNewValue()); 56 - break; 57 - } 58 - } 59 - 60 - protected function applyCustomExternalTransaction( 61 - PhabricatorLiskDAO $object, 62 - PhabricatorApplicationTransaction $xaction) { 63 - 64 - switch ($xaction->getTransactionType()) { 65 - case NuanceQueueTransaction::TYPE_NAME: 66 - return; 67 - } 68 - 69 - return parent::applyCustomExternalTransaction($object, $xaction); 70 - } 71 - 72 - protected function validateTransaction( 73 - PhabricatorLiskDAO $object, 74 - $type, 75 - array $xactions) { 76 - 77 - $errors = parent::validateTransaction($object, $type, $xactions); 78 - 79 - switch ($type) { 80 - case NuanceQueueTransaction::TYPE_NAME: 81 - $missing = $this->validateIsEmptyTextField( 82 - $object->getName(), 83 - $xactions); 84 - 85 - if ($missing) { 86 - $error = new PhabricatorApplicationTransactionValidationError( 87 - $type, 88 - pht('Required'), 89 - pht('A queue must have a name.'), 90 - nonempty(last($xactions), null)); 91 - 92 - $error->setIsMissingFieldError(true); 93 - $errors[] = $error; 94 - } 95 - break; 96 - } 97 - 98 - return $errors; 99 - } 100 - 101 22 102 23 }
+1 -25
src/applications/nuance/storage/NuanceQueueTransaction.php
··· 2 2 3 3 final class NuanceQueueTransaction extends NuanceTransaction { 4 4 5 - const TYPE_NAME = 'nuance.queue.name'; 6 - 7 5 public function getApplicationTransactionType() { 8 6 return NuanceQueuePHIDType::TYPECONST; 9 7 } ··· 13 11 } 14 12 15 13 public function getBaseTransactionClass() { 16 - return 'NuanceSourceTransactionType'; 14 + return 'NuanceQueueTransactionType'; 17 15 } 18 16 19 - public function getTitle() { 20 - $old = $this->getOldValue(); 21 - $new = $this->getNewValue(); 22 - $type = $this->getTransactionType(); 23 - 24 - $author_phid = $this->getAuthorPHID(); 25 - 26 - switch ($type) { 27 - case PhabricatorTransactions::TYPE_CREATE: 28 - return pht( 29 - '%s created this queue.', 30 - $this->renderHandleLink($author_phid)); 31 - case self::TYPE_NAME: 32 - return pht( 33 - '%s renamed this queue from "%s" to "%s".', 34 - $this->renderHandleLink($author_phid), 35 - $old, 36 - $new); 37 - } 38 - 39 - return parent::getTitle(); 40 - } 41 17 }
+47
src/applications/nuance/xaction/NuanceQueueNameTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceQueueNameTransaction 4 + extends NuanceQueueTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.queue.name'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getName(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setName($value); 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + '%s renamed this queue from %s to %s.', 19 + $this->renderAuthor(), 20 + $this->renderOldValue(), 21 + $this->renderNewValue()); 22 + } 23 + 24 + public function validateTransactions($object, array $xactions) { 25 + $errors = array(); 26 + 27 + if ($this->isEmptyTextTransaction($object->getName(), $xactions)) { 28 + $errors[] = $this->newRequiredError( 29 + pht('Queues must have a name.')); 30 + } 31 + 32 + $max_length = $object->getColumnMaximumByteLength('name'); 33 + foreach ($xactions as $xaction) { 34 + $new_value = $xaction->getNewValue(); 35 + $new_length = strlen($new_value); 36 + if ($new_length > $max_length) { 37 + $errors[] = $this->newInvalidError( 38 + pht( 39 + 'Queue names must not be longer than %s character(s).', 40 + new PhutilNumber($max_length))); 41 + } 42 + } 43 + 44 + return $errors; 45 + } 46 + 47 + }