Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/view/DifferentialRevisionListView.php
Show First 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | if ($stale) { | ||||
$stale = PhabricatorCalendarHoliday::getNthBusinessDay( | $stale = PhabricatorCalendarHoliday::getNthBusinessDay( | ||||
time(), | time(), | ||||
-$stale); | -$stale); | ||||
} | } | ||||
$this->initBehavior('phabricator-tooltips', array()); | $this->initBehavior('phabricator-tooltips', array()); | ||||
$this->requireResource('aphront-tooltip-css'); | $this->requireResource('aphront-tooltip-css'); | ||||
$handles = $this->handles; | |||||
$list = new PHUIObjectItemListView(); | $list = new PHUIObjectItemListView(); | ||||
foreach ($this->revisions as $revision) { | foreach ($this->revisions as $revision) { | ||||
$item = id(new PHUIObjectItemView()) | $item = id(new PHUIObjectItemView()) | ||||
->setUser($viewer); | ->setUser($viewer); | ||||
$icons = array(); | $icons = array(); | ||||
Show All 30 Lines | foreach ($this->revisions as $revision) { | ||||
$status_name = | $status_name = | ||||
ArcanistDifferentialRevisionStatus::getNameForRevisionStatus($status); | ArcanistDifferentialRevisionStatus::getNameForRevisionStatus($status); | ||||
if (isset($icons['flag'])) { | if (isset($icons['flag'])) { | ||||
$item->addHeadIcon($icons['flag']); | $item->addHeadIcon($icons['flag']); | ||||
} | } | ||||
$item->setObjectName('D'.$revision->getID()); | $monogram = $revision->getMonogram(); | ||||
$item->setObjectName($monogram); | |||||
$item->setHeader($revision->getTitle()); | $item->setHeader($revision->getTitle()); | ||||
$item->setHref('/D'.$revision->getID()); | $item->setHref('/'.$monogram); | ||||
if (isset($icons['draft'])) { | if (isset($icons['draft'])) { | ||||
$draft = id(new PHUIIconView()) | $draft = id(new PHUIIconView()) | ||||
->setIcon('fa-comment yellow') | ->setIcon('fa-comment yellow') | ||||
->addSigil('has-tooltip') | ->addSigil('has-tooltip') | ||||
->setMetadata( | ->setMetadata( | ||||
array( | array( | ||||
'tip' => pht('Unsubmitted Comments'), | 'tip' => pht('Unsubmitted Comments'), | ||||
)); | )); | ||||
$item->addAttribute($draft); | $item->addAttribute($draft); | ||||
} | } | ||||
/* Most things 'Need Review', so accept it's the default */ | |||||
if ($status != ArcanistDifferentialRevisionStatus::NEEDS_REVIEW) { | |||||
$item->addAttribute($status_name); | |||||
} | |||||
// Author | // Author | ||||
$author_handle = $this->handles[$revision->getAuthorPHID()]; | $author_handle = $handles[$revision->getAuthorPHID()]; | ||||
$item->addByline(pht('Author: %s', $author_handle->renderLink())); | $item->addByline(pht('Author: %s', $author_handle->renderLink())); | ||||
// TODO: As above, this should be based on `getReviewerStatus()` only, | |||||
Lint: TODO Comment: This comment has a TODO. | |||||
// but we don't always load it. | |||||
$reviewers = array(); | $reviewers = array(); | ||||
// TODO: As above, this should be based on `getReviewerStatus()`. | try { | ||||
$reviewers_view = new DifferentialReviewersView(); | |||||
$with_authority = array(); | |||||
$without_authority = array(); | |||||
foreach ($revision->getReviewerStatus() as $reviewer) { | |||||
$reviewer_phid = $reviewer->getReviewerPHID(); | |||||
$has_authority = $reviewer->hasAuthority($viewer); | |||||
if ($has_authority) { | |||||
$reviewer_class = 'viewer-has-authority'; | |||||
} else { | |||||
$reviewer_class = null; | |||||
} | |||||
$icon = $reviewers_view->getReviewerIcon($reviewer); | |||||
$color = $reviewers_view->getReviewerColor($reviewer); | |||||
$icon_view = id(new PHUIIconView()) | |||||
->setIcon($icon, $color); | |||||
$reviewer_node = phutil_tag( | |||||
'span', | |||||
array( | |||||
'class' => $reviewer_class, | |||||
), | |||||
array( | |||||
$icon_view, | |||||
' ', | |||||
$handles[$reviewer_phid]->renderLink(), | |||||
)); | |||||
if ($has_authority) { | |||||
$with_authority[] = $reviewer_node; | |||||
} else { | |||||
$without_authority[] = $reviewer_node; | |||||
} | |||||
} | |||||
$reviewers = array_merge($with_authority, $without_authority); | |||||
} catch (Exception $ex) { | |||||
foreach ($revision->getReviewers() as $reviewer) { | foreach ($revision->getReviewers() as $reviewer) { | ||||
$reviewers[] = $this->handles[$reviewer]->renderLink(); | $reviewers[] = $handles[$reviewer]->renderLink(); | ||||
} | } | ||||
} | |||||
if (!$reviewers) { | if (!$reviewers) { | ||||
$reviewers = phutil_tag('em', array(), pht('None')); | $reviewers = phutil_tag('em', array(), pht('None')); | ||||
} else { | } else { | ||||
$reviewers = phutil_implode_html(', ', $reviewers); | $reviewers = phutil_implode_html(', ', $reviewers); | ||||
} | } | ||||
$item->addAttribute(pht('Reviewers: %s', $reviewers)); | $item->addAttribute(pht('Reviewers: %s', $reviewers)); | ||||
$item->setEpoch($revision->getDateModified(), $object_age); | $item->setEpoch($revision->getDateModified(), $object_age); | ||||
▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines |
This comment has a TODO.