mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-19 03:01:11 +01:00
Move "Next Step" to a custom field in Differential
Summary: Fixes T9672. This was never turned into a custom field, for no particular reason. Convert it into one. This is substantially similar to the existing "Apply Patch" field, which does the same thing (only shows a command). We might rethink or remove this eventually (e.g., in a post-"Land Revision" world) but this makes it easier, at the very least. Test Plan: - Viewed a non-accepted revision (no hint). - Viewed an accepted revision from a raw diff source (no hint). - Viewed an accepted revision from Git (`arc land` hint). Reviewers: chad Reviewed By: chad Maniphest Tasks: T9672 Differential Revision: https://secure.phabricator.com/D14367
This commit is contained in:
parent
1b8337871b
commit
2c3dbc48ee
4 changed files with 69 additions and 30 deletions
|
@ -416,6 +416,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialLocalCommitsView' => 'applications/differential/view/DifferentialLocalCommitsView.php',
|
'DifferentialLocalCommitsView' => 'applications/differential/view/DifferentialLocalCommitsView.php',
|
||||||
'DifferentialManiphestTasksField' => 'applications/differential/customfield/DifferentialManiphestTasksField.php',
|
'DifferentialManiphestTasksField' => 'applications/differential/customfield/DifferentialManiphestTasksField.php',
|
||||||
'DifferentialModernHunk' => 'applications/differential/storage/DifferentialModernHunk.php',
|
'DifferentialModernHunk' => 'applications/differential/storage/DifferentialModernHunk.php',
|
||||||
|
'DifferentialNextStepField' => 'applications/differential/customfield/DifferentialNextStepField.php',
|
||||||
'DifferentialParseCacheGarbageCollector' => 'applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php',
|
'DifferentialParseCacheGarbageCollector' => 'applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php',
|
||||||
'DifferentialParseCommitMessageConduitAPIMethod' => 'applications/differential/conduit/DifferentialParseCommitMessageConduitAPIMethod.php',
|
'DifferentialParseCommitMessageConduitAPIMethod' => 'applications/differential/conduit/DifferentialParseCommitMessageConduitAPIMethod.php',
|
||||||
'DifferentialParseRenderTestCase' => 'applications/differential/__tests__/DifferentialParseRenderTestCase.php',
|
'DifferentialParseRenderTestCase' => 'applications/differential/__tests__/DifferentialParseRenderTestCase.php',
|
||||||
|
@ -4160,6 +4161,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialLocalCommitsView' => 'AphrontView',
|
'DifferentialLocalCommitsView' => 'AphrontView',
|
||||||
'DifferentialManiphestTasksField' => 'DifferentialCoreCustomField',
|
'DifferentialManiphestTasksField' => 'DifferentialCoreCustomField',
|
||||||
'DifferentialModernHunk' => 'DifferentialHunk',
|
'DifferentialModernHunk' => 'DifferentialHunk',
|
||||||
|
'DifferentialNextStepField' => 'DifferentialCustomField',
|
||||||
'DifferentialParseCacheGarbageCollector' => 'PhabricatorGarbageCollector',
|
'DifferentialParseCacheGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
'DifferentialParseCommitMessageConduitAPIMethod' => 'DifferentialConduitAPIMethod',
|
'DifferentialParseCommitMessageConduitAPIMethod' => 'DifferentialConduitAPIMethod',
|
||||||
'DifferentialParseRenderTestCase' => 'PhabricatorTestCase',
|
'DifferentialParseRenderTestCase' => 'PhabricatorTestCase',
|
||||||
|
|
|
@ -25,6 +25,8 @@ final class PhabricatorDifferentialConfigOptions
|
||||||
$custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType';
|
$custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType';
|
||||||
|
|
||||||
$fields = array(
|
$fields = array(
|
||||||
|
new DifferentialNextStepField(),
|
||||||
|
|
||||||
new DifferentialTitleField(),
|
new DifferentialTitleField(),
|
||||||
new DifferentialSummaryField(),
|
new DifferentialSummaryField(),
|
||||||
new DifferentialTestPlanField(),
|
new DifferentialTestPlanField(),
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DifferentialNextStepField
|
||||||
|
extends DifferentialCustomField {
|
||||||
|
|
||||||
|
public function getFieldKey() {
|
||||||
|
return 'differential:next-step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFieldName() {
|
||||||
|
return pht('Next Step');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFieldDescription() {
|
||||||
|
return pht('Provides a hint for the next step to take.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function shouldAppearInPropertyView() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renderPropertyViewLabel() {
|
||||||
|
return $this->getFieldName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renderPropertyViewValue(array $handles) {
|
||||||
|
$revision = $this->getObject();
|
||||||
|
$diff = $revision->getActiveDiff();
|
||||||
|
|
||||||
|
$status = $revision->getStatus();
|
||||||
|
if ($status != ArcanistDifferentialRevisionStatus::ACCEPTED) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$local_vcs = $diff->getSourceControlSystem();
|
||||||
|
switch ($local_vcs) {
|
||||||
|
case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL:
|
||||||
|
$bookmark = $diff->getBookmark();
|
||||||
|
if (strlen($bookmark)) {
|
||||||
|
$next_step = csprintf('arc land %R', $bookmark);
|
||||||
|
} else {
|
||||||
|
$next_step = csprintf('arc land');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT:
|
||||||
|
$branch = $diff->getBranch();
|
||||||
|
if (strlen($branch)) {
|
||||||
|
$next_step = csprintf('arc land %R', $branch);
|
||||||
|
} else {
|
||||||
|
$next_step = csprintf('arc land');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
|
||||||
|
$next_step = csprintf('arc commit');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$next_step = phutil_tag('tt', array(), (string)$next_step);
|
||||||
|
|
||||||
|
return $next_step;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -73,36 +73,6 @@ final class DifferentialRevisionDetailView extends AphrontView {
|
||||||
->setUser($user)
|
->setUser($user)
|
||||||
->setObject($revision);
|
->setObject($revision);
|
||||||
|
|
||||||
$status = $revision->getStatus();
|
|
||||||
$local_vcs = $this->getDiff()->getSourceControlSystem();
|
|
||||||
|
|
||||||
$next_step = null;
|
|
||||||
if ($status == ArcanistDifferentialRevisionStatus::ACCEPTED) {
|
|
||||||
switch ($local_vcs) {
|
|
||||||
case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL:
|
|
||||||
$bookmark = $this->getDiff()->getBookmark();
|
|
||||||
$next_step = ($bookmark != ''
|
|
||||||
? csprintf('arc land %s', $bookmark)
|
|
||||||
: 'arc land');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT:
|
|
||||||
$branch = $this->getDiff()->getBranch();
|
|
||||||
$next_step = ($branch != ''
|
|
||||||
? csprintf('arc land %s', $branch)
|
|
||||||
: 'arc land');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
|
|
||||||
$next_step = 'arc commit';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($next_step) {
|
|
||||||
$next_step = phutil_tag('tt', array(), $next_step);
|
|
||||||
$properties->addProperty(pht('Next Step'), $next_step);
|
|
||||||
}
|
|
||||||
|
|
||||||
$properties->setHasKeyboardShortcuts(true);
|
$properties->setHasKeyboardShortcuts(true);
|
||||||
$properties->setActionList($actions);
|
$properties->setActionList($actions);
|
||||||
$this->setActionList($actions);
|
$this->setActionList($actions);
|
||||||
|
|
Loading…
Reference in a new issue