From 63bbe6b129f02f65e90754b70f5d11dfc919f9fa Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 26 Apr 2016 16:02:57 -0700 Subject: [PATCH] Port "Allow Dangerous Changes" to new Manage UI Summary: Ref T10748. Brings this forward in the UI and EditEngine. Test Plan: - Edited via Conduit. - Viewed via Manage UI. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10748 Differential Revision: https://secure.phabricator.com/D15805 --- src/__phutil_library_map__.php | 4 ++- .../ConduitBoolParameterType.php | 2 +- .../editor/DiffusionRepositoryEditEngine.php | 10 ++++++ ...ffusionRepositoryBasicsManagementPanel.php | 32 +++++++++++++++++++ .../editfield/PhabricatorBoolEditField.php | 23 +++++++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/applications/transactions/editfield/PhabricatorBoolEditField.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 337d4406a9..becb311d7b 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1934,6 +1934,7 @@ phutil_register_library_map(array( 'PhabricatorBoardLayoutEngine' => 'applications/project/engine/PhabricatorBoardLayoutEngine.php', 'PhabricatorBoardRenderingEngine' => 'applications/project/engine/PhabricatorBoardRenderingEngine.php', 'PhabricatorBoardResponseEngine' => 'applications/project/engine/PhabricatorBoardResponseEngine.php', + 'PhabricatorBoolEditField' => 'applications/transactions/editfield/PhabricatorBoolEditField.php', 'PhabricatorBot' => 'infrastructure/daemon/bot/PhabricatorBot.php', 'PhabricatorBotChannel' => 'infrastructure/daemon/bot/target/PhabricatorBotChannel.php', 'PhabricatorBotDebugLogHandler' => 'infrastructure/daemon/bot/handler/PhabricatorBotDebugLogHandler.php', @@ -4426,7 +4427,7 @@ phutil_register_library_map(array( 'ConduitAPIRequest' => 'Phobject', 'ConduitAPIResponse' => 'Phobject', 'ConduitApplicationNotInstalledException' => 'ConduitMethodNotFoundException', - 'ConduitBoolParameterType' => 'ConduitListParameterType', + 'ConduitBoolParameterType' => 'ConduitParameterType', 'ConduitCall' => 'Phobject', 'ConduitCallTestCase' => 'PhabricatorTestCase', 'ConduitColumnsParameterType' => 'ConduitParameterType', @@ -6363,6 +6364,7 @@ phutil_register_library_map(array( 'PhabricatorBoardLayoutEngine' => 'Phobject', 'PhabricatorBoardRenderingEngine' => 'Phobject', 'PhabricatorBoardResponseEngine' => 'Phobject', + 'PhabricatorBoolEditField' => 'PhabricatorEditField', 'PhabricatorBot' => 'PhabricatorDaemon', 'PhabricatorBotChannel' => 'PhabricatorBotTarget', 'PhabricatorBotDebugLogHandler' => 'PhabricatorBotHandler', diff --git a/src/applications/conduit/parametertype/ConduitBoolParameterType.php b/src/applications/conduit/parametertype/ConduitBoolParameterType.php index e15925827e..fe1564350f 100644 --- a/src/applications/conduit/parametertype/ConduitBoolParameterType.php +++ b/src/applications/conduit/parametertype/ConduitBoolParameterType.php @@ -1,7 +1,7 @@ setConduitDescription(pht('Change the default text encoding.')) ->setConduitTypeDescription(pht('New text encoding.')) ->setValue($object->getDetail('encoding')), + id(new PhabricatorBoolEditField()) + ->setKey('allowDangerousChanges') + ->setLabel(pht('Allow Dangerous Changes')) + ->setIsCopyable(true) + ->setIsConduitOnly(true) + ->setTransactionType(PhabricatorRepositoryTransaction::TYPE_DANGEROUS) + ->setDescription(pht('Permit dangerous changes to be made.')) + ->setConduitDescription(pht('Allow or prevent dangerous changes.')) + ->setConduitTypeDescription(pht('New protection setting.')) + ->setValue($object->shouldAllowDangerousChanges()), id(new PhabricatorSelectEditField()) ->setKey('status') ->setLabel(pht('Status')) diff --git a/src/applications/diffusion/management/DiffusionRepositoryBasicsManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryBasicsManagementPanel.php index d8614923ce..7ddb38d34c 100644 --- a/src/applications/diffusion/management/DiffusionRepositoryBasicsManagementPanel.php +++ b/src/applications/diffusion/management/DiffusionRepositoryBasicsManagementPanel.php @@ -26,6 +26,7 @@ final class DiffusionRepositoryBasicsManagementPanel $activate_uri = $repository->getPathURI('edit/activate/'); $delete_uri = $repository->getPathURI('edit/delete/'); $encoding_uri = $repository->getPathURI('edit/encoding/'); + $dangerous_uri = $repository->getPathURI('edit/dangerous/'); if ($repository->isTracked()) { $activate_icon = 'fa-pause'; @@ -35,6 +36,17 @@ final class DiffusionRepositoryBasicsManagementPanel $activate_label = pht('Activate Repository'); } + $should_dangerous = $repository->shouldAllowDangerousChanges(); + if ($should_dangerous) { + $dangerous_icon = 'fa-shield'; + $dangerous_name = pht('Prevent Dangerous Changes'); + $can_dangerous = $can_edit; + } else { + $dangerous_icon = 'fa-bullseye'; + $dangerous_name = pht('Allow Dangerous Changes'); + $can_dangerous = ($can_edit && $repository->canAllowDangerousChanges()); + } + return array( id(new PhabricatorActionView()) ->setIcon('fa-pencil') @@ -48,6 +60,12 @@ final class DiffusionRepositoryBasicsManagementPanel ->setHref($encoding_uri) ->setDisabled(!$can_edit) ->setWorkflow(!$can_edit), + id(new PhabricatorActionView()) + ->setIcon($dangerous_icon) + ->setName($dangerous_name) + ->setHref($dangerous_uri) + ->setDisabled(!$can_dangerous) + ->setWorkflow(true), id(new PhabricatorActionView()) ->setHref($activate_uri) ->setIcon($activate_icon) @@ -110,6 +128,20 @@ final class DiffusionRepositoryBasicsManagementPanel } $view->addProperty(pht('Encoding'), $encoding); + $can_dangerous = $repository->canAllowDangerousChanges(); + if (!$can_dangerous) { + $dangerous = phutil_tag('em', array(), pht('Not Preventable')); + } else { + $should_dangerous = $repository->shouldAllowDangerousChanges(); + if ($should_dangerous) { + $dangerous = pht('Allowed'); + } else { + $dangerous = pht('Not Allowed'); + } + } + + $view->addProperty(pht('Dangerous Changes'), $dangerous); + return $view; } diff --git a/src/applications/transactions/editfield/PhabricatorBoolEditField.php b/src/applications/transactions/editfield/PhabricatorBoolEditField.php new file mode 100644 index 0000000000..1383826b2f --- /dev/null +++ b/src/applications/transactions/editfield/PhabricatorBoolEditField.php @@ -0,0 +1,23 @@ +setOptions( + array( + '0' => pht('False'), + '1' => pht('True'), + )); + } + + protected function newHTTPParameterType() { + return new AphrontBoolHTTPParameterType(); + } + + protected function newConduitParameterType() { + return new ConduitBoolParameterType(); + } + +}