Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/dashboard/install/PhabricatorDashboardApplicationInstallWorkflow.php
12242 views
1
<?php
2
3
abstract class PhabricatorDashboardApplicationInstallWorkflow
4
extends PhabricatorDashboardInstallWorkflow {
5
6
abstract protected function newApplication();
7
8
protected function canInstallToGlobalMenu() {
9
return PhabricatorPolicyFilter::hasCapability(
10
$this->getViewer(),
11
$this->newApplication(),
12
PhabricatorPolicyCapability::CAN_EDIT);
13
}
14
15
public function handleRequest(AphrontRequest $request) {
16
$viewer = $this->getViewer();
17
$application = $this->newApplication();
18
$can_global = $this->canInstallToGlobalMenu();
19
20
switch ($this->getMode()) {
21
case 'global':
22
if (!$can_global) {
23
return $this->newGlobalPermissionDialog();
24
} else if ($request->isFormPost()) {
25
return $this->installDashboard($application, null);
26
} else {
27
return $this->newGlobalConfirmDialog();
28
}
29
case 'personal':
30
if ($request->isFormPost()) {
31
return $this->installDashboard($application, $viewer->getPHID());
32
} else {
33
return $this->newPersonalConfirmDialog();
34
}
35
}
36
37
$global_item = $this->newGlobalMenuItem()
38
->setDisabled(!$can_global);
39
40
$menu = $this->newMenuFromItemMap(
41
array(
42
'personal' => $this->newPersonalMenuItem(),
43
'global' => $global_item,
44
));
45
46
return $this->newApplicationModeDialog()
47
->appendChild($menu);
48
}
49
50
abstract protected function newGlobalPermissionDialog();
51
abstract protected function newGlobalConfirmDialog();
52
abstract protected function newPersonalConfirmDialog();
53
54
abstract protected function newPersonalMenuItem();
55
abstract protected function newGlobalMenuItem();
56
abstract protected function newApplicationModeDialog();
57
58
}
59
60