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 @@ -4357,6 +4357,7 @@ 'PholioDAO' => 'applications/pholio/storage/PholioDAO.php', 'PholioDefaultEditCapability' => 'applications/pholio/capability/PholioDefaultEditCapability.php', 'PholioDefaultViewCapability' => 'applications/pholio/capability/PholioDefaultViewCapability.php', + 'PholioDescriptionTransaction' => 'applications/pholio/xaction/PholioDescriptionTransaction.php', 'PholioImage' => 'applications/pholio/storage/PholioImage.php', 'PholioImagePHIDType' => 'applications/pholio/phid/PholioImagePHIDType.php', 'PholioImageQuery' => 'applications/pholio/query/PholioImageQuery.php', @@ -4393,6 +4394,7 @@ 'PholioTransaction' => 'applications/pholio/storage/PholioTransaction.php', 'PholioTransactionComment' => 'applications/pholio/storage/PholioTransactionComment.php', 'PholioTransactionQuery' => 'applications/pholio/query/PholioTransactionQuery.php', + 'PholioTransactionType' => 'applications/pholio/xaction/PholioTransactionType.php', 'PholioTransactionView' => 'applications/pholio/view/PholioTransactionView.php', 'PholioUploadedImageView' => 'applications/pholio/view/PholioUploadedImageView.php', 'PhortuneAccount' => 'applications/phortune/storage/PhortuneAccount.php', @@ -9890,6 +9892,7 @@ 'PholioDAO' => 'PhabricatorLiskDAO', 'PholioDefaultEditCapability' => 'PhabricatorPolicyCapability', 'PholioDefaultViewCapability' => 'PhabricatorPolicyCapability', + 'PholioDescriptionTransaction' => 'PholioTransactionType', 'PholioImage' => array( 'PholioDAO', 'PhabricatorMarkupInterface', @@ -9940,9 +9943,10 @@ 'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule', 'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PholioSchemaSpec' => 'PhabricatorConfigSchemaSpec', - 'PholioTransaction' => 'PhabricatorApplicationTransaction', + 'PholioTransaction' => 'PhabricatorModularTransaction', 'PholioTransactionComment' => 'PhabricatorApplicationTransactionComment', 'PholioTransactionQuery' => 'PhabricatorApplicationTransactionQuery', + 'PholioTransactionType' => 'PhabricatorModularTransactionType', 'PholioTransactionView' => 'PhabricatorApplicationTransactionView', 'PholioUploadedImageView' => 'AphrontView', 'PhortuneAccount' => array( diff --git a/src/applications/pholio/controller/PholioMockEditController.php b/src/applications/pholio/controller/PholioMockEditController.php --- a/src/applications/pholio/controller/PholioMockEditController.php +++ b/src/applications/pholio/controller/PholioMockEditController.php @@ -66,7 +66,7 @@ $xactions = array(); $type_name = PholioTransaction::TYPE_NAME; - $type_desc = PholioTransaction::TYPE_DESCRIPTION; + $type_desc = PholioDescriptionTransaction::TRANSACTIONTYPE; $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY; $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY; $type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS; diff --git a/src/applications/pholio/editor/PholioMockEditor.php b/src/applications/pholio/editor/PholioMockEditor.php --- a/src/applications/pholio/editor/PholioMockEditor.php +++ b/src/applications/pholio/editor/PholioMockEditor.php @@ -30,7 +30,6 @@ $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; $types[] = PholioTransaction::TYPE_NAME; - $types[] = PholioTransaction::TYPE_DESCRIPTION; $types[] = PholioTransaction::TYPE_STATUS; $types[] = PholioTransaction::TYPE_INLINE; @@ -50,8 +49,6 @@ switch ($xaction->getTransactionType()) { case PholioTransaction::TYPE_NAME: return $object->getName(); - case PholioTransaction::TYPE_DESCRIPTION: - return $object->getDescription(); case PholioTransaction::TYPE_STATUS: return $object->getStatus(); case PholioTransaction::TYPE_IMAGE_FILE: @@ -96,7 +93,6 @@ switch ($xaction->getTransactionType()) { case PholioTransaction::TYPE_NAME: - case PholioTransaction::TYPE_DESCRIPTION: case PholioTransaction::TYPE_STATUS: case PholioTransaction::TYPE_IMAGE_NAME: case PholioTransaction::TYPE_IMAGE_DESCRIPTION: @@ -215,9 +211,6 @@ $object->setOriginalName($xaction->getNewValue()); } break; - case PholioTransaction::TYPE_DESCRIPTION: - $object->setDescription($xaction->getNewValue()); - break; case PholioTransaction::TYPE_STATUS: $object->setStatus($xaction->getNewValue()); break; @@ -311,7 +304,6 @@ $type = $u->getTransactionType(); switch ($type) { case PholioTransaction::TYPE_NAME: - case PholioTransaction::TYPE_DESCRIPTION: case PholioTransaction::TYPE_STATUS: return $v; case PholioTransaction::TYPE_IMAGE_REPLACE: diff --git a/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php b/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php --- a/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php +++ b/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php @@ -24,7 +24,7 @@ $changes = array(); $changes[PholioTransaction::TYPE_NAME] = $this->generateTitle(); - $changes[PholioTransaction::TYPE_DESCRIPTION] = + $changes[PholioDescriptionTransaction::TRANSACTIONTYPE] = $this->generateDescription(); $changes[PhabricatorTransactions::TYPE_VIEW_POLICY] = PhabricatorPolicies::POLICY_PUBLIC; diff --git a/src/applications/pholio/storage/PholioTransaction.php b/src/applications/pholio/storage/PholioTransaction.php --- a/src/applications/pholio/storage/PholioTransaction.php +++ b/src/applications/pholio/storage/PholioTransaction.php @@ -1,10 +1,9 @@ getOldValue(); switch ($this->getTransactionType()) { - case self::TYPE_DESCRIPTION: - return ($old === null); case self::TYPE_IMAGE_NAME: case self::TYPE_IMAGE_DESCRIPTION: return ($old === array(null => null)); @@ -89,7 +90,6 @@ case self::TYPE_INLINE: return 'fa-comment'; case self::TYPE_NAME: - case self::TYPE_DESCRIPTION: case self::TYPE_STATUS: if ($new == PholioMock::STATUS_CLOSED) { return 'fa-ban'; @@ -119,7 +119,7 @@ $tags[] = self::MAILTAG_STATUS; break; case self::TYPE_NAME: - case self::TYPE_DESCRIPTION: + case PholioDescriptionTransaction::TRANSACTIONTYPE: case self::TYPE_IMAGE_NAME: case self::TYPE_IMAGE_DESCRIPTION: case self::TYPE_IMAGE_SEQUENCE: @@ -156,11 +156,6 @@ $new); } break; - case self::TYPE_DESCRIPTION: - return pht( - "%s updated the mock's description.", - $this->renderHandleLink($author_phid)); - break; case self::TYPE_STATUS: if ($new == PholioMock::STATUS_CLOSED) { return pht( @@ -268,12 +263,6 @@ $new); } break; - case self::TYPE_DESCRIPTION: - return pht( - '%s updated the description for %s.', - $this->renderHandleLink($author_phid), - $this->renderHandleLink($object_phid)); - break; case self::TYPE_STATUS: if ($new == PholioMock::STATUS_CLOSED) { return pht( @@ -340,30 +329,6 @@ return $text; } - public function hasChangeDetails() { - switch ($this->getTransactionType()) { - case self::TYPE_DESCRIPTION: - case self::TYPE_IMAGE_DESCRIPTION: - return true; - } - return parent::hasChangeDetails(); - } - - public function renderChangeDetails(PhabricatorUser $viewer) { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - if ($this->getTransactionType() == - self::TYPE_IMAGE_DESCRIPTION) { - $old = reset($old); - $new = reset($new); - } - - return $this->renderTextCorpusChangeDetails( - $viewer, - $old, - $new); - } - public function getColor() { $old = $this->getOldValue(); $new = $this->getNewValue(); diff --git a/src/applications/pholio/xaction/PholioDescriptionTransaction.php b/src/applications/pholio/xaction/PholioDescriptionTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/pholio/xaction/PholioDescriptionTransaction.php @@ -0,0 +1,47 @@ +getDescription(); + } + + public function applyInternalEffects($object, $value) { + $object->setDescription($value); + } + + public function getTitle() { + return pht( + "%s updated the mock's description.", + $this->renderAuthor()); + } + + public function getTitleForFeed() { + return pht( + '%s updated the description for %s.', + $this->renderAuthor(), + $this->renderObject()); + } + + public function shouldHide() { + $old = $this->getOldValue(); + return ($old === null); + } + + public function hasChangeDetailView() { + return true; + } + + public function newChangeDetailView() { + $viewer = $this->getViewer(); + + return id(new PhabricatorApplicationTransactionTextDiffDetailView()) + ->setViewer($viewer) + ->setOldText($this->getOldValue()) + ->setNewText($this->getNewValue()); + } + +} diff --git a/src/applications/pholio/xaction/PholioTransactionType.php b/src/applications/pholio/xaction/PholioTransactionType.php new file mode 100644 --- /dev/null +++ b/src/applications/pholio/xaction/PholioTransactionType.php @@ -0,0 +1,4 @@ +