mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-18 10:41:08 +01:00
Restore "Commandeer" action to Differential on EditEngine
Summary: Ref T11114. This has two pieces of side-effect logic which I've noted locally: - Commandeer needs to apply Herald rules. - Commandeer needs to move the old author to become a reviewer and remove the actor as a reviewer. Test Plan: Commandeered some revisions. Reviewers: chad Reviewed By: chad Maniphest Tasks: T11114 Differential Revision: https://secure.phabricator.com/D17111
This commit is contained in:
parent
deb19b2d57
commit
8b74cd481a
2 changed files with 69 additions and 0 deletions
|
@ -512,6 +512,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionAuthorProjectsHeraldField' => 'applications/differential/herald/DifferentialRevisionAuthorProjectsHeraldField.php',
|
'DifferentialRevisionAuthorProjectsHeraldField' => 'applications/differential/herald/DifferentialRevisionAuthorProjectsHeraldField.php',
|
||||||
'DifferentialRevisionCloseDetailsController' => 'applications/differential/controller/DifferentialRevisionCloseDetailsController.php',
|
'DifferentialRevisionCloseDetailsController' => 'applications/differential/controller/DifferentialRevisionCloseDetailsController.php',
|
||||||
'DifferentialRevisionCloseTransaction' => 'applications/differential/xaction/DifferentialRevisionCloseTransaction.php',
|
'DifferentialRevisionCloseTransaction' => 'applications/differential/xaction/DifferentialRevisionCloseTransaction.php',
|
||||||
|
'DifferentialRevisionCommandeerTransaction' => 'applications/differential/xaction/DifferentialRevisionCommandeerTransaction.php',
|
||||||
'DifferentialRevisionContentAddedHeraldField' => 'applications/differential/herald/DifferentialRevisionContentAddedHeraldField.php',
|
'DifferentialRevisionContentAddedHeraldField' => 'applications/differential/herald/DifferentialRevisionContentAddedHeraldField.php',
|
||||||
'DifferentialRevisionContentHeraldField' => 'applications/differential/herald/DifferentialRevisionContentHeraldField.php',
|
'DifferentialRevisionContentHeraldField' => 'applications/differential/herald/DifferentialRevisionContentHeraldField.php',
|
||||||
'DifferentialRevisionContentRemovedHeraldField' => 'applications/differential/herald/DifferentialRevisionContentRemovedHeraldField.php',
|
'DifferentialRevisionContentRemovedHeraldField' => 'applications/differential/herald/DifferentialRevisionContentRemovedHeraldField.php',
|
||||||
|
@ -5185,6 +5186,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionAuthorProjectsHeraldField' => 'DifferentialRevisionHeraldField',
|
'DifferentialRevisionAuthorProjectsHeraldField' => 'DifferentialRevisionHeraldField',
|
||||||
'DifferentialRevisionCloseDetailsController' => 'DifferentialController',
|
'DifferentialRevisionCloseDetailsController' => 'DifferentialController',
|
||||||
'DifferentialRevisionCloseTransaction' => 'DifferentialRevisionActionTransaction',
|
'DifferentialRevisionCloseTransaction' => 'DifferentialRevisionActionTransaction',
|
||||||
|
'DifferentialRevisionCommandeerTransaction' => 'DifferentialRevisionActionTransaction',
|
||||||
'DifferentialRevisionContentAddedHeraldField' => 'DifferentialRevisionHeraldField',
|
'DifferentialRevisionContentAddedHeraldField' => 'DifferentialRevisionHeraldField',
|
||||||
'DifferentialRevisionContentHeraldField' => 'DifferentialRevisionHeraldField',
|
'DifferentialRevisionContentHeraldField' => 'DifferentialRevisionHeraldField',
|
||||||
'DifferentialRevisionContentRemovedHeraldField' => 'DifferentialRevisionHeraldField',
|
'DifferentialRevisionContentRemovedHeraldField' => 'DifferentialRevisionHeraldField',
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DifferentialRevisionCommandeerTransaction
|
||||||
|
extends DifferentialRevisionActionTransaction {
|
||||||
|
|
||||||
|
const TRANSACTIONTYPE = 'differential.revision.commandeer';
|
||||||
|
const ACTIONKEY = 'commandeer';
|
||||||
|
|
||||||
|
protected function getRevisionActionLabel() {
|
||||||
|
return pht('Commandeer Revision');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getRevisionActionDescription() {
|
||||||
|
return pht('You will take control of this revision and become its author.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getIcon() {
|
||||||
|
return 'fa-flag';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getColor() {
|
||||||
|
return 'sky';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateOldValue($object) {
|
||||||
|
return $object->getAuthorPHID();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateNewValue($object, $value) {
|
||||||
|
$actor = $this->getActor();
|
||||||
|
return $actor->getPHID();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyInternalEffects($object, $value) {
|
||||||
|
$object->setAuthorPHID($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function validateAction($object, PhabricatorUser $viewer) {
|
||||||
|
if ($object->isClosed()) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'You can not commandeer this revision because it has already '.
|
||||||
|
'been closed. You can only commandeer open revisions.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->isViewerRevisionAuthor($object, $viewer)) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'You can not commandeer this revision because you are already '.
|
||||||
|
'the author.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle() {
|
||||||
|
return pht(
|
||||||
|
'%s commandeered this revision.',
|
||||||
|
$this->renderAuthor());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitleForFeed() {
|
||||||
|
return pht(
|
||||||
|
'%s commandeered %s.',
|
||||||
|
$this->renderAuthor(),
|
||||||
|
$this->renderObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue