Migate more of Pholio to Modular Transaction
Summary: Another Franken-transaction. Adds transactions for ImageName and MockName. Adds transaction-level validation for presence of mock name; removed same from edit controller. Removes `PholioTransaction::getRemarkupBodyForFeed()`, which appears to be dead code since that method isn't defined on any other types. Test Plan: made a bunch of changes to pholio mocks and images and observed expected results Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, chad, epriestley Differential Revision: https://secure.phabricator.com/D17865
This commit is contained in:
@@ -4359,10 +4359,11 @@ phutil_register_library_map(array(
|
|||||||
'PholioDAO' => 'applications/pholio/storage/PholioDAO.php',
|
'PholioDAO' => 'applications/pholio/storage/PholioDAO.php',
|
||||||
'PholioDefaultEditCapability' => 'applications/pholio/capability/PholioDefaultEditCapability.php',
|
'PholioDefaultEditCapability' => 'applications/pholio/capability/PholioDefaultEditCapability.php',
|
||||||
'PholioDefaultViewCapability' => 'applications/pholio/capability/PholioDefaultViewCapability.php',
|
'PholioDefaultViewCapability' => 'applications/pholio/capability/PholioDefaultViewCapability.php',
|
||||||
'PholioDescriptionTransaction' => 'applications/pholio/xaction/PholioDescriptionTransaction.php',
|
|
||||||
'PholioImage' => 'applications/pholio/storage/PholioImage.php',
|
'PholioImage' => 'applications/pholio/storage/PholioImage.php',
|
||||||
|
'PholioImageNameTransaction' => 'applications/pholio/xaction/PholioImageNameTransaction.php',
|
||||||
'PholioImagePHIDType' => 'applications/pholio/phid/PholioImagePHIDType.php',
|
'PholioImagePHIDType' => 'applications/pholio/phid/PholioImagePHIDType.php',
|
||||||
'PholioImageQuery' => 'applications/pholio/query/PholioImageQuery.php',
|
'PholioImageQuery' => 'applications/pholio/query/PholioImageQuery.php',
|
||||||
|
'PholioImageTransactionType' => 'applications/pholio/xaction/PholioImageTransactionType.php',
|
||||||
'PholioImageUploadController' => 'applications/pholio/controller/PholioImageUploadController.php',
|
'PholioImageUploadController' => 'applications/pholio/controller/PholioImageUploadController.php',
|
||||||
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
|
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
|
||||||
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
|
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
|
||||||
@@ -4371,6 +4372,7 @@ phutil_register_library_map(array(
|
|||||||
'PholioMockAuthorHeraldField' => 'applications/pholio/herald/PholioMockAuthorHeraldField.php',
|
'PholioMockAuthorHeraldField' => 'applications/pholio/herald/PholioMockAuthorHeraldField.php',
|
||||||
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
|
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
|
||||||
'PholioMockDescriptionHeraldField' => 'applications/pholio/herald/PholioMockDescriptionHeraldField.php',
|
'PholioMockDescriptionHeraldField' => 'applications/pholio/herald/PholioMockDescriptionHeraldField.php',
|
||||||
|
'PholioMockDescriptionTransaction' => 'applications/pholio/xaction/PholioMockDescriptionTransaction.php',
|
||||||
'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php',
|
'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php',
|
||||||
'PholioMockEditor' => 'applications/pholio/editor/PholioMockEditor.php',
|
'PholioMockEditor' => 'applications/pholio/editor/PholioMockEditor.php',
|
||||||
'PholioMockEmbedView' => 'applications/pholio/view/PholioMockEmbedView.php',
|
'PholioMockEmbedView' => 'applications/pholio/view/PholioMockEmbedView.php',
|
||||||
@@ -4383,12 +4385,14 @@ phutil_register_library_map(array(
|
|||||||
'PholioMockListController' => 'applications/pholio/controller/PholioMockListController.php',
|
'PholioMockListController' => 'applications/pholio/controller/PholioMockListController.php',
|
||||||
'PholioMockMailReceiver' => 'applications/pholio/mail/PholioMockMailReceiver.php',
|
'PholioMockMailReceiver' => 'applications/pholio/mail/PholioMockMailReceiver.php',
|
||||||
'PholioMockNameHeraldField' => 'applications/pholio/herald/PholioMockNameHeraldField.php',
|
'PholioMockNameHeraldField' => 'applications/pholio/herald/PholioMockNameHeraldField.php',
|
||||||
|
'PholioMockNameTransaction' => 'applications/pholio/xaction/PholioMockNameTransaction.php',
|
||||||
'PholioMockPHIDType' => 'applications/pholio/phid/PholioMockPHIDType.php',
|
'PholioMockPHIDType' => 'applications/pholio/phid/PholioMockPHIDType.php',
|
||||||
'PholioMockQuery' => 'applications/pholio/query/PholioMockQuery.php',
|
'PholioMockQuery' => 'applications/pholio/query/PholioMockQuery.php',
|
||||||
'PholioMockRelationship' => 'applications/pholio/relationships/PholioMockRelationship.php',
|
'PholioMockRelationship' => 'applications/pholio/relationships/PholioMockRelationship.php',
|
||||||
'PholioMockRelationshipSource' => 'applications/search/relationship/PholioMockRelationshipSource.php',
|
'PholioMockRelationshipSource' => 'applications/search/relationship/PholioMockRelationshipSource.php',
|
||||||
'PholioMockSearchEngine' => 'applications/pholio/query/PholioMockSearchEngine.php',
|
'PholioMockSearchEngine' => 'applications/pholio/query/PholioMockSearchEngine.php',
|
||||||
'PholioMockThumbGridView' => 'applications/pholio/view/PholioMockThumbGridView.php',
|
'PholioMockThumbGridView' => 'applications/pholio/view/PholioMockThumbGridView.php',
|
||||||
|
'PholioMockTransactionType' => 'applications/pholio/xaction/PholioMockTransactionType.php',
|
||||||
'PholioMockViewController' => 'applications/pholio/controller/PholioMockViewController.php',
|
'PholioMockViewController' => 'applications/pholio/controller/PholioMockViewController.php',
|
||||||
'PholioRemarkupRule' => 'applications/pholio/remarkup/PholioRemarkupRule.php',
|
'PholioRemarkupRule' => 'applications/pholio/remarkup/PholioRemarkupRule.php',
|
||||||
'PholioReplyHandler' => 'applications/pholio/mail/PholioReplyHandler.php',
|
'PholioReplyHandler' => 'applications/pholio/mail/PholioReplyHandler.php',
|
||||||
@@ -9896,14 +9900,15 @@ phutil_register_library_map(array(
|
|||||||
'PholioDAO' => 'PhabricatorLiskDAO',
|
'PholioDAO' => 'PhabricatorLiskDAO',
|
||||||
'PholioDefaultEditCapability' => 'PhabricatorPolicyCapability',
|
'PholioDefaultEditCapability' => 'PhabricatorPolicyCapability',
|
||||||
'PholioDefaultViewCapability' => 'PhabricatorPolicyCapability',
|
'PholioDefaultViewCapability' => 'PhabricatorPolicyCapability',
|
||||||
'PholioDescriptionTransaction' => 'PholioTransactionType',
|
|
||||||
'PholioImage' => array(
|
'PholioImage' => array(
|
||||||
'PholioDAO',
|
'PholioDAO',
|
||||||
'PhabricatorMarkupInterface',
|
'PhabricatorMarkupInterface',
|
||||||
'PhabricatorPolicyInterface',
|
'PhabricatorPolicyInterface',
|
||||||
),
|
),
|
||||||
|
'PholioImageNameTransaction' => 'PholioImageTransactionType',
|
||||||
'PholioImagePHIDType' => 'PhabricatorPHIDType',
|
'PholioImagePHIDType' => 'PhabricatorPHIDType',
|
||||||
'PholioImageQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PholioImageQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PholioImageTransactionType' => 'PholioTransactionType',
|
||||||
'PholioImageUploadController' => 'PholioController',
|
'PholioImageUploadController' => 'PholioController',
|
||||||
'PholioInlineController' => 'PholioController',
|
'PholioInlineController' => 'PholioController',
|
||||||
'PholioInlineListController' => 'PholioController',
|
'PholioInlineListController' => 'PholioController',
|
||||||
@@ -9925,6 +9930,7 @@ phutil_register_library_map(array(
|
|||||||
'PholioMockAuthorHeraldField' => 'PholioMockHeraldField',
|
'PholioMockAuthorHeraldField' => 'PholioMockHeraldField',
|
||||||
'PholioMockCommentController' => 'PholioController',
|
'PholioMockCommentController' => 'PholioController',
|
||||||
'PholioMockDescriptionHeraldField' => 'PholioMockHeraldField',
|
'PholioMockDescriptionHeraldField' => 'PholioMockHeraldField',
|
||||||
|
'PholioMockDescriptionTransaction' => 'PholioMockTransactionType',
|
||||||
'PholioMockEditController' => 'PholioController',
|
'PholioMockEditController' => 'PholioController',
|
||||||
'PholioMockEditor' => 'PhabricatorApplicationTransactionEditor',
|
'PholioMockEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'PholioMockEmbedView' => 'AphrontView',
|
'PholioMockEmbedView' => 'AphrontView',
|
||||||
@@ -9937,12 +9943,14 @@ phutil_register_library_map(array(
|
|||||||
'PholioMockListController' => 'PholioController',
|
'PholioMockListController' => 'PholioController',
|
||||||
'PholioMockMailReceiver' => 'PhabricatorObjectMailReceiver',
|
'PholioMockMailReceiver' => 'PhabricatorObjectMailReceiver',
|
||||||
'PholioMockNameHeraldField' => 'PholioMockHeraldField',
|
'PholioMockNameHeraldField' => 'PholioMockHeraldField',
|
||||||
|
'PholioMockNameTransaction' => 'PholioMockTransactionType',
|
||||||
'PholioMockPHIDType' => 'PhabricatorPHIDType',
|
'PholioMockPHIDType' => 'PhabricatorPHIDType',
|
||||||
'PholioMockQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PholioMockQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'PholioMockRelationship' => 'PhabricatorObjectRelationship',
|
'PholioMockRelationship' => 'PhabricatorObjectRelationship',
|
||||||
'PholioMockRelationshipSource' => 'PhabricatorObjectRelationshipSource',
|
'PholioMockRelationshipSource' => 'PhabricatorObjectRelationshipSource',
|
||||||
'PholioMockSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PholioMockSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'PholioMockThumbGridView' => 'AphrontView',
|
'PholioMockThumbGridView' => 'AphrontView',
|
||||||
|
'PholioMockTransactionType' => 'PholioTransactionType',
|
||||||
'PholioMockViewController' => 'PholioController',
|
'PholioMockViewController' => 'PholioController',
|
||||||
'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
||||||
'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ final class PholioMockEditController extends PholioController {
|
|||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
||||||
$type_name = PholioTransaction::TYPE_NAME;
|
$type_name = PholioMockNameTransaction::TRANSACTIONTYPE;
|
||||||
$type_desc = PholioDescriptionTransaction::TRANSACTIONTYPE;
|
$type_desc = PholioMockDescriptionTransaction::TRANSACTIONTYPE;
|
||||||
$type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
$type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
||||||
$type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
|
$type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
|
||||||
$type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
|
$type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
|
||||||
@@ -88,11 +88,6 @@ final class PholioMockEditController extends PholioController {
|
|||||||
$mock_xactions[$type_cc] = array('=' => $v_cc);
|
$mock_xactions[$type_cc] = array('=' => $v_cc);
|
||||||
$mock_xactions[$type_space] = $v_space;
|
$mock_xactions[$type_space] = $v_space;
|
||||||
|
|
||||||
if (!strlen($request->getStr('name'))) {
|
|
||||||
$e_name = pht('Required');
|
|
||||||
$errors[] = pht('You must give the mock a name.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$file_phids = $request->getArr('file_phids');
|
$file_phids = $request->getArr('file_phids');
|
||||||
if ($file_phids) {
|
if ($file_phids) {
|
||||||
$files = id(new PhabricatorFileQuery())
|
$files = id(new PhabricatorFileQuery())
|
||||||
@@ -173,7 +168,7 @@ final class PholioMockEditController extends PholioController {
|
|||||||
$posted_mock_images[] = $add_image;
|
$posted_mock_images[] = $add_image;
|
||||||
} else {
|
} else {
|
||||||
$xactions[] = id(new PholioTransaction())
|
$xactions[] = id(new PholioTransaction())
|
||||||
->setTransactionType(PholioTransaction::TYPE_IMAGE_NAME)
|
->setTransactionType(PholioImageNameTransaction::TRANSACTIONTYPE)
|
||||||
->setNewValue(
|
->setNewValue(
|
||||||
array($existing_image->getPHID() => $title));
|
array($existing_image->getPHID() => $title));
|
||||||
$xactions[] = id(new PholioTransaction())
|
$xactions[] = id(new PholioTransaction())
|
||||||
|
|||||||
@@ -29,12 +29,10 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
||||||
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
|
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
|
||||||
|
|
||||||
$types[] = PholioTransaction::TYPE_NAME;
|
|
||||||
$types[] = PholioTransaction::TYPE_STATUS;
|
$types[] = PholioTransaction::TYPE_STATUS;
|
||||||
$types[] = PholioTransaction::TYPE_INLINE;
|
$types[] = PholioTransaction::TYPE_INLINE;
|
||||||
|
|
||||||
$types[] = PholioTransaction::TYPE_IMAGE_FILE;
|
$types[] = PholioTransaction::TYPE_IMAGE_FILE;
|
||||||
$types[] = PholioTransaction::TYPE_IMAGE_NAME;
|
|
||||||
$types[] = PholioTransaction::TYPE_IMAGE_DESCRIPTION;
|
$types[] = PholioTransaction::TYPE_IMAGE_DESCRIPTION;
|
||||||
$types[] = PholioTransaction::TYPE_IMAGE_REPLACE;
|
$types[] = PholioTransaction::TYPE_IMAGE_REPLACE;
|
||||||
$types[] = PholioTransaction::TYPE_IMAGE_SEQUENCE;
|
$types[] = PholioTransaction::TYPE_IMAGE_SEQUENCE;
|
||||||
@@ -47,22 +45,11 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
PhabricatorApplicationTransaction $xaction) {
|
PhabricatorApplicationTransaction $xaction) {
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
switch ($xaction->getTransactionType()) {
|
||||||
case PholioTransaction::TYPE_NAME:
|
|
||||||
return $object->getName();
|
|
||||||
case PholioTransaction::TYPE_STATUS:
|
case PholioTransaction::TYPE_STATUS:
|
||||||
return $object->getStatus();
|
return $object->getStatus();
|
||||||
case PholioTransaction::TYPE_IMAGE_FILE:
|
case PholioTransaction::TYPE_IMAGE_FILE:
|
||||||
$images = $object->getImages();
|
$images = $object->getImages();
|
||||||
return mpull($images, 'getPHID');
|
return mpull($images, 'getPHID');
|
||||||
case PholioTransaction::TYPE_IMAGE_NAME:
|
|
||||||
$name = null;
|
|
||||||
$phid = null;
|
|
||||||
$image = $this->getImageForXaction($object, $xaction);
|
|
||||||
if ($image) {
|
|
||||||
$name = $image->getName();
|
|
||||||
$phid = $image->getPHID();
|
|
||||||
}
|
|
||||||
return array($phid => $name);
|
|
||||||
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
||||||
$description = null;
|
$description = null;
|
||||||
$phid = null;
|
$phid = null;
|
||||||
@@ -92,9 +79,7 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
PhabricatorApplicationTransaction $xaction) {
|
PhabricatorApplicationTransaction $xaction) {
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
switch ($xaction->getTransactionType()) {
|
||||||
case PholioTransaction::TYPE_NAME:
|
|
||||||
case PholioTransaction::TYPE_STATUS:
|
case PholioTransaction::TYPE_STATUS:
|
||||||
case PholioTransaction::TYPE_IMAGE_NAME:
|
|
||||||
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
||||||
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
|
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
|
||||||
return $xaction->getNewValue();
|
return $xaction->getNewValue();
|
||||||
@@ -205,12 +190,6 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
PhabricatorApplicationTransaction $xaction) {
|
PhabricatorApplicationTransaction $xaction) {
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
switch ($xaction->getTransactionType()) {
|
||||||
case PholioTransaction::TYPE_NAME:
|
|
||||||
$object->setName($xaction->getNewValue());
|
|
||||||
if ($object->getOriginalName() === null) {
|
|
||||||
$object->setOriginalName($xaction->getNewValue());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PholioTransaction::TYPE_STATUS:
|
case PholioTransaction::TYPE_STATUS:
|
||||||
$object->setStatus($xaction->getNewValue());
|
$object->setStatus($xaction->getNewValue());
|
||||||
break;
|
break;
|
||||||
@@ -263,12 +242,6 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
}
|
}
|
||||||
$object->attachImages($images);
|
$object->attachImages($images);
|
||||||
break;
|
break;
|
||||||
case PholioTransaction::TYPE_IMAGE_NAME:
|
|
||||||
$image = $this->getImageForXaction($object, $xaction);
|
|
||||||
$value = (string)head($xaction->getNewValue());
|
|
||||||
$image->setName($value);
|
|
||||||
$image->save();
|
|
||||||
break;
|
|
||||||
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
||||||
$image = $this->getImageForXaction($object, $xaction);
|
$image = $this->getImageForXaction($object, $xaction);
|
||||||
$value = (string)head($xaction->getNewValue());
|
$value = (string)head($xaction->getNewValue());
|
||||||
@@ -303,7 +276,6 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
|
|
||||||
$type = $u->getTransactionType();
|
$type = $u->getTransactionType();
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case PholioTransaction::TYPE_NAME:
|
|
||||||
case PholioTransaction::TYPE_STATUS:
|
case PholioTransaction::TYPE_STATUS:
|
||||||
return $v;
|
return $v;
|
||||||
case PholioTransaction::TYPE_IMAGE_REPLACE:
|
case PholioTransaction::TYPE_IMAGE_REPLACE:
|
||||||
@@ -315,7 +287,6 @@ final class PholioMockEditor extends PhabricatorApplicationTransactionEditor {
|
|||||||
break;
|
break;
|
||||||
case PholioTransaction::TYPE_IMAGE_FILE:
|
case PholioTransaction::TYPE_IMAGE_FILE:
|
||||||
return $this->mergePHIDOrEdgeTransactions($u, $v);
|
return $this->mergePHIDOrEdgeTransactions($u, $v);
|
||||||
case PholioTransaction::TYPE_IMAGE_NAME:
|
|
||||||
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
|
||||||
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
|
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
|
||||||
$raw_new_value_u = $u->getNewValue();
|
$raw_new_value_u = $u->getNewValue();
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ final class PhabricatorPholioMockTestDataGenerator
|
|||||||
|
|
||||||
// Accumulate Transactions
|
// Accumulate Transactions
|
||||||
$changes = array();
|
$changes = array();
|
||||||
$changes[PholioTransaction::TYPE_NAME] =
|
$changes[PholioMockNameTransaction::TRANSACTIONTYPE] =
|
||||||
$this->generateTitle();
|
$this->generateTitle();
|
||||||
$changes[PholioDescriptionTransaction::TRANSACTIONTYPE] =
|
$changes[PholioMockDescriptionTransaction::TRANSACTIONTYPE] =
|
||||||
$this->generateDescription();
|
$this->generateDescription();
|
||||||
$changes[PhabricatorTransactions::TYPE_VIEW_POLICY] =
|
$changes[PhabricatorTransactions::TYPE_VIEW_POLICY] =
|
||||||
PhabricatorPolicies::POLICY_PUBLIC;
|
PhabricatorPolicies::POLICY_PUBLIC;
|
||||||
|
|||||||
@@ -3,12 +3,10 @@
|
|||||||
final class PholioTransaction extends PhabricatorModularTransaction {
|
final class PholioTransaction extends PhabricatorModularTransaction {
|
||||||
|
|
||||||
// Edits to the high level mock
|
// Edits to the high level mock
|
||||||
const TYPE_NAME = 'name';
|
|
||||||
const TYPE_STATUS = 'status';
|
const TYPE_STATUS = 'status';
|
||||||
|
|
||||||
// Edits to images within the mock
|
// Edits to images within the mock
|
||||||
const TYPE_IMAGE_FILE = 'image-file';
|
const TYPE_IMAGE_FILE = 'image-file';
|
||||||
const TYPE_IMAGE_NAME= 'image-name';
|
|
||||||
const TYPE_IMAGE_DESCRIPTION = 'image-description';
|
const TYPE_IMAGE_DESCRIPTION = 'image-description';
|
||||||
const TYPE_IMAGE_REPLACE = 'image-replace';
|
const TYPE_IMAGE_REPLACE = 'image-replace';
|
||||||
const TYPE_IMAGE_SEQUENCE = 'image-sequence';
|
const TYPE_IMAGE_SEQUENCE = 'image-sequence';
|
||||||
@@ -57,7 +55,7 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
$phids[] = $old;
|
$phids[] = $old;
|
||||||
break;
|
break;
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
case self::TYPE_IMAGE_NAME:
|
case PholioImageNameTransaction::TRANSACTIONTYPE:
|
||||||
case self::TYPE_IMAGE_SEQUENCE:
|
case self::TYPE_IMAGE_SEQUENCE:
|
||||||
$phids[] = key($new);
|
$phids[] = key($new);
|
||||||
break;
|
break;
|
||||||
@@ -70,7 +68,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
$old = $this->getOldValue();
|
$old = $this->getOldValue();
|
||||||
|
|
||||||
switch ($this->getTransactionType()) {
|
switch ($this->getTransactionType()) {
|
||||||
case self::TYPE_IMAGE_NAME:
|
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
return ($old === array(null => null));
|
return ($old === array(null => null));
|
||||||
// this is boring / silly to surface; changing sequence is NBD
|
// this is boring / silly to surface; changing sequence is NBD
|
||||||
@@ -89,14 +86,12 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
switch ($this->getTransactionType()) {
|
switch ($this->getTransactionType()) {
|
||||||
case self::TYPE_INLINE:
|
case self::TYPE_INLINE:
|
||||||
return 'fa-comment';
|
return 'fa-comment';
|
||||||
case self::TYPE_NAME:
|
|
||||||
case self::TYPE_STATUS:
|
case self::TYPE_STATUS:
|
||||||
if ($new == PholioMock::STATUS_CLOSED) {
|
if ($new == PholioMock::STATUS_CLOSED) {
|
||||||
return 'fa-ban';
|
return 'fa-ban';
|
||||||
} else {
|
} else {
|
||||||
return 'fa-check';
|
return 'fa-check';
|
||||||
}
|
}
|
||||||
case self::TYPE_IMAGE_NAME:
|
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
case self::TYPE_IMAGE_SEQUENCE:
|
case self::TYPE_IMAGE_SEQUENCE:
|
||||||
return 'fa-pencil';
|
return 'fa-pencil';
|
||||||
@@ -118,9 +113,9 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
case self::TYPE_STATUS:
|
case self::TYPE_STATUS:
|
||||||
$tags[] = self::MAILTAG_STATUS;
|
$tags[] = self::MAILTAG_STATUS;
|
||||||
break;
|
break;
|
||||||
case self::TYPE_NAME:
|
case PholioMockNameTransaction::TRANSACTIONTYPE:
|
||||||
case PholioDescriptionTransaction::TRANSACTIONTYPE:
|
case PholioMockDescriptionTransaction::TRANSACTIONTYPE:
|
||||||
case self::TYPE_IMAGE_NAME:
|
case PholioImageNameTransaction::TRANSACTIONTYPE:
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
case self::TYPE_IMAGE_SEQUENCE:
|
case self::TYPE_IMAGE_SEQUENCE:
|
||||||
case self::TYPE_IMAGE_FILE:
|
case self::TYPE_IMAGE_FILE:
|
||||||
@@ -142,20 +137,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
|
|
||||||
$type = $this->getTransactionType();
|
$type = $this->getTransactionType();
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case self::TYPE_NAME:
|
|
||||||
if ($old === null) {
|
|
||||||
return pht(
|
|
||||||
'%s created "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$new);
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s renamed this mock from "%s" to "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$old,
|
|
||||||
$new);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case self::TYPE_STATUS:
|
case self::TYPE_STATUS:
|
||||||
if ($new == PholioMock::STATUS_CLOSED) {
|
if ($new == PholioMock::STATUS_CLOSED) {
|
||||||
return pht(
|
return pht(
|
||||||
@@ -213,15 +194,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
$this->renderHandleList($rem));
|
$this->renderHandleList($rem));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case self::TYPE_IMAGE_NAME:
|
|
||||||
return pht(
|
|
||||||
'%s renamed an image (%s) from "%s" to "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$this->renderHandleLink(key($new)),
|
|
||||||
reset($old),
|
|
||||||
reset($new));
|
|
||||||
break;
|
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
return pht(
|
return pht(
|
||||||
'%s updated an image\'s (%s) description.',
|
'%s updated an image\'s (%s) description.',
|
||||||
@@ -248,21 +220,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
|
|
||||||
$type = $this->getTransactionType();
|
$type = $this->getTransactionType();
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case self::TYPE_NAME:
|
|
||||||
if ($old === null) {
|
|
||||||
return pht(
|
|
||||||
'%s created %s.',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$this->renderHandleLink($object_phid));
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s renamed %s from "%s" to "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$this->renderHandleLink($object_phid),
|
|
||||||
$old,
|
|
||||||
$new);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case self::TYPE_STATUS:
|
case self::TYPE_STATUS:
|
||||||
if ($new == PholioMock::STATUS_CLOSED) {
|
if ($new == PholioMock::STATUS_CLOSED) {
|
||||||
return pht(
|
return pht(
|
||||||
@@ -289,12 +246,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
$this->renderHandleLink($author_phid),
|
$this->renderHandleLink($author_phid),
|
||||||
$this->renderHandleLink($object_phid));
|
$this->renderHandleLink($object_phid));
|
||||||
break;
|
break;
|
||||||
case self::TYPE_IMAGE_NAME:
|
|
||||||
return pht(
|
|
||||||
'%s updated the image names of %s.',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$this->renderHandleLink($object_phid));
|
|
||||||
break;
|
|
||||||
case self::TYPE_IMAGE_DESCRIPTION:
|
case self::TYPE_IMAGE_DESCRIPTION:
|
||||||
return pht(
|
return pht(
|
||||||
'%s updated image descriptions of %s.',
|
'%s updated image descriptions of %s.',
|
||||||
@@ -312,23 +263,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
return parent::getTitleForFeed();
|
return parent::getTitleForFeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRemarkupBodyForFeed(PhabricatorFeedStory $story) {
|
|
||||||
$text = null;
|
|
||||||
switch ($this->getTransactionType()) {
|
|
||||||
case self::TYPE_NAME:
|
|
||||||
if ($this->getOldValue() === null) {
|
|
||||||
$mock = $story->getPrimaryObject();
|
|
||||||
$text = $mock->getDescription();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case self::TYPE_INLINE:
|
|
||||||
$text = $this->getComment()->getContent();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getColor() {
|
public function getColor() {
|
||||||
$old = $this->getOldValue();
|
$old = $this->getOldValue();
|
||||||
$new = $this->getNewValue();
|
$new = $this->getNewValue();
|
||||||
@@ -340,10 +274,6 @@ final class PholioTransaction extends PhabricatorModularTransaction {
|
|||||||
} else {
|
} else {
|
||||||
return PhabricatorTransactions::COLOR_GREEN;
|
return PhabricatorTransactions::COLOR_GREEN;
|
||||||
}
|
}
|
||||||
case self::TYPE_NAME:
|
|
||||||
if ($old === null) {
|
|
||||||
return PhabricatorTransactions::COLOR_GREEN;
|
|
||||||
}
|
|
||||||
case self::TYPE_IMAGE_REPLACE:
|
case self::TYPE_IMAGE_REPLACE:
|
||||||
return PhabricatorTransactions::COLOR_YELLOW;
|
return PhabricatorTransactions::COLOR_YELLOW;
|
||||||
case self::TYPE_IMAGE_FILE:
|
case self::TYPE_IMAGE_FILE:
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PholioImageNameTransaction
|
||||||
|
extends PholioImageTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'image-name';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
$name = null;
|
||||||
|
$phid = null;
|
||||||
|
$image = $this->getImageForXaction($object);
|
||||||
|
if ($image) {
|
||||||
|
$name = $image->getName();
|
||||||
|
$phid = $image->getPHID();
|
||||||
|
}
|
||||||
|
return array($phid => $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$image = $this->getImageForXaction($object);
|
||||||
|
$value = (string)head($this->getNewValue());
|
||||||
|
$image->setName($value);
|
||||||
|
$image->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
return pht(
|
||||||
|
'%s renamed an image (%s) from %s to %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderHandle(key($new)),
|
||||||
|
$this->renderValue($old),
|
||||||
|
$this->renderValue($new));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitleForFeed() {
|
||||||
|
return pht(
|
||||||
|
'%s updated the image names of %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getIcon() {
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
if ($new == PholioMock::STATUS_CLOSED) {
|
||||||
|
return 'fa-ban';
|
||||||
|
} else {
|
||||||
|
return 'fa-check';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function mergeTransactions(
|
||||||
|
$object,
|
||||||
|
PhabricatorApplicationTransaction $u,
|
||||||
|
PhabricatorApplicationTransaction $v) {
|
||||||
|
|
||||||
|
$raw_new_value_u = $u->getNewValue();
|
||||||
|
$raw_new_value_v = $v->getNewValue();
|
||||||
|
$phid_u = head_key($raw_new_value_u);
|
||||||
|
$phid_v = head_key($raw_new_value_v);
|
||||||
|
if ($phid_u == $phid_v) {
|
||||||
|
return $v;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function shouldHide() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
return ($old === array(null => null));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validateTransactions($object, array $xactions) {
|
||||||
|
$errors = array();
|
||||||
|
|
||||||
|
$max_length = $object->getColumnMaximumByteLength('name');
|
||||||
|
foreach ($xactions as $xaction) {
|
||||||
|
$new_value = head(array_values($xaction->getNewValue()));
|
||||||
|
$new_length = strlen($new_value);
|
||||||
|
if ($new_length > $max_length) {
|
||||||
|
$errors[] = $this->newInvalidError(
|
||||||
|
pht(
|
||||||
|
'Mock image names must not be longer than %s character(s).',
|
||||||
|
new PhutilNumber($max_length)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
abstract class PholioImageTransactionType
|
||||||
|
extends PholioTransactionType {
|
||||||
|
|
||||||
|
protected function getImageForXaction(PholioMock $mock) {
|
||||||
|
$raw_new_value = $this->getNewValue();
|
||||||
|
$image_phid = head_key($raw_new_value);
|
||||||
|
$images = $mock->getImages();
|
||||||
|
foreach ($images as $image) {
|
||||||
|
if ($image->getPHID() == $image_phid) {
|
||||||
|
return $image;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
final class PholioDescriptionTransaction
|
final class PholioMockDescriptionTransaction
|
||||||
extends PholioTransactionType {
|
extends PholioMockTransactionType {
|
||||||
|
|
||||||
const TRANSACTIONTYPE = 'description';
|
const TRANSACTIONTYPE = 'description';
|
||||||
|
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PholioMockNameTransaction
|
||||||
|
extends PholioMockTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'name';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setName($value);
|
||||||
|
if ($object->getOriginalName() === null) {
|
||||||
|
$object->setOriginalName($this->getNewValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
if ($old === null) {
|
||||||
|
return pht(
|
||||||
|
'%s created %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderValue($new));
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s renamed this mock from %s to %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderValue($old),
|
||||||
|
$this->renderValue($new));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitleForFeed() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
if ($old === null) {
|
||||||
|
return pht(
|
||||||
|
'%s created %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderObject());
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s renamed %s from %s to %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderObject(),
|
||||||
|
$this->renderValue($old),
|
||||||
|
$this->renderValue($new));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getColor() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
|
||||||
|
if ($old === null) {
|
||||||
|
return PhabricatorTransactions::COLOR_GREEN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::getColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validateTransactions($object, array $xactions) {
|
||||||
|
$errors = array();
|
||||||
|
|
||||||
|
if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
|
||||||
|
$errors[] = $this->newRequiredError(pht('Mocks 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(
|
||||||
|
'Mock names must not be longer than %s character(s).',
|
||||||
|
new PhutilNumber($max_length)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
abstract class PholioMockTransactionType
|
||||||
|
extends PholioTransactionType {}
|
||||||
Reference in New Issue
Block a user