Page MenuHomePhabricator

D15804.diff
No OneTemporary

D15804.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -743,6 +743,7 @@
'DiffusionRefTableController' => 'applications/diffusion/controller/DiffusionRefTableController.php',
'DiffusionRefsQueryConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionRefsQueryConduitAPIMethod.php',
'DiffusionRenameHistoryQuery' => 'applications/diffusion/query/DiffusionRenameHistoryQuery.php',
+ 'DiffusionRepositoryAutomationManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php',
'DiffusionRepositoryBasicsManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryBasicsManagementPanel.php',
'DiffusionRepositoryByIDRemarkupRule' => 'applications/diffusion/remarkup/DiffusionRepositoryByIDRemarkupRule.php',
'DiffusionRepositoryClusterEngine' => 'applications/diffusion/protocol/DiffusionRepositoryClusterEngine.php',
@@ -4959,6 +4960,7 @@
'DiffusionRefTableController' => 'DiffusionController',
'DiffusionRefsQueryConduitAPIMethod' => 'DiffusionQueryConduitAPIMethod',
'DiffusionRenameHistoryQuery' => 'Phobject',
+ 'DiffusionRepositoryAutomationManagementPanel' => 'DiffusionRepositoryManagementPanel',
'DiffusionRepositoryBasicsManagementPanel' => 'DiffusionRepositoryManagementPanel',
'DiffusionRepositoryByIDRemarkupRule' => 'PhabricatorObjectRemarkupRule',
'DiffusionRepositoryClusterEngine' => 'Phobject',
diff --git a/src/applications/diffusion/editor/DiffusionRepositoryEditEngine.php b/src/applications/diffusion/editor/DiffusionRepositoryEditEngine.php
--- a/src/applications/diffusion/editor/DiffusionRepositoryEditEngine.php
+++ b/src/applications/diffusion/editor/DiffusionRepositoryEditEngine.php
@@ -162,6 +162,17 @@
->setConduitDescription(pht('Set the staging area URI.'))
->setConduitTypeDescription(pht('New staging area URI.'))
->setValue($object->getStagingURI()),
+ id(new PhabricatorDatasourceEditField())
+ ->setKey('automationBlueprintPHIDs')
+ ->setLabel(pht('Use Blueprints'))
+ ->setTransactionType(
+ PhabricatorRepositoryTransaction::TYPE_AUTOMATION_BLUEPRINTS)
+ ->setIsCopyable(true)
+ ->setDatasource(new DrydockBlueprintDatasource())
+ ->setDescription(pht('Automation blueprints.'))
+ ->setConduitDescription(pht('Change automation blueprints.'))
+ ->setConduitTypeDescription(pht('New blueprint PHIDs.'))
+ ->setValue($object->getAutomationBlueprintPHIDs()),
id(new PhabricatorPolicyEditField())
->setKey('policy.push')
->setLabel(pht('Push Policy'))
diff --git a/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php
@@ -0,0 +1,69 @@
+<?php
+
+final class DiffusionRepositoryAutomationManagementPanel
+ extends DiffusionRepositoryManagementPanel {
+
+ const PANELKEY = 'automation';
+
+ public function getManagementPanelLabel() {
+ return pht('Automation');
+ }
+
+ public function getManagementPanelOrder() {
+ return 800;
+ }
+
+ protected function buildManagementPanelActions() {
+ $repository = $this->getRepository();
+ $viewer = $this->getViewer();
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $repository,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $can_test = $can_edit && $repository->canPerformAutomation();
+
+ $automation_uri = $repository->getPathURI('edit/automation/');
+ $test_uri = $repository->getPathURI('edit/testautomation/');
+
+ return array(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-pencil')
+ ->setName(pht('Edit Automation'))
+ ->setHref($automation_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit),
+ id(new PhabricatorActionView())
+ ->setIcon('fa-gamepad')
+ ->setName(pht('Test Configuration'))
+ ->setWorkflow(true)
+ ->setDisabled(!$can_test)
+ ->setHref($test_uri),
+ );
+ }
+
+ public function buildManagementPanelContent() {
+ $repository = $this->getRepository();
+ $viewer = $this->getViewer();
+
+ $view = id(new PHUIPropertyListView())
+ ->setViewer($viewer)
+ ->setActionList($this->newActions());
+
+ $blueprint_phids = $repository->getAutomationBlueprintPHIDs();
+ if (!$blueprint_phids) {
+ $blueprint_view = phutil_tag('em', array(), pht('Not Configured'));
+ } else {
+ $blueprint_view = id(new DrydockObjectAuthorizationView())
+ ->setUser($viewer)
+ ->setObjectPHID($repository->getPHID())
+ ->setBlueprintPHIDs($blueprint_phids);
+ }
+
+ $view->addProperty(pht('Automation'), $blueprint_view);
+
+ return $this->newBox(pht('Automation'), $view);
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Mar 14 2025, 2:22 AM (4 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7392862
Default Alt Text
D15804.diff (4 KB)

Event Timeline