Page MenuHomePhabricator

D17864.id42959.diff
No OneTemporary

D17864.id42959.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
@@ -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 @@
<?php
-final class PholioTransaction extends PhabricatorApplicationTransaction {
+final class PholioTransaction extends PhabricatorModularTransaction {
// Edits to the high level mock
const TYPE_NAME = 'name';
- const TYPE_DESCRIPTION = 'description';
const TYPE_STATUS = 'status';
// Edits to images within the mock
@@ -26,6 +25,10 @@
return 'pholio';
}
+ public function getBaseTransactionClass() {
+ return 'PholioTransactionType';
+ }
+
public function getApplicationTransactionType() {
return PholioMockPHIDType::TYPECONST;
}
@@ -67,8 +70,6 @@
$old = $this->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 @@
+<?php
+
+final class PholioDescriptionTransaction
+ extends PholioTransactionType {
+
+ const TRANSACTIONTYPE = 'description';
+
+ public function generateOldValue($object) {
+ return $object->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,18 @@
+<?php
+
+abstract class PholioTransactionType
+ extends PhabricatorModularTransactionType {
+
+ protected function getImageForXaction(PholioMock $mock) {
+ $raw_new_value = $this->getNewValue();
+ $image_phid = key($raw_new_value);
+ $images = $mock->getImages();
+ foreach ($images as $image) {
+ if ($image->getPHID() == $image_phid) {
+ return $image;
+ }
+ }
+ return null;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 5:49 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7709444
Default Alt Text
D17864.id42959.diff (10 KB)

Event Timeline