Page MenuHomePhabricator

D17992.id43268.diff
No OneTemporary

D17992.id43268.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1652,6 +1652,7 @@
'NuanceQueueEditEngine' => 'applications/nuance/editor/NuanceQueueEditEngine.php',
'NuanceQueueEditor' => 'applications/nuance/editor/NuanceQueueEditor.php',
'NuanceQueueListController' => 'applications/nuance/controller/NuanceQueueListController.php',
+ 'NuanceQueueNameTransaction' => 'applications/nuance/xaction/NuanceQueueNameTransaction.php',
'NuanceQueuePHIDType' => 'applications/nuance/phid/NuanceQueuePHIDType.php',
'NuanceQueueQuery' => 'applications/nuance/query/NuanceQueueQuery.php',
'NuanceQueueSearchEngine' => 'applications/nuance/query/NuanceQueueSearchEngine.php',
@@ -6762,6 +6763,7 @@
'NuanceQueueEditEngine' => 'PhabricatorEditEngine',
'NuanceQueueEditor' => 'PhabricatorApplicationTransactionEditor',
'NuanceQueueListController' => 'NuanceQueueController',
+ 'NuanceQueueNameTransaction' => 'NuanceQueueTransactionType',
'NuanceQueuePHIDType' => 'PhabricatorPHIDType',
'NuanceQueueQuery' => 'NuanceQuery',
'NuanceQueueSearchEngine' => 'PhabricatorApplicationSearchEngine',
diff --git a/src/applications/nuance/editor/NuanceQueueEditEngine.php b/src/applications/nuance/editor/NuanceQueueEditEngine.php
--- a/src/applications/nuance/editor/NuanceQueueEditEngine.php
+++ b/src/applications/nuance/editor/NuanceQueueEditEngine.php
@@ -75,7 +75,7 @@
->setKey('name')
->setLabel(pht('Name'))
->setDescription(pht('Name of the queue.'))
- ->setTransactionType(NuanceQueueTransaction::TYPE_NAME)
+ ->setTransactionType(NuanceQueueNameTransaction::TRANSACTIONTYPE)
->setIsRequired(true)
->setValue($object->getName()),
);
diff --git a/src/applications/nuance/editor/NuanceQueueEditor.php b/src/applications/nuance/editor/NuanceQueueEditor.php
--- a/src/applications/nuance/editor/NuanceQueueEditor.php
+++ b/src/applications/nuance/editor/NuanceQueueEditor.php
@@ -14,89 +14,10 @@
public function getTransactionTypes() {
$types = parent::getTransactionTypes();
- $types[] = NuanceQueueTransaction::TYPE_NAME;
-
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
return $types;
}
- protected function getCustomTransactionOldValue(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceQueueTransaction::TYPE_NAME:
- return $object->getName();
- }
-
- return parent::getCustomTransactionOldValue($object, $xaction);
- }
-
- protected function getCustomTransactionNewValue(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceQueueTransaction::TYPE_NAME:
- return $xaction->getNewValue();
- }
-
- return parent::getCustomTransactionNewValue($object, $xaction);
- }
-
- protected function applyCustomInternalTransaction(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceQueueTransaction::TYPE_NAME:
- $object->setName($xaction->getNewValue());
- break;
- }
- }
-
- protected function applyCustomExternalTransaction(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceQueueTransaction::TYPE_NAME:
- return;
- }
-
- return parent::applyCustomExternalTransaction($object, $xaction);
- }
-
- protected function validateTransaction(
- PhabricatorLiskDAO $object,
- $type,
- array $xactions) {
-
- $errors = parent::validateTransaction($object, $type, $xactions);
-
- switch ($type) {
- case NuanceQueueTransaction::TYPE_NAME:
- $missing = $this->validateIsEmptyTextField(
- $object->getName(),
- $xactions);
-
- if ($missing) {
- $error = new PhabricatorApplicationTransactionValidationError(
- $type,
- pht('Required'),
- pht('A queue must have a name.'),
- nonempty(last($xactions), null));
-
- $error->setIsMissingFieldError(true);
- $errors[] = $error;
- }
- break;
- }
-
- return $errors;
- }
-
-
}
diff --git a/src/applications/nuance/storage/NuanceQueueTransaction.php b/src/applications/nuance/storage/NuanceQueueTransaction.php
--- a/src/applications/nuance/storage/NuanceQueueTransaction.php
+++ b/src/applications/nuance/storage/NuanceQueueTransaction.php
@@ -2,8 +2,6 @@
final class NuanceQueueTransaction extends NuanceTransaction {
- const TYPE_NAME = 'nuance.queue.name';
-
public function getApplicationTransactionType() {
return NuanceQueuePHIDType::TYPECONST;
}
@@ -13,29 +11,7 @@
}
public function getBaseTransactionClass() {
- return 'NuanceSourceTransactionType';
+ return 'NuanceQueueTransactionType';
}
- public function getTitle() {
- $old = $this->getOldValue();
- $new = $this->getNewValue();
- $type = $this->getTransactionType();
-
- $author_phid = $this->getAuthorPHID();
-
- switch ($type) {
- case PhabricatorTransactions::TYPE_CREATE:
- return pht(
- '%s created this queue.',
- $this->renderHandleLink($author_phid));
- case self::TYPE_NAME:
- return pht(
- '%s renamed this queue from "%s" to "%s".',
- $this->renderHandleLink($author_phid),
- $old,
- $new);
- }
-
- return parent::getTitle();
- }
}
diff --git a/src/applications/nuance/xaction/NuanceQueueNameTransaction.php b/src/applications/nuance/xaction/NuanceQueueNameTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceQueueNameTransaction.php
@@ -0,0 +1,47 @@
+<?php
+
+final class NuanceQueueNameTransaction
+ extends NuanceQueueTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.queue.name';
+
+ public function generateOldValue($object) {
+ return $object->getName();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setName($value);
+ }
+
+ public function getTitle() {
+ return pht(
+ '%s renamed this queue from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderOldValue(),
+ $this->renderNewValue());
+ }
+
+ public function validateTransactions($object, array $xactions) {
+ $errors = array();
+
+ if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
+ $errors[] = $this->newRequiredError(
+ pht('Queues must have a name.'));
+ }
+
+ $max_length = $object->getColumnMaximumByteLength('name');
+ foreach ($xactions as $xaction) {
+ $new_value = $xaction->getNewValue();
+ $new_length = strlen($new_value);
+ if ($new_length > $max_length) {
+ $errors[] = $this->newInvalidError(
+ pht(
+ 'Queue names must not be longer than %s character(s).',
+ new PhutilNumber($max_length)));
+ }
+ }
+
+ return $errors;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 2:30 AM (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7705218
Default Alt Text
D17992.id43268.diff (7 KB)

Event Timeline