mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-14 19:02:41 +01:00
b435c03eca
Summary: See D7653. This is exclusively for Asana, who uses Differential for a post-commit, Audit-like workflow but has a small set of requirements for it to be a good fit (just this) and a large set of requirements for Diffusion/Audit to be a good fit. Test Plan: Set the flag, verified "Accepted" revisions are no longer on the dashboard. Reviewers: btrahan Reviewed By: btrahan CC: aran Differential Revision: https://secure.phabricator.com/D7654
105 lines
3 KiB
PHP
105 lines
3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* NOTE: you probably want {@class:ArcanistDifferentialRevisionStatus}.
|
|
* This class just contains a mapping for color within the Differential
|
|
* application.
|
|
*/
|
|
|
|
final class DifferentialRevisionStatus {
|
|
|
|
const COLOR_STATUS_DEFAULT = 'status';
|
|
const COLOR_STATUS_DARK = 'status-dark';
|
|
const COLOR_STATUS_GREEN = 'status-green';
|
|
const COLOR_STATUS_RED = 'status-red';
|
|
|
|
public static function getRevisionStatusColor($status) {
|
|
$default = self::COLOR_STATUS_DEFAULT;
|
|
|
|
$map = array(
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVIEW =>
|
|
self::COLOR_STATUS_DEFAULT,
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVISION =>
|
|
self::COLOR_STATUS_RED,
|
|
ArcanistDifferentialRevisionStatus::ACCEPTED =>
|
|
self::COLOR_STATUS_GREEN,
|
|
ArcanistDifferentialRevisionStatus::CLOSED =>
|
|
self::COLOR_STATUS_DARK,
|
|
ArcanistDifferentialRevisionStatus::ABANDONED =>
|
|
self::COLOR_STATUS_DARK,
|
|
);
|
|
return idx($map, $status, $default);
|
|
}
|
|
|
|
public static function getRevisionStatusIcon($status) {
|
|
$default = 'oh-open';
|
|
|
|
$map = array(
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVIEW =>
|
|
'oh-open',
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVISION =>
|
|
'oh-open-red',
|
|
ArcanistDifferentialRevisionStatus::ACCEPTED =>
|
|
'oh-open-green',
|
|
ArcanistDifferentialRevisionStatus::CLOSED =>
|
|
'oh-closed-dark',
|
|
ArcanistDifferentialRevisionStatus::ABANDONED =>
|
|
'oh-closed-dark',
|
|
);
|
|
return idx($map, $status, $default);
|
|
}
|
|
|
|
public static function renderFullDescription($status) {
|
|
$color = self::getRevisionStatusColor($status);
|
|
$status_name =
|
|
ArcanistDifferentialRevisionStatus::getNameForRevisionStatus($status);
|
|
|
|
$img = id(new PHUIIconView())
|
|
->setSpriteSheet(PHUIIconView::SPRITE_STATUS)
|
|
->setSpriteIcon(self::getRevisionStatusIcon($status));
|
|
|
|
$tag = phutil_tag(
|
|
'span',
|
|
array(
|
|
'class' => 'phui-header-'.$color.' plr',
|
|
),
|
|
array(
|
|
$img,
|
|
$status_name,
|
|
));
|
|
|
|
return $tag;
|
|
}
|
|
|
|
public static function getClosedStatuses() {
|
|
$statuses = array(
|
|
ArcanistDifferentialRevisionStatus::CLOSED,
|
|
ArcanistDifferentialRevisionStatus::ABANDONED,
|
|
);
|
|
|
|
if (PhabricatorEnv::getEnvConfig('differential.close-on-accept')) {
|
|
$statuses[] = ArcanistDifferentialRevisionStatus::ACCEPTED;
|
|
}
|
|
|
|
return $statuses;
|
|
}
|
|
|
|
public static function getOpenStatuses() {
|
|
return array_diff(self::getAllStatuses(), self::getClosedStatuses());
|
|
}
|
|
|
|
public static function getAllStatuses() {
|
|
return array(
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVIEW,
|
|
ArcanistDifferentialRevisionStatus::NEEDS_REVISION,
|
|
ArcanistDifferentialRevisionStatus::ACCEPTED,
|
|
ArcanistDifferentialRevisionStatus::CLOSED,
|
|
ArcanistDifferentialRevisionStatus::ABANDONED,
|
|
);
|
|
}
|
|
|
|
public static function isClosedStatus($status) {
|
|
return in_array($status, self::getClosedStatuses());
|
|
}
|
|
|
|
}
|