1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-24 06:20:56 +01:00

Allow Nuance items to provide curtain panels, link to imported tasks, parse comments

Summary:
Ref T10537.

  - Let nuance items render custom curtain panels.
  - Add a custom panel linking to the imported task, if one exists.
  - Actually extract comments properly.

Test Plan:
Unit tests, plus:

{F1193800}

{F1193801}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10537

Differential Revision: https://secure.phabricator.com/D15537
This commit is contained in:
epriestley 2016-03-28 10:54:13 -07:00
parent a4270e5413
commit da1ebac8d8
7 changed files with 47 additions and 3 deletions

View file

@ -76,6 +76,10 @@ final class NuanceItemViewController extends NuanceController {
$curtain->addAction($action);
}
foreach ($impl->getItemCurtainPanels($item) as $panel) {
$curtain->addPanel($panel);
}
return $curtain;
}

View file

@ -91,7 +91,13 @@ final class NuanceGitHubRawEvent extends Phobject {
}
public function getComment() {
return 'TODO: Actually extract comment text.';
if (!$this->isIssueEvent() && !$this->isPullRequestEvent()) {
return null;
}
$raw = $this->raw;
return idxv($raw, array('payload', 'comment', 'body'));
}
public function getURI() {

View file

@ -51,6 +51,7 @@ final class NuanceGitHubRawEventTestCase
'id' => $event->getID(),
'uri' => $event->getURI(),
'title.full' => $event->getEventFullTitle(),
'comment' => $event->getComment(),
);
// Only verify the keys which are actually present in the test. This

View file

@ -160,5 +160,6 @@
"pull.number": 2,
"id": 3740938746,
"uri": "https://github.com/epriestley/poems/pull/2#issuecomment-194282800",
"title.full": "GitHub epriestley/poems Pull Request #2 (Comment)"
"title.full": "GitHub epriestley/poems Pull Request #2 (Comment)",
"comment": "wub wub"
}

View file

@ -97,5 +97,6 @@
"issue.number": 1,
"id": 3733510485,
"uri": "https://github.com/epriestley/poems/issues/1#issuecomment-193528669",
"title.full": "GitHub epriestley/poems Issue #1 (Comment)"
"title.full": "GitHub epriestley/poems Issue #1 (Comment)",
"comment": "comment on issue"
}

View file

@ -154,6 +154,29 @@ final class NuanceGitHubEventItemType
return $actions;
}
public function getItemCurtainPanels(NuanceItem $item) {
$viewer = $this->getViewer();
$panels = array();
$xobj = $this->getExternalObject($item);
if ($xobj) {
$xobj_phid = $xobj->getPHID();
$task = id(new ManiphestTaskQuery())
->setViewer($viewer)
->withBridgedObjectPHIDs(array($xobj_phid))
->executeOne();
if ($task) {
$panels[] = $this->newCurtainPanel($item)
->setHeaderText(pht('Imported As'))
->appendChild($viewer->renderHandle($task->getPHID()));
}
}
return $panels;
}
protected function handleAction(NuanceItem $item, $action) {
$viewer = $this->getViewer();
$controller = $this->getController();

View file

@ -44,6 +44,10 @@ abstract class NuanceItemType
return array();
}
public function getItemCurtainPanels(NuanceItem $item) {
return array();
}
abstract public function getItemTypeDisplayName();
abstract public function getItemDisplayName(NuanceItem $item);
@ -82,6 +86,10 @@ abstract class NuanceItemType
->setHref($action_uri);
}
final protected function newCurtainPanel(NuanceItem $item) {
return id(new PHUICurtainPanelView());
}
final public function buildActionResponse(NuanceItem $item, $action) {
$response = $this->handleAction($item, $action);