diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -416,6 +416,7 @@ 'DifferentialLocalCommitsView' => 'applications/differential/view/DifferentialLocalCommitsView.php', 'DifferentialManiphestTasksField' => 'applications/differential/customfield/DifferentialManiphestTasksField.php', 'DifferentialModernHunk' => 'applications/differential/storage/DifferentialModernHunk.php', + 'DifferentialNextStepField' => 'applications/differential/customfield/DifferentialNextStepField.php', 'DifferentialParseCacheGarbageCollector' => 'applications/differential/garbagecollector/DifferentialParseCacheGarbageCollector.php', 'DifferentialParseCommitMessageConduitAPIMethod' => 'applications/differential/conduit/DifferentialParseCommitMessageConduitAPIMethod.php', 'DifferentialParseRenderTestCase' => 'applications/differential/__tests__/DifferentialParseRenderTestCase.php', @@ -4160,6 +4161,7 @@ 'DifferentialLocalCommitsView' => 'AphrontView', 'DifferentialManiphestTasksField' => 'DifferentialCoreCustomField', 'DifferentialModernHunk' => 'DifferentialHunk', + 'DifferentialNextStepField' => 'DifferentialCustomField', 'DifferentialParseCacheGarbageCollector' => 'PhabricatorGarbageCollector', 'DifferentialParseCommitMessageConduitAPIMethod' => 'DifferentialConduitAPIMethod', 'DifferentialParseRenderTestCase' => 'PhabricatorTestCase', diff --git a/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php b/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php --- a/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php +++ b/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php @@ -25,6 +25,8 @@ $custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType'; $fields = array( + new DifferentialNextStepField(), + new DifferentialTitleField(), new DifferentialSummaryField(), new DifferentialTestPlanField(), diff --git a/src/applications/differential/customfield/DifferentialNextStepField.php b/src/applications/differential/customfield/DifferentialNextStepField.php new file mode 100644 --- /dev/null +++ b/src/applications/differential/customfield/DifferentialNextStepField.php @@ -0,0 +1,65 @@ +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; + } + +} diff --git a/src/applications/differential/view/DifferentialRevisionDetailView.php b/src/applications/differential/view/DifferentialRevisionDetailView.php --- a/src/applications/differential/view/DifferentialRevisionDetailView.php +++ b/src/applications/differential/view/DifferentialRevisionDetailView.php @@ -73,36 +73,6 @@ ->setUser($user) ->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->setActionList($actions); $this->setActionList($actions);