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); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||