Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php
13395 views
1
<?php
2
3
final class DiffusionRepositoryAutomationManagementPanel
4
extends DiffusionRepositoryManagementPanel {
5
6
const PANELKEY = 'automation';
7
8
public function getManagementPanelLabel() {
9
return pht('Automation');
10
}
11
12
public function getManagementPanelOrder() {
13
return 800;
14
}
15
16
public function getManagementPanelGroupKey() {
17
return DiffusionRepositoryManagementBuildsPanelGroup::PANELGROUPKEY;
18
}
19
20
public function shouldEnableForRepository(
21
PhabricatorRepository $repository) {
22
return $repository->isGit();
23
}
24
25
protected function getEditEngineFieldKeys() {
26
return array(
27
'automationBlueprintPHIDs',
28
);
29
}
30
31
public function getManagementPanelIcon() {
32
$repository = $this->getRepository();
33
34
if (!$repository->canPerformAutomation()) {
35
return 'fa-truck grey';
36
}
37
38
$blueprint_phids = $repository->getAutomationBlueprintPHIDs();
39
if (!$blueprint_phids) {
40
return 'fa-truck grey';
41
}
42
43
$is_authorized = DrydockAuthorizationQuery::isFullyAuthorized(
44
$repository->getPHID(),
45
$blueprint_phids);
46
if (!$is_authorized) {
47
return 'fa-exclamation-triangle yellow';
48
}
49
50
return 'fa-truck';
51
}
52
53
public function buildManagementPanelCurtain() {
54
$repository = $this->getRepository();
55
$viewer = $this->getViewer();
56
$action_list = $this->newActionList();
57
58
$can_edit = PhabricatorPolicyFilter::hasCapability(
59
$viewer,
60
$repository,
61
PhabricatorPolicyCapability::CAN_EDIT);
62
63
$can_test = $can_edit && $repository->canPerformAutomation();
64
65
$automation_uri = $this->getEditPageURI();
66
$test_uri = $repository->getPathURI('edit/testautomation/');
67
68
$action_list->addAction(
69
id(new PhabricatorActionView())
70
->setIcon('fa-pencil')
71
->setName(pht('Edit Automation'))
72
->setHref($automation_uri)
73
->setDisabled(!$can_edit)
74
->setWorkflow(!$can_edit));
75
76
$action_list->addAction(
77
id(new PhabricatorActionView())
78
->setIcon('fa-gamepad')
79
->setName(pht('Test Configuration'))
80
->setWorkflow(true)
81
->setDisabled(!$can_test)
82
->setHref($test_uri));
83
84
return $this->newCurtainView()
85
->setActionList($action_list);
86
}
87
88
public function buildManagementPanelContent() {
89
$repository = $this->getRepository();
90
$viewer = $this->getViewer();
91
92
$view = id(new PHUIPropertyListView())
93
->setViewer($viewer);
94
95
$blueprint_phids = $repository->getAutomationBlueprintPHIDs();
96
if (!$blueprint_phids) {
97
$blueprint_view = phutil_tag('em', array(), pht('Not Configured'));
98
} else {
99
$blueprint_view = id(new DrydockObjectAuthorizationView())
100
->setUser($viewer)
101
->setObjectPHID($repository->getPHID())
102
->setBlueprintPHIDs($blueprint_phids);
103
}
104
105
$view->addProperty(pht('Automation'), $blueprint_view);
106
107
return $this->newBox(pht('Automation'), $view);
108
}
109
110
}
111
112