mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +01:00
Allow to resign from an accepted revision when you didn't accept the diff.
Summary: Girish wants to be able to do this. Test Plan: Checked that I had the option in my sandbox on an accepted diff. Reviewers: epriestley, jungejason Reviewed By: jungejason CC: aran, jungejason, tuomaspelkonen, epriestley Differential Revision: 1020
This commit is contained in:
parent
dfa2e29a01
commit
a102c9a0fe
5 changed files with 29 additions and 21 deletions
|
@ -368,6 +368,7 @@ class DifferentialRevisionViewController extends DifferentialController {
|
|||
$viewer_phid = $this->getRequest()->getUser()->getPHID();
|
||||
$viewer_is_owner = ($viewer_phid == $revision->getAuthorPHID());
|
||||
$viewer_is_reviewer = in_array($viewer_phid, $revision->getReviewers());
|
||||
$viewer_did_accept = ($viewer_phid === $revision->loadReviewedBy());
|
||||
|
||||
if ($viewer_is_owner) {
|
||||
switch ($revision->getStatus()) {
|
||||
|
@ -403,6 +404,8 @@ class DifferentialRevisionViewController extends DifferentialController {
|
|||
break;
|
||||
case DifferentialRevisionStatus::ACCEPTED:
|
||||
$actions[DifferentialAction::ACTION_REJECT] = true;
|
||||
$actions[DifferentialAction::ACTION_RESIGN] =
|
||||
$viewer_is_reviewer && !$viewer_did_accept;
|
||||
break;
|
||||
case DifferentialRevisionStatus::COMMITTED:
|
||||
case DifferentialRevisionStatus::ABANDONED:
|
||||
|
|
|
@ -24,26 +24,10 @@ final class DifferentialReviewedByFieldSpecification
|
|||
protected function didSetRevision() {
|
||||
$this->reviewedBy = array();
|
||||
$revision = $this->getRevision();
|
||||
$reviewer = $revision->loadReviewedBy();
|
||||
|
||||
$status = $revision->getStatus();
|
||||
if ($status == DifferentialRevisionStatus::ACCEPTED ||
|
||||
$status == DifferentialRevisionStatus::COMMITTED) {
|
||||
$reviewer = null;
|
||||
$comments = $revision->loadComments();
|
||||
foreach ($comments as $comment) {
|
||||
$action = $comment->getAction();
|
||||
if ($action == DifferentialAction::ACTION_ACCEPT) {
|
||||
$reviewer = $comment->getAuthorPHID();
|
||||
} else if ($action == DifferentialAction::ACTION_REJECT ||
|
||||
$action == DifferentialAction::ACTION_ABANDON ||
|
||||
$action == DifferentialAction::ACTION_RETHINK) {
|
||||
$reviewer = null;
|
||||
}
|
||||
}
|
||||
|
||||
if ($reviewer) {
|
||||
$this->reviewedBy = array($reviewer);
|
||||
}
|
||||
if ($reviewer) {
|
||||
$this->reviewedBy = array($reviewer);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
|
||||
|
||||
|
||||
phutil_require_module('phabricator', 'applications/differential/constants/action');
|
||||
phutil_require_module('phabricator', 'applications/differential/constants/revisionstatus');
|
||||
phutil_require_module('phabricator', 'applications/differential/field/specification/base');
|
||||
|
||||
|
||||
|
|
|
@ -165,4 +165,25 @@ class DifferentialRevision extends DifferentialDAO {
|
|||
public function getUnsubscribedPHIDs() {
|
||||
return array_keys($this->getUnsubscribed());
|
||||
}
|
||||
|
||||
public function loadReviewedBy() {
|
||||
$reviewer = null;
|
||||
|
||||
if ($this->status == DifferentialRevisionStatus::ACCEPTED ||
|
||||
$this->status == DifferentialRevisionStatus::COMMITTED) {
|
||||
$comments = $this->loadComments();
|
||||
foreach ($comments as $comment) {
|
||||
$action = $comment->getAction();
|
||||
if ($action == DifferentialAction::ACTION_ACCEPT) {
|
||||
$reviewer = $comment->getAuthorPHID();
|
||||
} else if ($action == DifferentialAction::ACTION_REJECT ||
|
||||
$action == DifferentialAction::ACTION_ABANDON ||
|
||||
$action == DifferentialAction::ACTION_RETHINK) {
|
||||
$reviewer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $reviewer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
|
||||
|
||||
phutil_require_module('phabricator', 'applications/differential/constants/action');
|
||||
phutil_require_module('phabricator', 'applications/differential/constants/revisionstatus');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/base');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/comment');
|
||||
phutil_require_module('phabricator', 'applications/differential/storage/diff');
|
||||
|
|
Loading…
Reference in a new issue