mirror of
https://we.phorge.it/source/phorge.git
synced 2025-04-09 10:58:34 +02:00
Modularize PhabricatorEditEngineConfigurationTransaction
Summary: Ref T13319. Ref PHI1302. Migrate `PhabricatorEditEngineConfigurationTransaction` to modular transactions and add some additional transaction rendering to make these edits less opaque. Test Plan: Hit all the form edit controllers, viewed resulting transaction timeline. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T13319 Differential Revision: https://secure.phabricator.com/D20595
This commit is contained in:
parent
c0dc411d23
commit
6b9f4a918b
28 changed files with 701 additions and 591 deletions
|
@ -2172,9 +2172,11 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorApplicationTransactionCommentView' => 'applications/transactions/view/PhabricatorApplicationTransactionCommentView.php',
|
'PhabricatorApplicationTransactionCommentView' => 'applications/transactions/view/PhabricatorApplicationTransactionCommentView.php',
|
||||||
'PhabricatorApplicationTransactionController' => 'applications/transactions/controller/PhabricatorApplicationTransactionController.php',
|
'PhabricatorApplicationTransactionController' => 'applications/transactions/controller/PhabricatorApplicationTransactionController.php',
|
||||||
'PhabricatorApplicationTransactionDetailController' => 'applications/transactions/controller/PhabricatorApplicationTransactionDetailController.php',
|
'PhabricatorApplicationTransactionDetailController' => 'applications/transactions/controller/PhabricatorApplicationTransactionDetailController.php',
|
||||||
|
'PhabricatorApplicationTransactionDetailView' => 'applications/transactions/view/PhabricatorApplicationTransactionDetailView.php',
|
||||||
'PhabricatorApplicationTransactionEditor' => 'applications/transactions/editor/PhabricatorApplicationTransactionEditor.php',
|
'PhabricatorApplicationTransactionEditor' => 'applications/transactions/editor/PhabricatorApplicationTransactionEditor.php',
|
||||||
'PhabricatorApplicationTransactionFeedStory' => 'applications/transactions/feed/PhabricatorApplicationTransactionFeedStory.php',
|
'PhabricatorApplicationTransactionFeedStory' => 'applications/transactions/feed/PhabricatorApplicationTransactionFeedStory.php',
|
||||||
'PhabricatorApplicationTransactionInterface' => 'applications/transactions/interface/PhabricatorApplicationTransactionInterface.php',
|
'PhabricatorApplicationTransactionInterface' => 'applications/transactions/interface/PhabricatorApplicationTransactionInterface.php',
|
||||||
|
'PhabricatorApplicationTransactionJSONDiffDetailView' => 'applications/transactions/view/PhabricatorApplicationTransactionJSONDiffDetailView.php',
|
||||||
'PhabricatorApplicationTransactionNoEffectException' => 'applications/transactions/exception/PhabricatorApplicationTransactionNoEffectException.php',
|
'PhabricatorApplicationTransactionNoEffectException' => 'applications/transactions/exception/PhabricatorApplicationTransactionNoEffectException.php',
|
||||||
'PhabricatorApplicationTransactionNoEffectResponse' => 'applications/transactions/response/PhabricatorApplicationTransactionNoEffectResponse.php',
|
'PhabricatorApplicationTransactionNoEffectResponse' => 'applications/transactions/response/PhabricatorApplicationTransactionNoEffectResponse.php',
|
||||||
'PhabricatorApplicationTransactionPublishWorker' => 'applications/transactions/worker/PhabricatorApplicationTransactionPublishWorker.php',
|
'PhabricatorApplicationTransactionPublishWorker' => 'applications/transactions/worker/PhabricatorApplicationTransactionPublishWorker.php',
|
||||||
|
@ -3151,16 +3153,26 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEditEngineConfigurationTransactionQuery' => 'applications/transactions/query/PhabricatorEditEngineConfigurationTransactionQuery.php',
|
'PhabricatorEditEngineConfigurationTransactionQuery' => 'applications/transactions/query/PhabricatorEditEngineConfigurationTransactionQuery.php',
|
||||||
'PhabricatorEditEngineConfigurationViewController' => 'applications/transactions/controller/PhabricatorEditEngineConfigurationViewController.php',
|
'PhabricatorEditEngineConfigurationViewController' => 'applications/transactions/controller/PhabricatorEditEngineConfigurationViewController.php',
|
||||||
'PhabricatorEditEngineController' => 'applications/transactions/controller/PhabricatorEditEngineController.php',
|
'PhabricatorEditEngineController' => 'applications/transactions/controller/PhabricatorEditEngineController.php',
|
||||||
|
'PhabricatorEditEngineCreateOrderTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineCreateOrderTransaction.php',
|
||||||
'PhabricatorEditEngineDatasource' => 'applications/transactions/typeahead/PhabricatorEditEngineDatasource.php',
|
'PhabricatorEditEngineDatasource' => 'applications/transactions/typeahead/PhabricatorEditEngineDatasource.php',
|
||||||
|
'PhabricatorEditEngineDefaultCreateTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineDefaultCreateTransaction.php',
|
||||||
'PhabricatorEditEngineDefaultLock' => 'applications/transactions/editengine/PhabricatorEditEngineDefaultLock.php',
|
'PhabricatorEditEngineDefaultLock' => 'applications/transactions/editengine/PhabricatorEditEngineDefaultLock.php',
|
||||||
|
'PhabricatorEditEngineDefaultTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineDefaultTransaction.php',
|
||||||
|
'PhabricatorEditEngineDisableTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineDisableTransaction.php',
|
||||||
|
'PhabricatorEditEngineEditOrderTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineEditOrderTransaction.php',
|
||||||
'PhabricatorEditEngineExtension' => 'applications/transactions/engineextension/PhabricatorEditEngineExtension.php',
|
'PhabricatorEditEngineExtension' => 'applications/transactions/engineextension/PhabricatorEditEngineExtension.php',
|
||||||
'PhabricatorEditEngineExtensionModule' => 'applications/transactions/engineextension/PhabricatorEditEngineExtensionModule.php',
|
'PhabricatorEditEngineExtensionModule' => 'applications/transactions/engineextension/PhabricatorEditEngineExtensionModule.php',
|
||||||
|
'PhabricatorEditEngineIsEditTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineIsEditTransaction.php',
|
||||||
'PhabricatorEditEngineListController' => 'applications/transactions/controller/PhabricatorEditEngineListController.php',
|
'PhabricatorEditEngineListController' => 'applications/transactions/controller/PhabricatorEditEngineListController.php',
|
||||||
'PhabricatorEditEngineLock' => 'applications/transactions/editengine/PhabricatorEditEngineLock.php',
|
'PhabricatorEditEngineLock' => 'applications/transactions/editengine/PhabricatorEditEngineLock.php',
|
||||||
'PhabricatorEditEngineLockableInterface' => 'applications/transactions/editengine/PhabricatorEditEngineLockableInterface.php',
|
'PhabricatorEditEngineLockableInterface' => 'applications/transactions/editengine/PhabricatorEditEngineLockableInterface.php',
|
||||||
|
'PhabricatorEditEngineLocksTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineLocksTransaction.php',
|
||||||
'PhabricatorEditEngineMFAEngine' => 'applications/transactions/editengine/PhabricatorEditEngineMFAEngine.php',
|
'PhabricatorEditEngineMFAEngine' => 'applications/transactions/editengine/PhabricatorEditEngineMFAEngine.php',
|
||||||
'PhabricatorEditEngineMFAInterface' => 'applications/transactions/editengine/PhabricatorEditEngineMFAInterface.php',
|
'PhabricatorEditEngineMFAInterface' => 'applications/transactions/editengine/PhabricatorEditEngineMFAInterface.php',
|
||||||
|
'PhabricatorEditEngineNameTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineNameTransaction.php',
|
||||||
|
'PhabricatorEditEngineOrderTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineOrderTransaction.php',
|
||||||
'PhabricatorEditEnginePointsCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEnginePointsCommentAction.php',
|
'PhabricatorEditEnginePointsCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEnginePointsCommentAction.php',
|
||||||
|
'PhabricatorEditEnginePreambleTransaction' => 'applications/transactions/xaction/PhabricatorEditEnginePreambleTransaction.php',
|
||||||
'PhabricatorEditEngineProfileMenuItem' => 'applications/search/menuitem/PhabricatorEditEngineProfileMenuItem.php',
|
'PhabricatorEditEngineProfileMenuItem' => 'applications/search/menuitem/PhabricatorEditEngineProfileMenuItem.php',
|
||||||
'PhabricatorEditEngineQuery' => 'applications/transactions/query/PhabricatorEditEngineQuery.php',
|
'PhabricatorEditEngineQuery' => 'applications/transactions/query/PhabricatorEditEngineQuery.php',
|
||||||
'PhabricatorEditEngineSearchEngine' => 'applications/transactions/query/PhabricatorEditEngineSearchEngine.php',
|
'PhabricatorEditEngineSearchEngine' => 'applications/transactions/query/PhabricatorEditEngineSearchEngine.php',
|
||||||
|
@ -3171,7 +3183,9 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEditEngineSubtypeInterface' => 'applications/transactions/editengine/PhabricatorEditEngineSubtypeInterface.php',
|
'PhabricatorEditEngineSubtypeInterface' => 'applications/transactions/editengine/PhabricatorEditEngineSubtypeInterface.php',
|
||||||
'PhabricatorEditEngineSubtypeMap' => 'applications/transactions/editengine/PhabricatorEditEngineSubtypeMap.php',
|
'PhabricatorEditEngineSubtypeMap' => 'applications/transactions/editengine/PhabricatorEditEngineSubtypeMap.php',
|
||||||
'PhabricatorEditEngineSubtypeTestCase' => 'applications/transactions/editengine/__tests__/PhabricatorEditEngineSubtypeTestCase.php',
|
'PhabricatorEditEngineSubtypeTestCase' => 'applications/transactions/editengine/__tests__/PhabricatorEditEngineSubtypeTestCase.php',
|
||||||
|
'PhabricatorEditEngineSubtypeTransaction' => 'applications/transactions/xaction/PhabricatorEditEngineSubtypeTransaction.php',
|
||||||
'PhabricatorEditEngineTokenizerCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEngineTokenizerCommentAction.php',
|
'PhabricatorEditEngineTokenizerCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEngineTokenizerCommentAction.php',
|
||||||
|
'PhabricatorEditEngineTransactionType' => 'applications/transactions/xaction/PhabricatorEditEngineTransactionType.php',
|
||||||
'PhabricatorEditField' => 'applications/transactions/editfield/PhabricatorEditField.php',
|
'PhabricatorEditField' => 'applications/transactions/editfield/PhabricatorEditField.php',
|
||||||
'PhabricatorEditPage' => 'applications/transactions/editengine/PhabricatorEditPage.php',
|
'PhabricatorEditPage' => 'applications/transactions/editengine/PhabricatorEditPage.php',
|
||||||
'PhabricatorEditType' => 'applications/transactions/edittype/PhabricatorEditType.php',
|
'PhabricatorEditType' => 'applications/transactions/edittype/PhabricatorEditType.php',
|
||||||
|
@ -8091,8 +8105,10 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorApplicationTransactionCommentView' => 'AphrontView',
|
'PhabricatorApplicationTransactionCommentView' => 'AphrontView',
|
||||||
'PhabricatorApplicationTransactionController' => 'PhabricatorController',
|
'PhabricatorApplicationTransactionController' => 'PhabricatorController',
|
||||||
'PhabricatorApplicationTransactionDetailController' => 'PhabricatorApplicationTransactionController',
|
'PhabricatorApplicationTransactionDetailController' => 'PhabricatorApplicationTransactionController',
|
||||||
|
'PhabricatorApplicationTransactionDetailView' => 'AphrontView',
|
||||||
'PhabricatorApplicationTransactionEditor' => 'PhabricatorEditor',
|
'PhabricatorApplicationTransactionEditor' => 'PhabricatorEditor',
|
||||||
'PhabricatorApplicationTransactionFeedStory' => 'PhabricatorFeedStory',
|
'PhabricatorApplicationTransactionFeedStory' => 'PhabricatorFeedStory',
|
||||||
|
'PhabricatorApplicationTransactionJSONDiffDetailView' => 'PhabricatorApplicationTransactionDetailView',
|
||||||
'PhabricatorApplicationTransactionNoEffectException' => 'Exception',
|
'PhabricatorApplicationTransactionNoEffectException' => 'Exception',
|
||||||
'PhabricatorApplicationTransactionNoEffectResponse' => 'AphrontProxyResponse',
|
'PhabricatorApplicationTransactionNoEffectResponse' => 'AphrontProxyResponse',
|
||||||
'PhabricatorApplicationTransactionPublishWorker' => 'PhabricatorWorker',
|
'PhabricatorApplicationTransactionPublishWorker' => 'PhabricatorWorker',
|
||||||
|
@ -8103,7 +8119,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorApplicationTransactionShowOlderController' => 'PhabricatorApplicationTransactionController',
|
'PhabricatorApplicationTransactionShowOlderController' => 'PhabricatorApplicationTransactionController',
|
||||||
'PhabricatorApplicationTransactionStructureException' => 'Exception',
|
'PhabricatorApplicationTransactionStructureException' => 'Exception',
|
||||||
'PhabricatorApplicationTransactionTemplatedCommentQuery' => 'PhabricatorApplicationTransactionCommentQuery',
|
'PhabricatorApplicationTransactionTemplatedCommentQuery' => 'PhabricatorApplicationTransactionCommentQuery',
|
||||||
'PhabricatorApplicationTransactionTextDiffDetailView' => 'AphrontView',
|
'PhabricatorApplicationTransactionTextDiffDetailView' => 'PhabricatorApplicationTransactionDetailView',
|
||||||
'PhabricatorApplicationTransactionTransactionPHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorApplicationTransactionTransactionPHIDType' => 'PhabricatorPHIDType',
|
||||||
'PhabricatorApplicationTransactionType' => 'PhabricatorModularTransactionType',
|
'PhabricatorApplicationTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'PhabricatorApplicationTransactionValidationError' => 'Phobject',
|
'PhabricatorApplicationTransactionValidationError' => 'Phobject',
|
||||||
|
@ -9228,18 +9244,28 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEditEngineConfigurationSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorEditEngineConfigurationSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'PhabricatorEditEngineConfigurationSortController' => 'PhabricatorEditEngineController',
|
'PhabricatorEditEngineConfigurationSortController' => 'PhabricatorEditEngineController',
|
||||||
'PhabricatorEditEngineConfigurationSubtypeController' => 'PhabricatorEditEngineController',
|
'PhabricatorEditEngineConfigurationSubtypeController' => 'PhabricatorEditEngineController',
|
||||||
'PhabricatorEditEngineConfigurationTransaction' => 'PhabricatorApplicationTransaction',
|
'PhabricatorEditEngineConfigurationTransaction' => 'PhabricatorModularTransaction',
|
||||||
'PhabricatorEditEngineConfigurationTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorEditEngineConfigurationTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorEditEngineConfigurationViewController' => 'PhabricatorEditEngineController',
|
'PhabricatorEditEngineConfigurationViewController' => 'PhabricatorEditEngineController',
|
||||||
'PhabricatorEditEngineController' => 'PhabricatorApplicationTransactionController',
|
'PhabricatorEditEngineController' => 'PhabricatorApplicationTransactionController',
|
||||||
|
'PhabricatorEditEngineCreateOrderTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineDatasource' => 'PhabricatorTypeaheadDatasource',
|
'PhabricatorEditEngineDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
|
'PhabricatorEditEngineDefaultCreateTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineDefaultLock' => 'PhabricatorEditEngineLock',
|
'PhabricatorEditEngineDefaultLock' => 'PhabricatorEditEngineLock',
|
||||||
|
'PhabricatorEditEngineDefaultTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
|
'PhabricatorEditEngineDisableTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
|
'PhabricatorEditEngineEditOrderTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineExtension' => 'Phobject',
|
'PhabricatorEditEngineExtension' => 'Phobject',
|
||||||
'PhabricatorEditEngineExtensionModule' => 'PhabricatorConfigModule',
|
'PhabricatorEditEngineExtensionModule' => 'PhabricatorConfigModule',
|
||||||
|
'PhabricatorEditEngineIsEditTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineListController' => 'PhabricatorEditEngineController',
|
'PhabricatorEditEngineListController' => 'PhabricatorEditEngineController',
|
||||||
'PhabricatorEditEngineLock' => 'Phobject',
|
'PhabricatorEditEngineLock' => 'Phobject',
|
||||||
|
'PhabricatorEditEngineLocksTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineMFAEngine' => 'Phobject',
|
'PhabricatorEditEngineMFAEngine' => 'Phobject',
|
||||||
|
'PhabricatorEditEngineNameTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
|
'PhabricatorEditEngineOrderTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEnginePointsCommentAction' => 'PhabricatorEditEngineCommentAction',
|
'PhabricatorEditEnginePointsCommentAction' => 'PhabricatorEditEngineCommentAction',
|
||||||
|
'PhabricatorEditEnginePreambleTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
'PhabricatorEditEngineProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
||||||
'PhabricatorEditEngineQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorEditEngineQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'PhabricatorEditEngineSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorEditEngineSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
|
@ -9249,7 +9275,9 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEditEngineSubtype' => 'Phobject',
|
'PhabricatorEditEngineSubtype' => 'Phobject',
|
||||||
'PhabricatorEditEngineSubtypeMap' => 'Phobject',
|
'PhabricatorEditEngineSubtypeMap' => 'Phobject',
|
||||||
'PhabricatorEditEngineSubtypeTestCase' => 'PhabricatorTestCase',
|
'PhabricatorEditEngineSubtypeTestCase' => 'PhabricatorTestCase',
|
||||||
|
'PhabricatorEditEngineSubtypeTransaction' => 'PhabricatorEditEngineTransactionType',
|
||||||
'PhabricatorEditEngineTokenizerCommentAction' => 'PhabricatorEditEngineCommentAction',
|
'PhabricatorEditEngineTokenizerCommentAction' => 'PhabricatorEditEngineCommentAction',
|
||||||
|
'PhabricatorEditEngineTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'PhabricatorEditField' => 'Phobject',
|
'PhabricatorEditField' => 'Phobject',
|
||||||
'PhabricatorEditPage' => 'Phobject',
|
'PhabricatorEditPage' => 'Phobject',
|
||||||
'PhabricatorEditType' => 'Phobject',
|
'PhabricatorEditType' => 'Phobject',
|
||||||
|
|
|
@ -40,17 +40,10 @@ final class HeraldRuleEditTransaction
|
||||||
public function newChangeDetailView() {
|
public function newChangeDetailView() {
|
||||||
$viewer = $this->getViewer();
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
$old = $this->getOldValue();
|
return id(new PhabricatorApplicationTransactionJSONDiffDetailView())
|
||||||
$new = $this->getNewValue();
|
|
||||||
|
|
||||||
$json = new PhutilJSON();
|
|
||||||
$old_json = $json->encodeFormatted($old);
|
|
||||||
$new_json = $json->encodeFormatted($new);
|
|
||||||
|
|
||||||
return id(new PhabricatorApplicationTransactionTextDiffDetailView())
|
|
||||||
->setViewer($viewer)
|
->setViewer($viewer)
|
||||||
->setOldText($old_json)
|
->setOld($this->getOldValue())
|
||||||
->setNewText($new_json);
|
->setNew($this->getNewValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ final class PhabricatorEditEngineConfigurationDefaultCreateController
|
||||||
$key = $config->getIdentifier();
|
$key = $config->getIdentifier();
|
||||||
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
||||||
|
|
||||||
$type = PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE;
|
$type = PhabricatorEditEngineDefaultCreateTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
|
@ -52,7 +52,7 @@ final class PhabricatorEditEngineConfigurationDefaultsController
|
||||||
$field->readValueFromSubmit($request);
|
$field->readValueFromSubmit($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
$type = PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT;
|
$type = PhabricatorEditEngineDefaultTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ final class PhabricatorEditEngineConfigurationDisableController
|
||||||
$key = $config->getIdentifier();
|
$key = $config->getIdentifier();
|
||||||
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
||||||
|
|
||||||
$type = PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE;
|
$type = PhabricatorEditEngineDisableTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
|
@ -15,8 +15,7 @@ final class PhabricatorEditEngineConfigurationIsEditController
|
||||||
$key = $config->getIdentifier();
|
$key = $config->getIdentifier();
|
||||||
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
$cancel_uri = "/transactions/editengine/{$engine_key}/view/{$key}/";
|
||||||
|
|
||||||
$type = PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT;
|
$type = PhabricatorEditEngineIsEditTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,7 @@ final class PhabricatorEditEngineConfigurationLockController
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
||||||
$locks = $request->getArr('locks');
|
$locks = $request->getArr('locks');
|
||||||
$type_locks = PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS;
|
$type_locks = PhabricatorEditEngineLocksTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
||||||
->setTransactionType($type_locks)
|
->setTransactionType($type_locks)
|
||||||
->setNewValue($locks);
|
->setNewValue($locks);
|
||||||
|
|
|
@ -31,8 +31,7 @@ final class PhabricatorEditEngineConfigurationReorderController
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
$key_order = $request->getStrList('keyOrder');
|
$key_order = $request->getStrList('keyOrder');
|
||||||
|
|
||||||
$type_order = PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER;
|
$type_order = PhabricatorEditEngineOrderTransaction::TRANSACTIONTYPE;
|
||||||
|
|
||||||
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
||||||
->setTransactionType($type_order)
|
->setTransactionType($type_order)
|
||||||
->setNewValue($key_order);
|
->setNewValue($key_order);
|
||||||
|
|
|
@ -70,10 +70,10 @@ final class PhabricatorEditEngineConfigurationSortController
|
||||||
|
|
||||||
if ($is_create) {
|
if ($is_create) {
|
||||||
$xaction_type =
|
$xaction_type =
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER;
|
PhabricatorEditEngineCreateOrderTransaction::TRANSACTIONTYPE;
|
||||||
} else {
|
} else {
|
||||||
$xaction_type =
|
$xaction_type =
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER;
|
PhabricatorEditEngineEditOrderTransaction::TRANSACTIONTYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
||||||
|
|
|
@ -35,9 +35,7 @@ final class PhabricatorEditEngineConfigurationSubtypeController
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
|
||||||
$subtype = $request->getStr('subtype');
|
$subtype = $request->getStr('subtype');
|
||||||
$type_subtype =
|
$type_subtype = PhabricatorEditEngineSubtypeTransaction::TRANSACTIONTYPE;
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE;
|
|
||||||
|
|
||||||
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
$xactions[] = id(new PhabricatorEditEngineConfigurationTransaction())
|
||||||
->setTransactionType($type_subtype)
|
->setTransactionType($type_subtype)
|
||||||
->setNewValue($subtype);
|
->setNewValue($subtype);
|
||||||
|
|
|
@ -99,14 +99,14 @@ final class PhabricatorEditEngineConfigurationEditEngine
|
||||||
->setLabel(pht('Name'))
|
->setLabel(pht('Name'))
|
||||||
->setDescription(pht('Name of the form.'))
|
->setDescription(pht('Name of the form.'))
|
||||||
->setTransactionType(
|
->setTransactionType(
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_NAME)
|
PhabricatorEditEngineNameTransaction::TRANSACTIONTYPE)
|
||||||
->setValue($object->getName()),
|
->setValue($object->getName()),
|
||||||
id(new PhabricatorRemarkupEditField())
|
id(new PhabricatorRemarkupEditField())
|
||||||
->setKey('preamble')
|
->setKey('preamble')
|
||||||
->setLabel(pht('Preamble'))
|
->setLabel(pht('Preamble'))
|
||||||
->setDescription(pht('Optional instructions, shown above the form.'))
|
->setDescription(pht('Optional instructions, shown above the form.'))
|
||||||
->setTransactionType(
|
->setTransactionType(
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE)
|
PhabricatorEditEnginePreambleTransaction::TRANSACTIONTYPE)
|
||||||
->setValue($object->getPreamble()),
|
->setValue($object->getPreamble()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,191 +13,9 @@ final class PhabricatorEditEngineConfigurationEditor
|
||||||
|
|
||||||
public function getTransactionTypes() {
|
public function getTransactionTypes() {
|
||||||
$types = parent::getTransactionTypes();
|
$types = parent::getTransactionTypes();
|
||||||
|
|
||||||
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
|
||||||
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_NAME;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE;
|
|
||||||
$types[] =
|
|
||||||
PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE;
|
|
||||||
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER;
|
|
||||||
$types[] = PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER;
|
|
||||||
|
|
||||||
return $types;
|
return $types;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function validateTransaction(
|
|
||||||
PhabricatorLiskDAO $object,
|
|
||||||
$type,
|
|
||||||
array $xactions) {
|
|
||||||
|
|
||||||
$errors = parent::validateTransaction($object, $type, $xactions);
|
|
||||||
switch ($type) {
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_NAME:
|
|
||||||
$missing = $this->validateIsEmptyTextField(
|
|
||||||
$object->getName(),
|
|
||||||
$xactions);
|
|
||||||
|
|
||||||
if ($missing) {
|
|
||||||
$error = new PhabricatorApplicationTransactionValidationError(
|
|
||||||
$type,
|
|
||||||
pht('Required'),
|
|
||||||
pht('Form name is required.'),
|
|
||||||
nonempty(last($xactions), null));
|
|
||||||
|
|
||||||
$error->setIsMissingFieldError(true);
|
|
||||||
$errors[] = $error;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE:
|
|
||||||
if ($xactions) {
|
|
||||||
$map = $object->getEngine()
|
|
||||||
->setViewer($this->getActor())
|
|
||||||
->newSubtypeMap();
|
|
||||||
foreach ($xactions as $xaction) {
|
|
||||||
$new = $xaction->getNewValue();
|
|
||||||
|
|
||||||
if ($map->isValidSubtype($new)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$errors[] = new PhabricatorApplicationTransactionValidationError(
|
|
||||||
$type,
|
|
||||||
pht('Invalid'),
|
|
||||||
pht('Subtype "%s" is not a valid subtype.', $new),
|
|
||||||
$xaction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getCustomTransactionOldValue(
|
|
||||||
PhabricatorLiskDAO $object,
|
|
||||||
PhabricatorApplicationTransaction $xaction) {
|
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_NAME:
|
|
||||||
return $object->getName();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE;
|
|
||||||
return $object->getPreamble();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER:
|
|
||||||
return $object->getFieldOrder();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT:
|
|
||||||
$field_key = $xaction->getMetadataValue('field.key');
|
|
||||||
return $object->getFieldDefault($field_key);
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS:
|
|
||||||
return $object->getFieldLocks();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE:
|
|
||||||
return $object->getSubtype();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE:
|
|
||||||
return (int)$object->getIsDefault();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT:
|
|
||||||
return (int)$object->getIsEdit();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE:
|
|
||||||
return (int)$object->getIsDisabled();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER:
|
|
||||||
return (int)$object->getCreateOrder();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER:
|
|
||||||
return (int)$object->getEditOrder();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getCustomTransactionNewValue(
|
|
||||||
PhabricatorLiskDAO $object,
|
|
||||||
PhabricatorApplicationTransaction $xaction) {
|
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_NAME:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE:
|
|
||||||
return $xaction->getNewValue();
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER:
|
|
||||||
return (int)$xaction->getNewValue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function applyCustomInternalTransaction(
|
|
||||||
PhabricatorLiskDAO $object,
|
|
||||||
PhabricatorApplicationTransaction $xaction) {
|
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_NAME:
|
|
||||||
$object->setName($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE;
|
|
||||||
$object->setPreamble($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER:
|
|
||||||
$object->setFieldOrder($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT:
|
|
||||||
$field_key = $xaction->getMetadataValue('field.key');
|
|
||||||
$object->setFieldDefault($field_key, $xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS:
|
|
||||||
$object->setFieldLocks($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE:
|
|
||||||
$object->setSubtype($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE:
|
|
||||||
$object->setIsDefault($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT:
|
|
||||||
$object->setIsEdit($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE:
|
|
||||||
$object->setIsDisabled($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER:
|
|
||||||
$object->setCreateOrder($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER:
|
|
||||||
$object->setEditOrder($xaction->getNewValue());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::applyCustomInternalTransaction($object, $xaction);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function applyCustomExternalTransaction(
|
|
||||||
PhabricatorLiskDAO $object,
|
|
||||||
PhabricatorApplicationTransaction $xaction) {
|
|
||||||
|
|
||||||
switch ($xaction->getTransactionType()) {
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_NAME:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_PREAMBLE;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ORDER;
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULT:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_ISEDIT:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_LOCKS:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_SUBTYPE:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DEFAULTCREATE:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_DISABLE:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_CREATEORDER:
|
|
||||||
case PhabricatorEditEngineConfigurationTransaction::TYPE_EDITORDER:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::applyCustomExternalTransaction($object, $xaction);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
final class PhabricatorEditEngineConfigurationTransaction
|
final class PhabricatorEditEngineConfigurationTransaction
|
||||||
extends PhabricatorApplicationTransaction {
|
extends PhabricatorModularTransaction {
|
||||||
|
|
||||||
const TYPE_NAME = 'editengine.config.name';
|
|
||||||
const TYPE_PREAMBLE = 'editengine.config.preamble';
|
|
||||||
const TYPE_ORDER = 'editengine.config.order';
|
|
||||||
const TYPE_DEFAULT = 'editengine.config.default';
|
|
||||||
const TYPE_LOCKS = 'editengine.config.locks';
|
|
||||||
const TYPE_DEFAULTCREATE = 'editengine.config.default.create';
|
|
||||||
const TYPE_ISEDIT = 'editengine.config.isedit';
|
|
||||||
const TYPE_DISABLE = 'editengine.config.disable';
|
|
||||||
const TYPE_CREATEORDER = 'editengine.order.create';
|
|
||||||
const TYPE_EDITORDER = 'editengine.order.edit';
|
|
||||||
const TYPE_SUBTYPE = 'editengine.config.subtype';
|
|
||||||
|
|
||||||
public function getApplicationName() {
|
public function getApplicationName() {
|
||||||
return 'search';
|
return 'search';
|
||||||
|
@ -23,203 +11,8 @@ final class PhabricatorEditEngineConfigurationTransaction
|
||||||
return PhabricatorEditEngineConfigurationPHIDType::TYPECONST;
|
return PhabricatorEditEngineConfigurationPHIDType::TYPECONST;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTitle() {
|
public function getBaseTransactionClass() {
|
||||||
$author_phid = $this->getAuthorPHID();
|
return 'PhabricatorEditEngineTransactionType';
|
||||||
|
|
||||||
$old = $this->getOldValue();
|
|
||||||
$new = $this->getNewValue();
|
|
||||||
|
|
||||||
$type = $this->getTransactionType();
|
|
||||||
switch ($type) {
|
|
||||||
case PhabricatorTransactions::TYPE_CREATE:
|
|
||||||
return pht(
|
|
||||||
'%s created this form configuration.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
case self::TYPE_NAME:
|
|
||||||
if (strlen($old)) {
|
|
||||||
return pht(
|
|
||||||
'%s renamed this form from "%s" to "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$old,
|
|
||||||
$new);
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s named this form "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$new);
|
|
||||||
}
|
|
||||||
case self::TYPE_PREAMBLE:
|
|
||||||
return pht(
|
|
||||||
'%s updated the preamble for this form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
case self::TYPE_ORDER:
|
|
||||||
return pht(
|
|
||||||
'%s reordered the fields in this form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
case self::TYPE_DEFAULT:
|
|
||||||
$key = $this->getMetadataValue('field.key');
|
|
||||||
|
|
||||||
$object = $this->getObject();
|
|
||||||
$engine = $object->getEngine();
|
|
||||||
$fields = $engine->getFieldsForConfig($object);
|
|
||||||
|
|
||||||
$field = idx($fields, $key);
|
|
||||||
if (!$field) {
|
|
||||||
return pht(
|
|
||||||
'%s changed the default value for field "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$key);
|
|
||||||
}
|
|
||||||
|
|
||||||
return pht(
|
|
||||||
'%s changed the default value for field "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$field->getLabel());
|
|
||||||
case self::TYPE_LOCKS:
|
|
||||||
return pht(
|
|
||||||
'%s changed locked and hidden fields.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
case self::TYPE_DEFAULTCREATE:
|
|
||||||
if ($new) {
|
|
||||||
return pht(
|
|
||||||
'%s added this form to the "Create" menu.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s removed this form from the "Create" menu.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
}
|
|
||||||
case self::TYPE_ISEDIT:
|
|
||||||
if ($new) {
|
|
||||||
return pht(
|
|
||||||
'%s marked this form as an edit form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s unmarked this form as an edit form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
}
|
|
||||||
case self::TYPE_DISABLE:
|
|
||||||
if ($new) {
|
|
||||||
return pht(
|
|
||||||
'%s disabled this form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
} else {
|
|
||||||
return pht(
|
|
||||||
'%s enabled this form.',
|
|
||||||
$this->renderHandleLink($author_phid));
|
|
||||||
}
|
|
||||||
case self::TYPE_SUBTYPE:
|
|
||||||
return pht(
|
|
||||||
'%s changed the subtype of this form from "%s" to "%s".',
|
|
||||||
$this->renderHandleLink($author_phid),
|
|
||||||
$old,
|
|
||||||
$new);
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::getTitle();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getColor() {
|
|
||||||
$author_phid = $this->getAuthorPHID();
|
|
||||||
|
|
||||||
$old = $this->getOldValue();
|
|
||||||
$new = $this->getNewValue();
|
|
||||||
|
|
||||||
$type = $this->getTransactionType();
|
|
||||||
switch ($type) {
|
|
||||||
case PhabricatorTransactions::TYPE_CREATE:
|
|
||||||
return 'green';
|
|
||||||
case self::TYPE_DISABLE:
|
|
||||||
if ($new) {
|
|
||||||
return 'indigo';
|
|
||||||
} else {
|
|
||||||
return 'green';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::getColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getIcon() {
|
|
||||||
$author_phid = $this->getAuthorPHID();
|
|
||||||
|
|
||||||
$old = $this->getOldValue();
|
|
||||||
$new = $this->getNewValue();
|
|
||||||
|
|
||||||
$type = $this->getTransactionType();
|
|
||||||
switch ($type) {
|
|
||||||
case PhabricatorTransactions::TYPE_CREATE:
|
|
||||||
return 'fa-plus';
|
|
||||||
case self::TYPE_DISABLE:
|
|
||||||
if ($new) {
|
|
||||||
return 'fa-ban';
|
|
||||||
} else {
|
|
||||||
return 'fa-check';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::getIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function newRemarkupChanges() {
|
|
||||||
$changes = array();
|
|
||||||
|
|
||||||
$type = $this->getTransactionType();
|
|
||||||
switch ($type) {
|
|
||||||
case self::TYPE_PREAMBLE:
|
|
||||||
$changes[] = $this->newRemarkupChange()
|
|
||||||
->setOldValue($this->getOldValue())
|
|
||||||
->setNewValue($this->getNewValue());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $changes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hasChangeDetails() {
|
|
||||||
switch ($this->getTransactionType()) {
|
|
||||||
case self::TYPE_DEFAULT:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::hasChangeDetails();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderChangeDetails(PhabricatorUser $viewer) {
|
|
||||||
switch ($this->getTransactionType()) {
|
|
||||||
case self::TYPE_DEFAULT:
|
|
||||||
$old_value = $this->getOldValue();
|
|
||||||
$new_value = $this->getNewValue();
|
|
||||||
|
|
||||||
$old_value = $this->renderDefaultValueAsFallbackText($old_value);
|
|
||||||
$new_value = $this->renderDefaultValueAsFallbackText($new_value);
|
|
||||||
|
|
||||||
return $this->renderTextCorpusChangeDetails(
|
|
||||||
$viewer,
|
|
||||||
$old_value,
|
|
||||||
$new_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::renderChangeDetails($viewer);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function renderDefaultValueAsFallbackText($default_value) {
|
|
||||||
// See T13319. When rendering an "alice changed the default value for
|
|
||||||
// field X." story on custom forms, we may fall back to a generic
|
|
||||||
// rendering. Try to present the value change in a comprehensible way
|
|
||||||
// even if it isn't especially human readable (for example, it may
|
|
||||||
// contain PHIDs or other internal identifiers).
|
|
||||||
|
|
||||||
if (is_scalar($default_value) || is_null($default_value)) {
|
|
||||||
return $default_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (phutil_is_natural_list($default_value)) {
|
|
||||||
return id(new PhutilJSON())->encodeAsList($default_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return id(new PhutilJSON())->encodeAsObject($default_value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
abstract class PhabricatorApplicationTransactionDetailView
|
||||||
|
extends AphrontView {
|
||||||
|
protected $oldText;
|
||||||
|
protected $newText;
|
||||||
|
|
||||||
|
public function setNewText($new_text) {
|
||||||
|
$this->newText = $new_text;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOldText($old_text) {
|
||||||
|
$this->oldText = $old_text;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renderForMail() {
|
||||||
|
$diff = $this->buildDiff();
|
||||||
|
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$old_bright = $viewer->getCSSValue('old-bright');
|
||||||
|
$new_bright = $viewer->getCSSValue('new-bright');
|
||||||
|
|
||||||
|
$old_styles = array(
|
||||||
|
'padding: 0 2px;',
|
||||||
|
'color: #333333;',
|
||||||
|
"background: {$old_bright};",
|
||||||
|
);
|
||||||
|
$old_styles = implode(' ', $old_styles);
|
||||||
|
|
||||||
|
$new_styles = array(
|
||||||
|
'padding: 0 2px;',
|
||||||
|
'color: #333333;',
|
||||||
|
"background: {$new_bright};",
|
||||||
|
);
|
||||||
|
$new_styles = implode(' ', $new_styles);
|
||||||
|
|
||||||
|
$omit_styles = array(
|
||||||
|
'padding: 8px 0;',
|
||||||
|
);
|
||||||
|
$omit_styles = implode(' ', $omit_styles);
|
||||||
|
|
||||||
|
$result = array();
|
||||||
|
foreach ($diff->getSummaryParts() as $part) {
|
||||||
|
$type = $part['type'];
|
||||||
|
$text = $part['text'];
|
||||||
|
switch ($type) {
|
||||||
|
case '.':
|
||||||
|
$result[] = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'style' => $omit_styles,
|
||||||
|
),
|
||||||
|
pht('...'));
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
$result[] = phutil_tag(
|
||||||
|
'span',
|
||||||
|
array(
|
||||||
|
'style' => $old_styles,
|
||||||
|
),
|
||||||
|
$text);
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
$result[] = phutil_tag(
|
||||||
|
'span',
|
||||||
|
array(
|
||||||
|
'style' => $new_styles,
|
||||||
|
),
|
||||||
|
$text);
|
||||||
|
break;
|
||||||
|
case '=':
|
||||||
|
$result[] = $text;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$styles = array(
|
||||||
|
'white-space: pre-wrap;',
|
||||||
|
'color: #74777D;',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Beyond applying "pre-wrap", convert newlines to "<br />" explicitly
|
||||||
|
// to improve behavior in clients like Airmail.
|
||||||
|
$result = phutil_escape_html_newlines($result);
|
||||||
|
|
||||||
|
return phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'style' => implode(' ', $styles),
|
||||||
|
),
|
||||||
|
$result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render() {
|
||||||
|
$diff = $this->buildDiff();
|
||||||
|
|
||||||
|
require_celerity_resource('differential-changeset-view-css');
|
||||||
|
|
||||||
|
$result = array();
|
||||||
|
foreach ($diff->getParts() as $part) {
|
||||||
|
$type = $part['type'];
|
||||||
|
$text = $part['text'];
|
||||||
|
switch ($type) {
|
||||||
|
case '-':
|
||||||
|
$result[] = phutil_tag(
|
||||||
|
'span',
|
||||||
|
array(
|
||||||
|
'class' => 'old',
|
||||||
|
),
|
||||||
|
$text);
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
$result[] = phutil_tag(
|
||||||
|
'span',
|
||||||
|
array(
|
||||||
|
'class' => 'new',
|
||||||
|
),
|
||||||
|
$text);
|
||||||
|
break;
|
||||||
|
case '=':
|
||||||
|
$result[] = $text;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$diff_view = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'prose-diff',
|
||||||
|
),
|
||||||
|
$result);
|
||||||
|
|
||||||
|
$old_view = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'prose-diff',
|
||||||
|
),
|
||||||
|
$this->oldText);
|
||||||
|
|
||||||
|
$new_view = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'prose-diff',
|
||||||
|
),
|
||||||
|
$this->newText);
|
||||||
|
|
||||||
|
return id(new PHUITabGroupView())
|
||||||
|
->addTab(
|
||||||
|
id(new PHUITabView())
|
||||||
|
->setKey('old')
|
||||||
|
->setName(pht('Old'))
|
||||||
|
->appendChild($old_view))
|
||||||
|
->addTab(
|
||||||
|
id(new PHUITabView())
|
||||||
|
->setKey('new')
|
||||||
|
->setName(pht('New'))
|
||||||
|
->appendChild($new_view))
|
||||||
|
->addTab(
|
||||||
|
id(new PHUITabView())
|
||||||
|
->setKey('diff')
|
||||||
|
->setName(pht('Diff'))
|
||||||
|
->appendChild($diff_view))
|
||||||
|
->selectTab('diff');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildDiff() {
|
||||||
|
$engine = new PhutilProseDifferenceEngine();
|
||||||
|
return $engine->getDiff($this->oldText, $this->newText);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorApplicationTransactionJSONDiffDetailView
|
||||||
|
extends PhabricatorApplicationTransactionDetailView {
|
||||||
|
|
||||||
|
public function setNew($new_object) {
|
||||||
|
$json = new PhutilJSON();
|
||||||
|
$this->setNewText($json->encodeFormatted($new_object));
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOld($old_object) {
|
||||||
|
$json = new PhutilJSON();
|
||||||
|
$this->setOldText($json->encodeFormatted($old_object));
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,174 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
final class PhabricatorApplicationTransactionTextDiffDetailView
|
final class PhabricatorApplicationTransactionTextDiffDetailView
|
||||||
extends AphrontView {
|
extends PhabricatorApplicationTransactionDetailView {}
|
||||||
|
|
||||||
private $oldText;
|
|
||||||
private $newText;
|
|
||||||
|
|
||||||
public function setNewText($new_text) {
|
|
||||||
$this->newText = $new_text;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setOldText($old_text) {
|
|
||||||
$this->oldText = $old_text;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderForMail() {
|
|
||||||
$diff = $this->buildDiff();
|
|
||||||
|
|
||||||
$viewer = $this->getViewer();
|
|
||||||
$old_bright = $viewer->getCSSValue('old-bright');
|
|
||||||
$new_bright = $viewer->getCSSValue('new-bright');
|
|
||||||
|
|
||||||
$old_styles = array(
|
|
||||||
'padding: 0 2px;',
|
|
||||||
'color: #333333;',
|
|
||||||
"background: {$old_bright};",
|
|
||||||
);
|
|
||||||
$old_styles = implode(' ', $old_styles);
|
|
||||||
|
|
||||||
$new_styles = array(
|
|
||||||
'padding: 0 2px;',
|
|
||||||
'color: #333333;',
|
|
||||||
"background: {$new_bright};",
|
|
||||||
);
|
|
||||||
$new_styles = implode(' ', $new_styles);
|
|
||||||
|
|
||||||
$omit_styles = array(
|
|
||||||
'padding: 8px 0;',
|
|
||||||
);
|
|
||||||
$omit_styles = implode(' ', $omit_styles);
|
|
||||||
|
|
||||||
$result = array();
|
|
||||||
foreach ($diff->getSummaryParts() as $part) {
|
|
||||||
$type = $part['type'];
|
|
||||||
$text = $part['text'];
|
|
||||||
switch ($type) {
|
|
||||||
case '.':
|
|
||||||
$result[] = phutil_tag(
|
|
||||||
'div',
|
|
||||||
array(
|
|
||||||
'style' => $omit_styles,
|
|
||||||
),
|
|
||||||
pht('...'));
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
$result[] = phutil_tag(
|
|
||||||
'span',
|
|
||||||
array(
|
|
||||||
'style' => $old_styles,
|
|
||||||
),
|
|
||||||
$text);
|
|
||||||
break;
|
|
||||||
case '+':
|
|
||||||
$result[] = phutil_tag(
|
|
||||||
'span',
|
|
||||||
array(
|
|
||||||
'style' => $new_styles,
|
|
||||||
),
|
|
||||||
$text);
|
|
||||||
break;
|
|
||||||
case '=':
|
|
||||||
$result[] = $text;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$styles = array(
|
|
||||||
'white-space: pre-wrap;',
|
|
||||||
'color: #74777D;',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Beyond applying "pre-wrap", convert newlines to "<br />" explicitly
|
|
||||||
// to improve behavior in clients like Airmail.
|
|
||||||
$result = phutil_escape_html_newlines($result);
|
|
||||||
|
|
||||||
return phutil_tag(
|
|
||||||
'div',
|
|
||||||
array(
|
|
||||||
'style' => implode(' ', $styles),
|
|
||||||
),
|
|
||||||
$result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function render() {
|
|
||||||
$diff = $this->buildDiff();
|
|
||||||
|
|
||||||
require_celerity_resource('differential-changeset-view-css');
|
|
||||||
|
|
||||||
$result = array();
|
|
||||||
foreach ($diff->getParts() as $part) {
|
|
||||||
$type = $part['type'];
|
|
||||||
$text = $part['text'];
|
|
||||||
switch ($type) {
|
|
||||||
case '-':
|
|
||||||
$result[] = phutil_tag(
|
|
||||||
'span',
|
|
||||||
array(
|
|
||||||
'class' => 'old',
|
|
||||||
),
|
|
||||||
$text);
|
|
||||||
break;
|
|
||||||
case '+':
|
|
||||||
$result[] = phutil_tag(
|
|
||||||
'span',
|
|
||||||
array(
|
|
||||||
'class' => 'new',
|
|
||||||
),
|
|
||||||
$text);
|
|
||||||
break;
|
|
||||||
case '=':
|
|
||||||
$result[] = $text;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$diff_view = phutil_tag(
|
|
||||||
'div',
|
|
||||||
array(
|
|
||||||
'class' => 'prose-diff',
|
|
||||||
),
|
|
||||||
$result);
|
|
||||||
|
|
||||||
$old_view = phutil_tag(
|
|
||||||
'div',
|
|
||||||
array(
|
|
||||||
'class' => 'prose-diff',
|
|
||||||
),
|
|
||||||
$this->oldText);
|
|
||||||
|
|
||||||
$new_view = phutil_tag(
|
|
||||||
'div',
|
|
||||||
array(
|
|
||||||
'class' => 'prose-diff',
|
|
||||||
),
|
|
||||||
$this->newText);
|
|
||||||
|
|
||||||
return id(new PHUITabGroupView())
|
|
||||||
->addTab(
|
|
||||||
id(new PHUITabView())
|
|
||||||
->setKey('old')
|
|
||||||
->setName(pht('Old'))
|
|
||||||
->appendChild($old_view))
|
|
||||||
->addTab(
|
|
||||||
id(new PHUITabView())
|
|
||||||
->setKey('new')
|
|
||||||
->setName(pht('New'))
|
|
||||||
->appendChild($new_view))
|
|
||||||
->addTab(
|
|
||||||
id(new PHUITabView())
|
|
||||||
->setKey('diff')
|
|
||||||
->setName(pht('Diff'))
|
|
||||||
->appendChild($diff_view))
|
|
||||||
->selectTab('diff');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function buildDiff() {
|
|
||||||
$engine = new PhutilProseDifferenceEngine();
|
|
||||||
return $engine->getDiff($this->oldText, $this->newText);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineCreateOrderTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.order.create';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return (int)$object->getCreateOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
return (int)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setCreateOrder($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s changed the order in which this form appears in the "Create" menu.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineDefaultCreateTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.default.create';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return (int)$object->getIsDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
return (int)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setIsDefault($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
if ($new) {
|
||||||
|
return pht(
|
||||||
|
'%s added this form to the "Create" menu.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s removed this form from the "Create" menu.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineDefaultTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.default';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
$field_key = $this->getMetadataValue('field.key');
|
||||||
|
return $object->getFieldDefault($field_key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$field_key = $this->getMetadataValue('field.key');
|
||||||
|
$object->setFieldDefault($field_key, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$key = $this->getMetadataValue('field.key');
|
||||||
|
$object = $this->getObject();
|
||||||
|
$engine = $object->getEngine();
|
||||||
|
$fields = $engine->getFieldsForConfig($object);
|
||||||
|
$field = idx($fields, $key);
|
||||||
|
|
||||||
|
if (!$field) {
|
||||||
|
return pht(
|
||||||
|
'%s changed the default values for field %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderValue($key));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pht(
|
||||||
|
'%s changed the default value for field %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderValue($field->getLabel()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasChangeDetailView() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newChangeDetailView() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$old = $this->renderDefaultValueAsFallbackText($this->getOldValue());
|
||||||
|
$new = $this->renderDefaultValueAsFallbackText($this->getNewValue());
|
||||||
|
|
||||||
|
return id(new PhabricatorApplicationTransactionTextDiffDetailView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setOldText($old)
|
||||||
|
->setNewText($new);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderDefaultValueAsFallbackText($default_value) {
|
||||||
|
// See T13319. When rendering an "alice changed the default value for
|
||||||
|
// field X." story on custom forms, we may fall back to a generic
|
||||||
|
// rendering. Try to present the value change in a comprehensible way
|
||||||
|
// even if it isn't especially human readable (for example, it may
|
||||||
|
// contain PHIDs or other internal identifiers).
|
||||||
|
|
||||||
|
if (is_scalar($default_value) || is_null($default_value)) {
|
||||||
|
return $default_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (phutil_is_natural_list($default_value)) {
|
||||||
|
return id(new PhutilJSON())->encodeAsList($default_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return id(new PhutilJSON())->encodeAsObject($default_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineDisableTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.disable';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return (int)$object->getIsDisabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
return (int)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setIsDisabled($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
if ($new) {
|
||||||
|
return pht(
|
||||||
|
'%s disabled this form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s enabled this form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getColor() {
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
if ($new) {
|
||||||
|
return 'indigo';
|
||||||
|
} else {
|
||||||
|
return 'green';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getIcon() {
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
if ($new) {
|
||||||
|
return 'fa-ban';
|
||||||
|
} else {
|
||||||
|
return 'fa-check';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineEditOrderTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.order.edit';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return (int)$object->getEditOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
return (int)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setEditOrder($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s changed the order in which this form appears in the "Edit" menu.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineIsEditTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.isedit';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return (int)$object->getIsEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
return (int)$value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setIsEdit($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
if ($new) {
|
||||||
|
return pht(
|
||||||
|
'%s marked this form as an edit form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s unmarked this form as an edit form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineLocksTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.locks';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getFieldLocks();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setFieldLocks($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s changed locked and hidden fields.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasChangeDetailView() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newChangeDetailView() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
return id(new PhabricatorApplicationTransactionJSONDiffDetailView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setOld($this->getOldValue())
|
||||||
|
->setNew($this->getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineNameTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.name';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setName($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
if (strlen($this->getOldValue())) {
|
||||||
|
return pht(
|
||||||
|
'%s renamed this form from %s to %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderOldValue(),
|
||||||
|
$this->renderNewValue());
|
||||||
|
} else {
|
||||||
|
return pht(
|
||||||
|
'%s named this form %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderNewValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validateTransactions($object, array $xactions) {
|
||||||
|
$errors = array();
|
||||||
|
|
||||||
|
foreach ($xactions as $xaction) {
|
||||||
|
$new = $xaction->getNewValue();
|
||||||
|
if (!strlen($new)) {
|
||||||
|
$errors[] = $this->newRequiredError(
|
||||||
|
pht('Form name is required.'),
|
||||||
|
$xaction);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$errors) {
|
||||||
|
if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
|
||||||
|
$errors[] = $this->newRequiredError(
|
||||||
|
pht('Forms must have a name.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineOrderTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.order';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getFieldOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setFieldOrder($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s reordered the fields in this form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasChangeDetailView() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newChangeDetailView() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
return id(new PhabricatorApplicationTransactionJSONDiffDetailView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setOld($this->getOldValue())
|
||||||
|
->setNew($this->getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEnginePreambleTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.preamble';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getPreamble();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setPreamble($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s updated the preamble for this form.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasChangeDetailView() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newChangeDetailView() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
return id(new PhabricatorApplicationTransactionTextDiffDetailView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setOldText($this->getOldValue())
|
||||||
|
->setNewText($this->getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newRemarkupChanges() {
|
||||||
|
$changes = array();
|
||||||
|
|
||||||
|
$changes[] = $this->newRemarkupChange()
|
||||||
|
->setOldValue($this->getOldValue())
|
||||||
|
->setNewValue($this->getNewValue());
|
||||||
|
|
||||||
|
return $changes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorEditEngineSubtypeTransaction
|
||||||
|
extends PhabricatorEditEngineTransactionType {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'editengine.config.subtype';
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getSubtype();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setSubtype($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
$old = $this->getOldValue();
|
||||||
|
$new = $this->getNewValue();
|
||||||
|
|
||||||
|
return pht(
|
||||||
|
'%s changed the subtype of this form from %s to %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderOldValue(),
|
||||||
|
$this->renderNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validateTransactions($object, array $xactions) {
|
||||||
|
$map = $object->getEngine()
|
||||||
|
->setViewer($this->getActor())
|
||||||
|
->newSubtypeMap();
|
||||||
|
|
||||||
|
$errors = array();
|
||||||
|
foreach ($xactions as $xaction) {
|
||||||
|
$new = $xaction->getNewValue();
|
||||||
|
|
||||||
|
if ($map->isValidSubtype($new)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$errors[] = $this->newInvalidError(
|
||||||
|
pht('Subtype "%s" is not a valid subtype.', $new),
|
||||||
|
$xaction);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
abstract class PhabricatorEditEngineTransactionType
|
||||||
|
extends PhabricatorModularTransactionType {}
|
Loading…
Add table
Reference in a new issue