mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +01:00
Give Nuance items some basic descriptive text
Summary: Ref T10537. Ref T10538. Test Plan: {F1164858} Reviewers: chad Reviewed By: chad Maniphest Tasks: T10537, T10538 Differential Revision: https://secure.phabricator.com/D15445
This commit is contained in:
parent
ee155ce8d2
commit
1e83aef880
9 changed files with 90 additions and 45 deletions
|
@ -15,6 +15,7 @@ final class NuanceItemViewController extends NuanceController {
|
||||||
}
|
}
|
||||||
|
|
||||||
$title = pht('Item %d', $item->getID());
|
$title = pht('Item %d', $item->getID());
|
||||||
|
$name = $item->getDisplayName();
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
$crumbs = $this->buildApplicationCrumbs();
|
||||||
$crumbs->addTextCrumb(
|
$crumbs->addTextCrumb(
|
||||||
|
@ -23,16 +24,16 @@ final class NuanceItemViewController extends NuanceController {
|
||||||
$crumbs->addTextCrumb($title);
|
$crumbs->addTextCrumb($title);
|
||||||
$crumbs->setBorder(true);
|
$crumbs->setBorder(true);
|
||||||
|
|
||||||
$properties = $this->buildPropertyView($item);
|
|
||||||
$curtain = $this->buildCurtain($item);
|
$curtain = $this->buildCurtain($item);
|
||||||
|
$content = $this->buildContent($item);
|
||||||
|
|
||||||
$header = id(new PHUIHeaderView())
|
$header = id(new PHUIHeaderView())
|
||||||
->setHeader($title);
|
->setHeader($name);
|
||||||
|
|
||||||
$view = id(new PHUITwoColumnView())
|
$view = id(new PHUITwoColumnView())
|
||||||
->setHeader($header)
|
->setHeader($header)
|
||||||
->setCurtain($curtain)
|
->setCurtain($curtain)
|
||||||
->addPropertySection(pht('DETAILS'), $properties);
|
->setMainColumn($content);
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
->setTitle($title)
|
->setTitle($title)
|
||||||
|
@ -40,27 +41,6 @@ final class NuanceItemViewController extends NuanceController {
|
||||||
->appendChild($view);
|
->appendChild($view);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function buildPropertyView(NuanceItem $item) {
|
|
||||||
$viewer = $this->getViewer();
|
|
||||||
|
|
||||||
$properties = id(new PHUIPropertyListView())
|
|
||||||
->setUser($viewer);
|
|
||||||
|
|
||||||
$properties->addProperty(
|
|
||||||
pht('Date Created'),
|
|
||||||
phabricator_datetime($item->getDateCreated(), $viewer));
|
|
||||||
|
|
||||||
$source = $item->getSource();
|
|
||||||
$definition = $source->getDefinition();
|
|
||||||
|
|
||||||
$definition->renderItemViewProperties(
|
|
||||||
$viewer,
|
|
||||||
$item,
|
|
||||||
$properties);
|
|
||||||
|
|
||||||
return $properties;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function buildCurtain(NuanceItem $item) {
|
private function buildCurtain(NuanceItem $item) {
|
||||||
$viewer = $this->getViewer();
|
$viewer = $this->getViewer();
|
||||||
$id = $item->getID();
|
$id = $item->getID();
|
||||||
|
@ -81,5 +61,12 @@ final class NuanceItemViewController extends NuanceController {
|
||||||
return $curtain;
|
return $curtain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function buildContent(NuanceItem $item) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$impl = $item->getImplementation();
|
||||||
|
|
||||||
|
$impl->setViewer($viewer);
|
||||||
|
return $impl->buildItemView($item);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,6 +158,9 @@ final class NuanceGitHubRepositoryImportCursor
|
||||||
|
|
||||||
$this->updatePolling($response, $now, true);
|
$this->updatePolling($response, $now, true);
|
||||||
|
|
||||||
|
// Reverse the new items so we insert them in chronological order.
|
||||||
|
$new_items = array_reverse($new_items);
|
||||||
|
|
||||||
$source->openTransaction();
|
$source->openTransaction();
|
||||||
foreach ($new_items as $new_item) {
|
foreach ($new_items as $new_item) {
|
||||||
$new_item->save();
|
$new_item->save();
|
||||||
|
|
|
@ -5,6 +5,49 @@ final class NuanceGitHubEventItemType
|
||||||
|
|
||||||
const ITEMTYPE = 'github.event';
|
const ITEMTYPE = 'github.event';
|
||||||
|
|
||||||
|
public function getItemTypeDisplayName() {
|
||||||
|
return pht('GitHub Event');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getItemTypeDisplayIcon() {
|
||||||
|
return 'fa-github';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getItemDisplayName(NuanceItem $item) {
|
||||||
|
$raw = $item->getItemProperty('api.raw', array());
|
||||||
|
|
||||||
|
$repo = idxv($raw, array('repo', 'name'), pht('<unknown/unknown>'));
|
||||||
|
|
||||||
|
$type = idx($raw, 'type');
|
||||||
|
switch ($type) {
|
||||||
|
case 'PushEvent':
|
||||||
|
$head = idxv($raw, array('payload', 'head'));
|
||||||
|
$head = substr($head, 0, 8);
|
||||||
|
$name = pht('Push %s', $head);
|
||||||
|
break;
|
||||||
|
case 'IssuesEvent':
|
||||||
|
$action = idxv($raw, array('payload', 'action'));
|
||||||
|
$number = idxv($raw, array('payload', 'issue', 'number'));
|
||||||
|
$name = pht('Issue #%d (%s)', $number, $action);
|
||||||
|
break;
|
||||||
|
case 'IssueCommentEvent':
|
||||||
|
$action = idxv($raw, array('payload', 'action'));
|
||||||
|
$number = idxv($raw, array('payload', 'issue', 'number'));
|
||||||
|
$name = pht('Issue #%d (Comment, %s)', $number, $action);
|
||||||
|
break;
|
||||||
|
case 'PullRequestEvent':
|
||||||
|
$action = idxv($raw, array('payload', 'action'));
|
||||||
|
$number = idxv($raw, array('payload', 'pull_request', 'number'));
|
||||||
|
$name = pht('Pull Request #%d (%s)', $number, $action);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$name = pht('Unknown Event ("%s")', $type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pht('GitHub %s %s', $repo, $name);
|
||||||
|
}
|
||||||
|
|
||||||
public function canUpdateItems() {
|
public function canUpdateItems() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,36 @@
|
||||||
abstract class NuanceItemType
|
abstract class NuanceItemType
|
||||||
extends Phobject {
|
extends Phobject {
|
||||||
|
|
||||||
|
private $viewer;
|
||||||
|
|
||||||
|
public function setViewer(PhabricatorUser $viewer) {
|
||||||
|
$this->viewer = $viewer;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getViewer() {
|
||||||
|
return $this->viewer;
|
||||||
|
}
|
||||||
|
|
||||||
public function canUpdateItems() {
|
public function canUpdateItems() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final public function buildItemView(NuanceItem $item) {
|
||||||
|
return $this->newItemView($item);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newItemView() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getItemTypeDisplayIcon() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract public function getItemTypeDisplayName();
|
||||||
|
abstract public function getItemDisplayName(NuanceItem $item);
|
||||||
|
|
||||||
final public function updateItem(NuanceItem $item) {
|
final public function updateItem(NuanceItem $item) {
|
||||||
if (!$this->canUpdateItems()) {
|
if (!$this->canUpdateItems()) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
|
|
|
@ -33,7 +33,7 @@ final class NuanceItemPHIDType extends PhabricatorPHIDType {
|
||||||
foreach ($handles as $phid => $handle) {
|
foreach ($handles as $phid => $handle) {
|
||||||
$item = $objects[$phid];
|
$item = $objects[$phid];
|
||||||
|
|
||||||
$handle->setName($item->getLabel($viewer));
|
$handle->setName($item->getItemDisplayName());
|
||||||
$handle->setURI($item->getURI());
|
$handle->setURI($item->getURI());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,12 +61,16 @@ final class NuanceItemSearchEngine
|
||||||
$list = new PHUIObjectItemListView();
|
$list = new PHUIObjectItemListView();
|
||||||
$list->setUser($viewer);
|
$list->setUser($viewer);
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
|
$impl = $item->getImplementation();
|
||||||
|
|
||||||
$view = id(new PHUIObjectItemView())
|
$view = id(new PHUIObjectItemView())
|
||||||
->setObjectName(pht('Item %d', $item->getID()))
|
->setObjectName(pht('Item %d', $item->getID()))
|
||||||
->setHeader($item->getDisplayName())
|
->setHeader($item->getDisplayName())
|
||||||
->setHref($item->getURI());
|
->setHref($item->getURI());
|
||||||
|
|
||||||
$view->addIcon('none', $item->getItemType());
|
$view->addIcon(
|
||||||
|
$impl->getItemTypeDisplayIcon(),
|
||||||
|
$impl->getItemTypeDisplayName());
|
||||||
|
|
||||||
$list->addItem($view);
|
$list->addItem($view);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,13 +72,6 @@ final class NuancePhabricatorFormSourceDefinition
|
||||||
return $box;
|
return $box;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderItemViewProperties(
|
|
||||||
PhabricatorUser $viewer,
|
|
||||||
NuanceItem $item,
|
|
||||||
PHUIPropertyListView $view) {
|
|
||||||
$this->renderItemCommonProperties($viewer, $item, $view);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderItemEditProperties(
|
public function renderItemEditProperties(
|
||||||
PhabricatorUser $viewer,
|
PhabricatorUser $viewer,
|
||||||
NuanceItem $item,
|
NuanceItem $item,
|
||||||
|
|
|
@ -193,13 +193,6 @@ abstract class NuanceSourceDefinition extends Phobject {
|
||||||
return $item;
|
return $item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderItemViewProperties(
|
|
||||||
PhabricatorUser $viewer,
|
|
||||||
NuanceItem $item,
|
|
||||||
PHUIPropertyListView $view) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderItemEditProperties(
|
public function renderItemEditProperties(
|
||||||
PhabricatorUser $viewer,
|
PhabricatorUser $viewer,
|
||||||
NuanceItem $item,
|
NuanceItem $item,
|
||||||
|
|
|
@ -87,10 +87,6 @@ final class NuanceItem
|
||||||
return '/nuance/item/view/'.$this->getID().'/';
|
return '/nuance/item/view/'.$this->getID().'/';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLabel(PhabricatorUser $viewer) {
|
|
||||||
return pht('TODO: An Item');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getRequestor() {
|
public function getRequestor() {
|
||||||
return $this->assertAttached($this->requestor);
|
return $this->assertAttached($this->requestor);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +140,7 @@ final class NuanceItem
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDisplayName() {
|
public function getDisplayName() {
|
||||||
return pht('An Item');
|
return $this->getImplementation()->getItemDisplayName($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scheduleUpdate() {
|
public function scheduleUpdate() {
|
||||||
|
|
Loading…
Reference in a new issue