Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/view/DifferentialRevisionListView.php
| Show First 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | public function setHandles(array $handles) { | ||||
| assert_instances_of($handles, 'PhabricatorObjectHandle'); | assert_instances_of($handles, 'PhabricatorObjectHandle'); | ||||
| $this->handles = $handles; | $this->handles = $handles; | ||||
| return $this; | return $this; | ||||
| } | } | ||||
| public function render() { | public function render() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $fresh = PhabricatorEnv::getEnvConfig('differential.days-fresh'); | |||||
| if ($fresh) { | |||||
| $fresh = PhabricatorCalendarHoliday::getNthBusinessDay( | |||||
| time(), | |||||
| -$fresh); | |||||
| } | |||||
| $stale = PhabricatorEnv::getEnvConfig('differential.days-stale'); | |||||
| if ($stale) { | |||||
| $stale = PhabricatorCalendarHoliday::getNthBusinessDay( | |||||
| time(), | |||||
| -$stale); | |||||
| } | |||||
| $this->initBehavior('phabricator-tooltips', array()); | $this->initBehavior('phabricator-tooltips', array()); | ||||
| $this->requireResource('aphront-tooltip-css'); | $this->requireResource('aphront-tooltip-css'); | ||||
| $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); | ||||
| Show All 14 Lines | foreach ($this->revisions as $revision) { | ||||
| if ($revision->getDrafts($viewer)) { | if ($revision->getDrafts($viewer)) { | ||||
| $icons['draft'] = true; | $icons['draft'] = true; | ||||
| } | } | ||||
| $modified = $revision->getDateModified(); | $modified = $revision->getDateModified(); | ||||
| $status = $revision->getStatus(); | $status = $revision->getStatus(); | ||||
| $show_age = ($fresh || $stale) && | |||||
| $this->highlightAge && | |||||
| !$revision->isClosed(); | |||||
| if ($stale && $modified < $stale) { | |||||
| $object_age = PHUIObjectItemView::AGE_OLD; | |||||
| } else if ($fresh && $modified < $fresh) { | |||||
| $object_age = PHUIObjectItemView::AGE_STALE; | |||||
| } else { | |||||
| $object_age = PHUIObjectItemView::AGE_FRESH; | |||||
| } | |||||
| $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()); | $item->setObjectName('D'.$revision->getID()); | ||||
| $item->setHeader($revision->getTitle()); | $item->setHeader($revision->getTitle()); | ||||
| $item->setHref('/D'.$revision->getID()); | $item->setHref('/D'.$revision->getID()); | ||||
| 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 = $this->handles[$revision->getAuthorPHID()]; | ||||
| $item->addByline(pht('Author: %s', $author_handle->renderLink())); | $item->addByline(pht('Author: %s', $author_handle->renderLink())); | ||||
| $reviewers = array(); | $reviewers = array(); | ||||
| // TODO: As above, this should be based on `getReviewerStatus()`. | // TODO: As above, this should be based on `getReviewerStatus()`. | ||||
| foreach ($revision->getReviewers() as $reviewer) { | foreach ($revision->getReviewers() as $reviewer) { | ||||
| $reviewers[] = $this->handles[$reviewer]->renderLink(); | $reviewers[] = $this->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()); | ||||
| switch ($status) { | switch ($status) { | ||||
| case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: | case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: | ||||
| $item->setStatusIcon('fa-code grey', pht('Needs Review')); | $item->setStatusIcon('fa-code grey', pht('Needs Review')); | ||||
| break; | break; | ||||
| case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: | case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: | ||||
| $item->setStatusIcon('fa-refresh red', pht('Needs Revision')); | $item->setStatusIcon('fa-refresh red', pht('Needs Revision')); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines | |||||