Changeset View
Changeset View
Standalone View
Standalone View
src/applications/release/ReleaseRenderEventListener.php
- This file was added.
<?php | |||||
final class ReleaseRenderEventListener extends PhabricatorEventListener { | |||||
public function register() { | |||||
$this->listen(PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS); | |||||
} | |||||
public function handleEvent(PhutilEvent $event) { | |||||
switch ($event->getType()) { | |||||
case PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS: | |||||
$this->handleActionsEvent($event); | |||||
break; | |||||
} | |||||
} | |||||
private function handleActionsEvent(PhutilEvent $event) { | |||||
if (!$this->canUseApplication($event->getUser())) { | |||||
return; | |||||
} | |||||
$object = $event->getValue('object'); | |||||
if ($object instanceof DifferentialRevision) { | |||||
$this->addRevisionAction($event, $object); | |||||
} | |||||
// if ($object instanceof PhabricatorRepository) { | |||||
// $this->addRepositoryActions($event); | |||||
// } | |||||
// if ($object instanceof PhabricatorRepositoryCommit) { | |||||
// $this->addCommitActions($event); | |||||
// } | |||||
} | |||||
private function addRevisionAction( | |||||
PhutilEvent $event, | |||||
DifferentialRevision $revision) { | |||||
$repository = $revision->getRepository(); | |||||
if (!$repository) { | |||||
return; | |||||
} | |||||
$revision_phid = $revision->getPHID(); | |||||
$actions[] = id(new PhabricatorActionView()) | |||||
->setWorkflow(true) | |||||
->setName('Request Pick To Release') | |||||
->setIcon('fa-steam') | |||||
->setHref("/release/request/revision/{$revision_phid}/"); | |||||
$this->addActionMenuItems($event, $actions); | |||||
} | |||||
} |