Skip to content

Commit b21b73b

Browse files
author
epriestley
committedJul 9, 2020
Expand Revision transaction API to allow actions to vary more broadly based on the viewer and revision state
Summary: See PHI1810. Build toward support for "Request Review" by non-authors on drafts, to forcefully pull a revision out of draft. Currently, some action strings can't vary based on revision state or the current viewer, so this "pull out of draft" action would have to either: say "Request Review"; or be a totally separate action. Neither seem great, so allow the labels and messages to vary based on the viewer and revision state. Test Plan: Grepped for affected symbols, see followup changes. Differential Revision: https://secure.phabricator.com/D21401
1 parent 73c4240 commit b21b73b

11 files changed

+64
-27
lines changed
 

‎src/applications/differential/xaction/DifferentialRevisionAbandonTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionAbandonTransaction
66
const TRANSACTIONTYPE = 'differential.revision.abandon';
77
const ACTIONKEY = 'abandon';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Abandon Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('This revision will be abandoned and closed.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionAcceptTransaction
66
const TRANSACTIONTYPE = 'differential.revision.accept';
77
const ACTIONKEY = 'accept';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Accept Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('These changes will be approved.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionActionTransaction.php

+12-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ public function isActionAvailable($object, PhabricatorUser $viewer) {
1717
}
1818

1919
abstract protected function validateAction($object, PhabricatorUser $viewer);
20-
abstract protected function getRevisionActionLabel();
20+
abstract protected function getRevisionActionLabel(
21+
DifferentialRevision $revision,
22+
PhabricatorUser $viewer);
2123

2224
protected function validateOptionValue($object, $actor, array $value) {
2325
return null;
@@ -53,12 +55,14 @@ protected function getRevisionActionGroupKey() {
5355
}
5456

5557
protected function getRevisionActionDescription(
56-
DifferentialRevision $revision) {
58+
DifferentialRevision $revision,
59+
PhabricatorUser $viewer) {
5760
return null;
5861
}
5962

6063
protected function getRevisionActionSubmitButtonText(
61-
DifferentialRevision $revision) {
64+
DifferentialRevision $revision,
65+
PhabricatorUser $viewer) {
6266
return null;
6367
}
6468

@@ -105,17 +109,19 @@ public function newEditField(
105109
->setValue(true);
106110

107111
if ($this->isActionAvailable($revision, $viewer)) {
108-
$label = $this->getRevisionActionLabel();
112+
$label = $this->getRevisionActionLabel($revision, $viewer);
109113
if ($label !== null) {
110114
$field->setCommentActionLabel($label);
111115

112-
$description = $this->getRevisionActionDescription($revision);
116+
$description = $this->getRevisionActionDescription($revision, $viewer);
113117
$field->setActionDescription($description);
114118

115119
$group_key = $this->getRevisionActionGroupKey();
116120
$field->setCommentActionGroupKey($group_key);
117121

118-
$button_text = $this->getRevisionActionSubmitButtonText($revision);
122+
$button_text = $this->getRevisionActionSubmitButtonText(
123+
$revision,
124+
$viewer);
119125
$field->setActionSubmitButtonText($button_text);
120126

121127
// Currently, every revision action conflicts with every other

‎src/applications/differential/xaction/DifferentialRevisionCloseTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionCloseTransaction
66
const TRANSACTIONTYPE = 'differential.revision.close';
77
const ACTIONKEY = 'close';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Close Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('This revision will be closed.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionCommandeerTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionCommandeerTransaction
66
const TRANSACTIONTYPE = 'differential.revision.commandeer';
77
const ACTIONKEY = 'commandeer';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Commandeer Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('You will take control of this revision and become its author.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionPlanChangesTransaction
66
const TRANSACTIONTYPE = 'differential.revision.plan';
77
const ACTIONKEY = 'plan-changes';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Plan Changes');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht(
1619
'This revision will be removed from review queues until it is revised.');
1720
}

‎src/applications/differential/xaction/DifferentialRevisionReclaimTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionReclaimTransaction
66
const TRANSACTIONTYPE = 'differential.revision.reclaim';
77
const ACTIONKEY = 'reclaim';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Reclaim Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('This revision will be reclaimed and reopened.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionRejectTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionRejectTransaction
66
const TRANSACTIONTYPE = 'differential.revision.reject';
77
const ACTIONKEY = 'reject';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Request Changes');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('This revision will be returned to the author for updates.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionReopenTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionReopenTransaction
66
const TRANSACTIONTYPE = 'differential.revision.reopen';
77
const ACTIONKEY = 'reopen';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Reopen Revision');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('This revision will be reopened for review.');
1619
}
1720

‎src/applications/differential/xaction/DifferentialRevisionRequestReviewTransaction.php

+7-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionRequestReviewTransaction
66
const TRANSACTIONTYPE = 'differential.revision.request';
77
const ACTIONKEY = 'request-review';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Request Review');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
if ($revision->isDraft()) {
1619
return pht('This revision will be submitted to reviewers for feedback.');
1720
} else {
@@ -20,7 +23,8 @@ protected function getRevisionActionDescription(
2023
}
2124

2225
protected function getRevisionActionSubmitButtonText(
23-
DifferentialRevision $revision) {
26+
DifferentialRevision $revision,
27+
PhabricatorUser $viewer) {
2428

2529
// See PHI975. When the action stack will promote the revision out of
2630
// draft, change the button text from "Submit Quietly".

‎src/applications/differential/xaction/DifferentialRevisionResignTransaction.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ final class DifferentialRevisionResignTransaction
66
const TRANSACTIONTYPE = 'differential.revision.resign';
77
const ACTIONKEY = 'resign';
88

9-
protected function getRevisionActionLabel() {
9+
protected function getRevisionActionLabel(
10+
DifferentialRevision $revision,
11+
PhabricatorUser $viewer) {
1012
return pht('Resign as Reviewer');
1113
}
1214

1315
protected function getRevisionActionDescription(
14-
DifferentialRevision $revision) {
16+
DifferentialRevision $revision,
17+
PhabricatorUser $viewer) {
1518
return pht('You will resign as a reviewer for this change.');
1619
}
1720

0 commit comments

Comments
 (0)
Failed to load comments.