2014-02-19 01:32:55 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
final class DifferentialTitleField
|
2014-02-21 20:52:52 +01:00
|
|
|
extends DifferentialCoreCustomField {
|
2014-02-19 01:32:55 +01:00
|
|
|
|
|
|
|
public function getFieldKey() {
|
|
|
|
return 'differential:title';
|
|
|
|
}
|
|
|
|
|
2014-03-08 02:05:00 +01:00
|
|
|
public function getFieldKeyForConduit() {
|
|
|
|
return 'title';
|
|
|
|
}
|
|
|
|
|
2014-02-19 01:32:55 +01:00
|
|
|
public function getFieldName() {
|
|
|
|
return pht('Title');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getFieldDescription() {
|
|
|
|
return pht('Stores the revision title.');
|
|
|
|
}
|
|
|
|
|
2014-03-08 02:05:00 +01:00
|
|
|
public static function getDefaultTitle() {
|
|
|
|
return pht('<<Replace this line with your Revision Title>>');
|
|
|
|
}
|
|
|
|
|
2014-02-21 20:52:52 +01:00
|
|
|
protected function readValueFromRevision(
|
|
|
|
DifferentialRevision $revision) {
|
|
|
|
return $revision->getTitle();
|
2014-02-19 01:32:55 +01:00
|
|
|
}
|
|
|
|
|
2014-02-21 20:52:52 +01:00
|
|
|
protected function writeValueToRevision(
|
|
|
|
DifferentialRevision $revision,
|
|
|
|
$value) {
|
|
|
|
$revision->setTitle($value);
|
2014-02-19 01:32:55 +01:00
|
|
|
}
|
|
|
|
|
2014-02-21 20:53:27 +01:00
|
|
|
protected function getCoreFieldRequiredErrorString() {
|
|
|
|
return pht('You must choose a title for this revision.');
|
2014-02-19 01:32:55 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function readValueFromRequest(AphrontRequest $request) {
|
2014-02-21 20:52:52 +01:00
|
|
|
$this->setValue($request->getStr($this->getFieldKey()));
|
2014-02-19 01:32:55 +01:00
|
|
|
}
|
|
|
|
|
2014-02-21 20:53:27 +01:00
|
|
|
protected function isCoreFieldRequired() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2014-02-21 20:53:37 +01:00
|
|
|
public function renderEditControl(array $handles) {
|
2014-02-19 01:32:55 +01:00
|
|
|
return id(new AphrontFormTextAreaControl())
|
|
|
|
->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_SHORT)
|
|
|
|
->setName($this->getFieldKey())
|
2014-02-21 20:52:52 +01:00
|
|
|
->setValue($this->getValue())
|
2014-02-19 01:32:55 +01:00
|
|
|
->setError($this->getFieldError())
|
|
|
|
->setLabel($this->getFieldName());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getApplicationTransactionTitle(
|
|
|
|
PhabricatorApplicationTransaction $xaction) {
|
|
|
|
$author_phid = $xaction->getAuthorPHID();
|
|
|
|
$old = $xaction->getOldValue();
|
|
|
|
$new = $xaction->getNewValue();
|
|
|
|
|
|
|
|
if (strlen($old)) {
|
|
|
|
return pht(
|
|
|
|
'%s retitled this revision from "%s" to "%s".',
|
|
|
|
$xaction->renderHandleLink($author_phid),
|
|
|
|
$old,
|
|
|
|
$new);
|
|
|
|
} else {
|
|
|
|
return pht(
|
|
|
|
'%s created 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();
|
|
|
|
|
|
|
|
if (strlen($old)) {
|
|
|
|
return pht(
|
|
|
|
'%s retitled %s, from "%s" to "%s".',
|
|
|
|
$xaction->renderHandleLink($author_phid),
|
|
|
|
$xaction->renderHandleLink($object_phid),
|
|
|
|
$old,
|
|
|
|
$new);
|
|
|
|
} else {
|
|
|
|
return pht(
|
|
|
|
'%s created %s.',
|
|
|
|
$xaction->renderHandleLink($author_phid),
|
|
|
|
$xaction->renderHandleLink($object_phid));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-08 02:05:00 +01:00
|
|
|
public function shouldAppearInCommitMessage() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function shouldOverwriteWhenCommitMessageIsEdited() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function validateCommitMessageValue($value) {
|
|
|
|
if (!strlen($value)) {
|
|
|
|
throw new DifferentialFieldValidationException(
|
|
|
|
pht(
|
2014-06-09 20:36:49 +02:00
|
|
|
'You must provide a revision title in the first line '.
|
|
|
|
'of your commit message.'));
|
2014-03-08 02:05:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if (preg_match('/^<<.*>>$/', $value)) {
|
|
|
|
throw new DifferentialFieldValidationException(
|
|
|
|
pht(
|
|
|
|
'Replace the line "%s" with a human-readable revision title which '.
|
|
|
|
'describes the changes you are making.',
|
|
|
|
self::getDefaultTitle()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-02-19 01:32:55 +01:00
|
|
|
}
|