Differential D13429 Diff 32808 src/applications/meta/panel/PhabricatorApplicationConfigurationPanel.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/meta/panel/PhabricatorApplicationConfigurationPanel.php
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | abstract public function shouldShowForApplication( | ||||
PhabricatorApplication $application); | PhabricatorApplication $application); | ||||
abstract public function buildConfigurationPagePanel(); | abstract public function buildConfigurationPagePanel(); | ||||
abstract public function handlePanelRequest( | abstract public function handlePanelRequest( | ||||
AphrontRequest $request, | AphrontRequest $request, | ||||
PhabricatorController $controller); | PhabricatorController $controller); | ||||
public static function loadAllPanels() { | public static function loadAllPanels() { | ||||
$objects = id(new PhutilSymbolLoader()) | return id(new PhutilClassMapQuery()) | ||||
->setAncestorClass(__CLASS__) | ->setAncestorClass(__CLASS__) | ||||
->loadObjects(); | ->setUniqueMethod('getPanelKey') | ||||
->execute(); | |||||
$panels = array(); | |||||
foreach ($objects as $object) { | |||||
$key = $object->getPanelKey(); | |||||
if (empty($panels[$key])) { | |||||
$panels[$key] = $object; | |||||
} else { | |||||
throw new Exception( | |||||
pht( | |||||
'Application configuration panels "%s" and "%s" have the same '. | |||||
'panel key, "%s". Each panel must have a unique key.', | |||||
get_class($object), | |||||
get_class($panels[$key]), | |||||
$key)); | |||||
} | |||||
} | |||||
return $panels; | |||||
} | } | ||||
public static function loadAllPanelsForApplication( | public static function loadAllPanelsForApplication( | ||||
PhabricatorApplication $application) { | PhabricatorApplication $application) { | ||||
$panels = self::loadAllPanels(); | $panels = self::loadAllPanels(); | ||||
$application_panels = array(); | $application_panels = array(); | ||||
foreach ($panels as $key => $panel) { | foreach ($panels as $key => $panel) { | ||||
Show All 10 Lines |