Path: blob/master/src/applications/dashboard/install/PhabricatorDashboardApplicationInstallWorkflow.php
12242 views
<?php12abstract class PhabricatorDashboardApplicationInstallWorkflow3extends PhabricatorDashboardInstallWorkflow {45abstract protected function newApplication();67protected function canInstallToGlobalMenu() {8return PhabricatorPolicyFilter::hasCapability(9$this->getViewer(),10$this->newApplication(),11PhabricatorPolicyCapability::CAN_EDIT);12}1314public function handleRequest(AphrontRequest $request) {15$viewer = $this->getViewer();16$application = $this->newApplication();17$can_global = $this->canInstallToGlobalMenu();1819switch ($this->getMode()) {20case 'global':21if (!$can_global) {22return $this->newGlobalPermissionDialog();23} else if ($request->isFormPost()) {24return $this->installDashboard($application, null);25} else {26return $this->newGlobalConfirmDialog();27}28case 'personal':29if ($request->isFormPost()) {30return $this->installDashboard($application, $viewer->getPHID());31} else {32return $this->newPersonalConfirmDialog();33}34}3536$global_item = $this->newGlobalMenuItem()37->setDisabled(!$can_global);3839$menu = $this->newMenuFromItemMap(40array(41'personal' => $this->newPersonalMenuItem(),42'global' => $global_item,43));4445return $this->newApplicationModeDialog()46->appendChild($menu);47}4849abstract protected function newGlobalPermissionDialog();50abstract protected function newGlobalConfirmDialog();51abstract protected function newPersonalConfirmDialog();5253abstract protected function newPersonalMenuItem();54abstract protected function newGlobalMenuItem();55abstract protected function newApplicationModeDialog();5657}585960