Path: blob/master/src/applications/meta/panel/PhabricatorApplicationConfigurationPanel.php
12256 views
<?php12abstract class PhabricatorApplicationConfigurationPanel3extends Phobject {45private $viewer;6private $application;78public function setViewer(PhabricatorUser $viewer) {9$this->viewer = $viewer;10return $this;11}1213public function getViewer() {14return $this->viewer;15}1617public function setApplication(PhabricatorApplication $application) {18$this->application = $application;19return $this;20}2122public function getApplication() {23return $this->application;24}2526public function getPanelURI($path = null) {27$app_key = get_class($this->getApplication());28$panel_key = $this->getPanelKey();29$base = "/applications/panel/{$app_key}/{$panel_key}/";30return $base.ltrim($path, '/');31}3233/**34* Return a short, unique string key which identifies this panel.35*36* This key is used in URIs. Good values might be "email" or "files".37*/38abstract public function getPanelKey();3940abstract public function shouldShowForApplication(41PhabricatorApplication $application);4243abstract public function buildConfigurationPagePanel();44abstract public function handlePanelRequest(45AphrontRequest $request,46PhabricatorController $controller);4748public static function loadAllPanels() {49return id(new PhutilClassMapQuery())50->setAncestorClass(__CLASS__)51->setUniqueMethod('getPanelKey')52->execute();53}5455public static function loadAllPanelsForApplication(56PhabricatorApplication $application) {57$panels = self::loadAllPanels();5859$application_panels = array();60foreach ($panels as $key => $panel) {61if (!$panel->shouldShowForApplication($application)) {62continue;63}64$application_panels[$key] = $panel;65}6667return $application_panels;68}6970}717273