Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/view/DifferentialReviewersView.php
Show All 17 Lines | public function setHandles(array $handles) { | ||||
return $this; | return $this; | ||||
} | } | ||||
public function setActiveDiff(DifferentialDiff $diff) { | public function setActiveDiff(DifferentialDiff $diff) { | ||||
$this->diff = $diff; | $this->diff = $diff; | ||||
return $this; | return $this; | ||||
} | } | ||||
public function render() { | public function getReviewerIcon(DifferentialReviewer $reviewer) { | ||||
$viewer = $this->getUser(); | $is_current = $this->getIsCurrent($reviewer); | ||||
$view = new PHUIStatusListView(); | switch ($reviewer->getStatus()) { | ||||
foreach ($this->reviewers as $reviewer) { | case DifferentialReviewerStatus::STATUS_ADDED: | ||||
$phid = $reviewer->getReviewerPHID(); | return PHUIStatusItemView::ICON_OPEN; | ||||
$handle = $this->handles[$phid]; | case DifferentialReviewerStatus::STATUS_ACCEPTED: | ||||
if ($is_current) { | |||||
return PHUIStatusItemView::ICON_ACCEPT; | |||||
} else { | |||||
return 'fa-check-circle-o'; | |||||
} | |||||
case DifferentialReviewerStatus::STATUS_ACCEPTED_OLDER: | |||||
return 'fa-check-circle-o'; | |||||
case DifferentialReviewerStatus::STATUS_REJECTED: | |||||
if ($is_current) { | |||||
return PHUIStatusItemView::ICON_REJECT; | |||||
} else { | |||||
return 'fa-times-circle-o'; | |||||
} | |||||
case DifferentialReviewerStatus::STATUS_REJECTED_OLDER: | |||||
return 'fa-times-circle-o'; | |||||
case DifferentialReviewerStatus::STATUS_COMMENTED: | |||||
return 'fa-question-circle'; | |||||
case DifferentialReviewerStatus::STATUS_BLOCKING: | |||||
return PHUIStatusItemView::ICON_MINUS; | |||||
default: | |||||
return PHUIStatusItemView::ICON_QUESTION; | |||||
} | |||||
} | |||||
// If we're missing either the diff or action information for the | public function getReviewerColor(DifferentialReviewer $reviewer) { | ||||
// reviewer, render information as current. | $is_current = $this->getIsCurrent($reviewer); | ||||
$is_current = (!$this->diff) || | |||||
(!$reviewer->getDiffID()) || | |||||
($this->diff->getID() == $reviewer->getDiffID()); | |||||
$item = new PHUIStatusItemView(); | switch ($reviewer->getStatus()) { | ||||
case DifferentialReviewerStatus::STATUS_ADDED: | |||||
return 'bluegrey'; | |||||
case DifferentialReviewerStatus::STATUS_ACCEPTED: | |||||
if ($is_current) { | |||||
return 'green'; | |||||
} else { | |||||
return 'bluegrey'; | |||||
} | |||||
case DifferentialReviewerStatus::STATUS_ACCEPTED_OLDER: | |||||
return 'bluegrey'; | |||||
case DifferentialReviewerStatus::STATUS_REJECTED: | |||||
if ($is_current) { | |||||
return 'red'; | |||||
} else { | |||||
return 'bluegrey'; | |||||
} | |||||
case DifferentialReviewerStatus::STATUS_REJECTED_OLDER: | |||||
return 'bluegrey'; | |||||
case DifferentialReviewerStatus::STATUS_COMMENTED: | |||||
return 'blue'; | |||||
case DifferentialReviewerStatus::STATUS_BLOCKING: | |||||
return 'red'; | |||||
default: | |||||
return 'bluegrey'; | |||||
} | |||||
} | |||||
$item->setHighlighted($reviewer->hasAuthority($viewer)); | public function getReviewerLabel(DifferentialReviewer $reviewer) { | ||||
$is_current = $this->getIsCurrent($reviewer); | |||||
switch ($reviewer->getStatus()) { | switch ($reviewer->getStatus()) { | ||||
case DifferentialReviewerStatus::STATUS_ADDED: | case DifferentialReviewerStatus::STATUS_ADDED: | ||||
$item->setIcon( | return pht('Review Requested'); | ||||
PHUIStatusItemView::ICON_OPEN, | |||||
'bluegrey', | |||||
pht('Review Requested')); | |||||
break; | |||||
case DifferentialReviewerStatus::STATUS_ACCEPTED: | case DifferentialReviewerStatus::STATUS_ACCEPTED: | ||||
if ($is_current) { | if ($is_current) { | ||||
$item->setIcon( | return pht('Accepted'); | ||||
PHUIStatusItemView::ICON_ACCEPT, | } else { | ||||
'green', | return pht('Accepted Prior Diff'); | ||||
pht('Accepted')); | |||||
} else { | |||||
$item->setIcon( | |||||
PHUIStatusItemView::ICON_ACCEPT, | |||||
'bluegrey', | |||||
pht('Accepted Prior Diff')); | |||||
} | } | ||||
break; | |||||
case DifferentialReviewerStatus::STATUS_ACCEPTED_OLDER: | case DifferentialReviewerStatus::STATUS_ACCEPTED_OLDER: | ||||
$item->setIcon( | return pht('Accepted Prior Diff'); | ||||
'fa-check-circle-o', | |||||
'bluegrey', | |||||
pht('Accepted Prior Diff')); | |||||
break; | |||||
case DifferentialReviewerStatus::STATUS_REJECTED: | case DifferentialReviewerStatus::STATUS_REJECTED: | ||||
if ($is_current) { | if ($is_current) { | ||||
$item->setIcon( | return pht('Requested Changes'); | ||||
PHUIStatusItemView::ICON_REJECT, | } else { | ||||
'red', | return pht('Requested Prior Changes'); | ||||
pht('Requested Changes')); | |||||
} else { | |||||
$item->setIcon( | |||||
'fa-times-circle-o', | |||||
'bluegrey', | |||||
pht('Requested Changes to Prior Diff')); | |||||
} | } | ||||
break; | |||||
case DifferentialReviewerStatus::STATUS_REJECTED_OLDER: | case DifferentialReviewerStatus::STATUS_REJECTED_OLDER: | ||||
$item->setIcon( | return pht('Requested Prior Changes'); | ||||
'fa-times-circle-o', | |||||
'bluegrey', | |||||
pht('Rejected Prior Diff')); | |||||
break; | |||||
case DifferentialReviewerStatus::STATUS_COMMENTED: | case DifferentialReviewerStatus::STATUS_COMMENTED: | ||||
if ($is_current) { | return pht('Commented'); | ||||
$item->setIcon( | case DifferentialReviewerStatus::STATUS_BLOCKING: | ||||
'fa-question-circle', | return pht('Blocking Review'); | ||||
'blue', | default: | ||||
pht('Commented')); | return pht('Unknown Status ("%s")', $reviewer->getStatus()); | ||||
} else { | } | ||||
$item->setIcon( | |||||
'fa-question-circle-o', | |||||
'bluegrey', | |||||
pht('Commented Previously')); | |||||
} | } | ||||
break; | |||||
case DifferentialReviewerStatus::STATUS_BLOCKING: | private function getIsCurrent(DifferentialReviewer $reviewer) { | ||||
$item->setIcon( | // If we're missing either the diff or action information for the | ||||
PHUIStatusItemView::ICON_MINUS, | // reviewer, render information as current. | ||||
'red', | |||||
pht('Blocking Review')); | |||||
break; | |||||
default: | if (!$this->diff) { | ||||
$item->setIcon( | return true; | ||||
PHUIStatusItemView::ICON_QUESTION, | } | ||||
'bluegrey', | |||||
pht('%s?', $reviewer->getStatus())); | if (!$reviewer->getDiffID()) { | ||||
break; | return true; | ||||
} | |||||
return ($this->diff->getID() == $reviewer->getDiffID()); | |||||
} | } | ||||
public function render() { | |||||
$viewer = $this->getUser(); | |||||
$view = new PHUIStatusListView(); | |||||
foreach ($this->reviewers as $reviewer) { | |||||
$phid = $reviewer->getReviewerPHID(); | |||||
$handle = $this->handles[$phid]; | |||||
$item = new PHUIStatusItemView(); | |||||
$item->setHighlighted($reviewer->hasAuthority($viewer)); | |||||
$icon = $this->getReviewerIcon($reviewer); | |||||
$color = $this->getReviewerColor($reviewer); | |||||
$label = $this->getReviewerLabel($reviewer); | |||||
$item->setIcon($icon, $color, $label); | |||||
$item->setTarget($handle->renderHovercardLink()); | $item->setTarget($handle->renderHovercardLink()); | ||||
$view->addItem($item); | $view->addItem($item); | ||||
} | } | ||||
return $view; | return $view; | ||||
} | } | ||||
} | } |