2014-02-21 20:53:27 +01:00
|
|
|
<?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()));
|
|
|
|
}
|
|
|
|
|
2014-02-21 20:53:37 +01:00
|
|
|
public function renderEditControl(array $handles) {
|
2014-02-21 20:53:27 +01:00
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2014-02-26 20:18:06 +01:00
|
|
|
|
|
|
|
public function shouldAppearInGlobalSearch() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function updateAbstractDocument(
|
|
|
|
PhabricatorSearchAbstractDocument $document) {
|
|
|
|
if (strlen($this->getValue())) {
|
|
|
|
$document->addField('plan', $this->getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-02-27 01:53:42 +01:00
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2014-02-21 20:53:27 +01:00
|
|
|
}
|