Page MenuHomePhabricator

CopyPHIDAction.php

Authored By
avivey
Dec 7 2017, 12:47 PM
Size
1 KB
Referenced Files
None
Subscribers
None

CopyPHIDAction.php

<?php
/**
* Dump this in /src/extensions, and get a "Copy PHID to clipboard" action on every page.
*/
final class CopyPHIDAction extends PhabricatorAutoEventListener {
public function register() {
$this->listen(PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS);
}
public function handleEvent(PhutilEvent $event) {
switch ($event->getType()) {
case PhabricatorEventType::TYPE_UI_DIDRENDERACTIONS:
$this->handleActionEvent($event);
break;
}
}
private function handleActionEvent($event) {
$viewer = $event->getUser();
$object = $event->getValue('object');
if (!$object || !$object->getPHID()) {
return;
}
Javelin::initBehavior('phabricator-clipboard-copy');
$actions = $event->getValue('actions');
$actions[] = id(new PhabricatorActionView())
->setHref('#')
->setRenderAsForm(true)
->setName(pht('Copy PHID (%s)', phid_get_type($object->getPHID())))
->setIcon('fa-clipboard')
->addSigil('clipboard-copy')
->setMetadata(array('text' => $object->getPHID()));
$event->setValue('actions', $actions);
}
}

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
864249
Default Alt Text
CopyPHIDAction.php (1 KB)

Event Timeline