mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-28 16:30:59 +01:00
11c1edfb74
Summary: Ref T2222. Differential has certain "words of power" (like `Ref T123` or `Depends on D345`) which should expand into a separate transaction when they appear anywhere in text. Currently, they're respected in only some fields. I'm expanding them to work in any remarkup field, including comments and inline comments. This partially generalizes transaction expansion/extraction in comments. Eventually, I'll probably implement some very soft sort of reference edge for T4036, maybe. Test Plan: {F119368} Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T2222 Differential Revision: https://secure.phabricator.com/D8369
141 lines
3.6 KiB
PHP
141 lines
3.6 KiB
PHP
<?php
|
|
|
|
final class DifferentialTestPlanField
|
|
extends DifferentialCoreCustomField {
|
|
|
|
public function getFieldKey() {
|
|
return 'differential:test-plan';
|
|
}
|
|
|
|
public function getFieldName() {
|
|
return pht('Test Plan');
|
|
}
|
|
|
|
public function getFieldDescription() {
|
|
return pht('Actions performed to verify the behavior of the change.');
|
|
}
|
|
|
|
protected function readValueFromRevision(
|
|
DifferentialRevision $revision) {
|
|
return $revision->getTestPlan();
|
|
}
|
|
|
|
protected function writeValueToRevision(
|
|
DifferentialRevision $revision,
|
|
$value) {
|
|
$revision->setTestPlan($value);
|
|
}
|
|
|
|
protected function isCoreFieldRequired() {
|
|
return PhabricatorEnv::getEnvConfig('differential.require-test-plan-field');
|
|
}
|
|
|
|
public function canDisableField() {
|
|
return true;
|
|
}
|
|
|
|
protected function getCoreFieldRequiredErrorString() {
|
|
return pht(
|
|
'You must provide a test plan: describe the actions you performed '.
|
|
'to verify the behvaior of this change.');
|
|
}
|
|
|
|
public function readValueFromRequest(AphrontRequest $request) {
|
|
$this->setValue($request->getStr($this->getFieldKey()));
|
|
}
|
|
|
|
public function renderEditControl(array $handles) {
|
|
return id(new PhabricatorRemarkupControl())
|
|
->setName($this->getFieldKey())
|
|
->setValue($this->getValue())
|
|
->setError($this->getFieldError())
|
|
->setLabel($this->getFieldName());
|
|
}
|
|
|
|
public function getApplicationTransactionTitle(
|
|
PhabricatorApplicationTransaction $xaction) {
|
|
$author_phid = $xaction->getAuthorPHID();
|
|
$old = $xaction->getOldValue();
|
|
$new = $xaction->getNewValue();
|
|
|
|
return pht(
|
|
'%s updated the test plan for this revision.',
|
|
$xaction->renderHandleLink($author_phid));
|
|
}
|
|
|
|
public function getApplicationTransactionTitleForFeed(
|
|
PhabricatorApplicationTransaction $xaction,
|
|
PhabricatorFeedStory $story) {
|
|
|
|
$object_phid = $xaction->getObjectPHID();
|
|
$author_phid = $xaction->getAuthorPHID();
|
|
$old = $xaction->getOldValue();
|
|
$new = $xaction->getNewValue();
|
|
|
|
return pht(
|
|
'%s updated the test plan for %s.',
|
|
$xaction->renderHandleLink($author_phid),
|
|
$xaction->renderHandleLink($object_phid));
|
|
}
|
|
|
|
public function getApplicationTransactionHasChangeDetails(
|
|
PhabricatorApplicationTransaction $xaction) {
|
|
return true;
|
|
}
|
|
|
|
public function getApplicationTransactionChangeDetails(
|
|
PhabricatorApplicationTransaction $xaction,
|
|
PhabricatorUser $viewer) {
|
|
return $xaction->renderTextCorpusChangeDetails(
|
|
$viewer,
|
|
$xaction->getOldValue(),
|
|
$xaction->getNewValue());
|
|
}
|
|
|
|
|
|
public function shouldAppearInGlobalSearch() {
|
|
return true;
|
|
}
|
|
|
|
public function updateAbstractDocument(
|
|
PhabricatorSearchAbstractDocument $document) {
|
|
if (strlen($this->getValue())) {
|
|
$document->addField('plan', $this->getValue());
|
|
}
|
|
}
|
|
|
|
public function shouldAppearInPropertyView() {
|
|
return true;
|
|
}
|
|
|
|
public function renderPropertyViewLabel() {
|
|
return $this->getFieldName();
|
|
}
|
|
|
|
public function getStyleForPropertyView() {
|
|
return 'block';
|
|
}
|
|
|
|
public function getIconForPropertyView() {
|
|
return PHUIPropertyListView::ICON_TESTPLAN;
|
|
}
|
|
|
|
public function renderPropertyViewValue(array $handles) {
|
|
if (!strlen($this->getValue())) {
|
|
return null;
|
|
}
|
|
|
|
return PhabricatorMarkupEngine::renderOneObject(
|
|
id(new PhabricatorMarkupOneOff())
|
|
->setPreserveLinebreaks(true)
|
|
->setContent($this->getValue()),
|
|
'default',
|
|
$this->getViewer());
|
|
}
|
|
|
|
public function getApplicationTransactionRemarkupBlocks(
|
|
PhabricatorApplicationTransaction $xaction) {
|
|
return array($xaction->getNewValue());
|
|
}
|
|
|
|
}
|