Differential D13589 Diff 33531 src/applications/differential/landing/DifferentialLandingActionMenuEventListener.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/landing/DifferentialLandingActionMenuEventListener.php
Show All 31 Lines | private function renderRevisionAction(PhutilEvent $event) { | ||||
$revision = $event->getValue('object'); | $revision = $event->getValue('object'); | ||||
$repository = $revision->getRepository(); | $repository = $revision->getRepository(); | ||||
if ($repository === null) { | if ($repository === null) { | ||||
return null; | return null; | ||||
} | } | ||||
$strategies = id(new PhutilSymbolLoader()) | $strategies = id(new PhutilClassMapQuery()) | ||||
->setAncestorClass('DifferentialLandingStrategy') | ->setAncestorClass('DifferentialLandingStrategy') | ||||
->loadObjects(); | ->execute(); | ||||
foreach ($strategies as $strategy) { | foreach ($strategies as $strategy) { | ||||
$viewer = $event->getUser(); | $viewer = $event->getUser(); | ||||
$action = $strategy->createMenuItem($viewer, $revision, $repository); | $action = $strategy->createMenuItem($viewer, $revision, $repository); | ||||
if ($action == null) { | if ($action == null) { | ||||
continue; | continue; | ||||
} | } | ||||
if ($strategy->isActionDisabled($viewer, $revision, $repository)) { | if ($strategy->isActionDisabled($viewer, $revision, $repository)) { | ||||
$action->setDisabled(true); | $action->setDisabled(true); | ||||
} | } | ||||
$this->addActionMenuItems($event, $action); | $this->addActionMenuItems($event, $action); | ||||
} | } | ||||
} | } | ||||
} | } |