1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-09 05:18:29 +01:00

Restore fields to Releeph from prior to CustomField patch

Summary: See notes / inlines.

Test Plan: See inlines.

Reviewers: wez, btrahan

Reviewed By: btrahan

CC: btrahan, aran

Differential Revision: https://secure.phabricator.com/D6831
This commit is contained in:
epriestley 2013-08-28 13:06:29 -07:00
parent 55e2efc6fc
commit 5138bf8bff
3 changed files with 162 additions and 55 deletions

View file

@ -2,63 +2,151 @@
final class ReleephDefaultFieldSelector extends ReleephFieldSelector { final class ReleephDefaultFieldSelector extends ReleephFieldSelector {
/**
* Determine if this install is Facebook.
*
* TODO: This is a giant hacky mess because I am dumb and moved forward on
* Releeph changes with partial information. Recover from this as gracefully
* as possible. This obivously is an abomination. -epriestley
*/
public static function isFacebook() {
try {
class_exists('ReleephFacebookKarmaFieldSpecification');
return true;
} catch (Exception $ex) {
return false;
}
}
/**
* @phutil-external-symbol class ReleephFacebookKarmaFieldSpecification
* @phutil-external-symbol class ReleephFacebookSeverityFieldSpecification
* @phutil-external-symbol class ReleephFacebookTagFieldSpecification
* @phutil-external-symbol class ReleephFacebookTasksFieldSpecification
*/
public function getFieldSpecifications() { public function getFieldSpecifications() {
return array( if (self::isFacebook()) {
new ReleephCommitMessageFieldSpecification(), return array(
new ReleephSummaryFieldSpecification(), new ReleephCommitMessageFieldSpecification(),
new ReleephReasonFieldSpecification(), new ReleephSummaryFieldSpecification(),
new ReleephAuthorFieldSpecification(), new ReleephReasonFieldSpecification(),
new ReleephRevisionFieldSpecification(), new ReleephAuthorFieldSpecification(),
new ReleephRequestorFieldSpecification(), new ReleephRevisionFieldSpecification(),
new ReleephSeverityFieldSpecification(), new ReleephRequestorFieldSpecification(),
new ReleephOriginalCommitFieldSpecification(), new ReleephFacebookKarmaFieldSpecification(),
new ReleephDiffMessageFieldSpecification(), new ReleephFacebookSeverityFieldSpecification(),
new ReleephStatusFieldSpecification(), new ReleephOriginalCommitFieldSpecification(),
new ReleephIntentFieldSpecification(), new ReleephDiffMessageFieldSpecification(),
new ReleephBranchCommitFieldSpecification(), new ReleephStatusFieldSpecification(),
new ReleephDiffSizeFieldSpecification(), new ReleephIntentFieldSpecification(),
new ReleephDiffChurnFieldSpecification(), new ReleephBranchCommitFieldSpecification(),
); new ReleephDiffSizeFieldSpecification(),
new ReleephDiffChurnFieldSpecification(),
new ReleephFacebookTagFieldSpecification(),
new ReleephFacebookTasksFieldSpecification(),
);
} else {
return array(
new ReleephCommitMessageFieldSpecification(),
new ReleephSummaryFieldSpecification(),
new ReleephReasonFieldSpecification(),
new ReleephAuthorFieldSpecification(),
new ReleephRevisionFieldSpecification(),
new ReleephRequestorFieldSpecification(),
new ReleephSeverityFieldSpecification(),
new ReleephOriginalCommitFieldSpecification(),
new ReleephDiffMessageFieldSpecification(),
new ReleephStatusFieldSpecification(),
new ReleephIntentFieldSpecification(),
new ReleephBranchCommitFieldSpecification(),
new ReleephDiffSizeFieldSpecification(),
new ReleephDiffChurnFieldSpecification(),
);
}
} }
public function arrangeFieldsForHeaderView(array $fields) { public function arrangeFieldsForHeaderView(array $fields) {
return array( if (self::isFacebook()) {
// Top group return array(
array( // Top group
'left' => self::selectFields($fields, array( array(
'ReleephAuthorFieldSpecification', 'left' => self::selectFields($fields, array(
'ReleephRevisionFieldSpecification', 'ReleephAuthorFieldSpecification',
'ReleephOriginalCommitFieldSpecification', 'ReleephRevisionFieldSpecification',
'ReleephDiffSizeFieldSpecification', 'ReleephOriginalCommitFieldSpecification',
'ReleephDiffChurnFieldSpecification', 'ReleephDiffSizeFieldSpecification',
)), 'ReleephDiffChurnFieldSpecification',
'right' => self::selectFields($fields, array( 'ReleephFacebookTasksFieldSpecification',
'ReleephRequestorFieldSpecification', )),
'ReleephSeverityFieldSpecification', 'right' => self::selectFields($fields, array(
'ReleephStatusFieldSpecification', 'ReleephRequestorFieldSpecification',
'ReleephIntentFieldSpecification', 'ReleephFacebookKarmaFieldSpecification',
'ReleephBranchCommitFieldSpecification', 'ReleephFacebookSeverityFieldSpecification',
)) 'ReleephFacebookTagFieldSpecification',
), 'ReleephStatusFieldSpecification',
'ReleephIntentFieldSpecification',
'ReleephBranchCommitFieldSpecification',
))
),
// Bottom group // Bottom group
array( array(
'left' => self::selectFields($fields, array( 'left' => self::selectFields($fields, array(
'ReleephDiffMessageFieldSpecification', 'ReleephDiffMessageFieldSpecification',
)), )),
'right' => self::selectFields($fields, array( 'right' => self::selectFields($fields, array(
'ReleephReasonFieldSpecification', 'ReleephReasonFieldSpecification',
)) ))
) )
); );
} else {
return array(
// Top group
array(
'left' => self::selectFields($fields, array(
'ReleephAuthorFieldSpecification',
'ReleephRevisionFieldSpecification',
'ReleephOriginalCommitFieldSpecification',
'ReleephDiffSizeFieldSpecification',
'ReleephDiffChurnFieldSpecification',
)),
'right' => self::selectFields($fields, array(
'ReleephRequestorFieldSpecification',
'ReleephSeverityFieldSpecification',
'ReleephStatusFieldSpecification',
'ReleephIntentFieldSpecification',
'ReleephBranchCommitFieldSpecification',
))
),
// Bottom group
array(
'left' => self::selectFields($fields, array(
'ReleephDiffMessageFieldSpecification',
)),
'right' => self::selectFields($fields, array(
'ReleephReasonFieldSpecification',
))
)
);
}
} }
public function arrangeFieldsForSelectForm(array $fields) { public function arrangeFieldsForSelectForm(array $fields) {
return self::selectFields($fields, array( if (self::isFacebook()) {
'ReleephStatusFieldSpecification', return self::selectFields($fields, array(
'ReleephSeverityFieldSpecification', 'ReleephStatusFieldSpecification',
'ReleephRequestorFieldSpecification', 'ReleephFacebookSeverityFieldSpecification',
)); 'ReleephRequestorFieldSpecification',
'ReleephFacebookTagFieldSpecification',
));
} else {
return self::selectFields($fields, array(
'ReleephStatusFieldSpecification',
'ReleephSeverityFieldSpecification',
'ReleephRequestorFieldSpecification',
));
}
} }
public function sortFieldsForCommitMessage(array $fields) { public function sortFieldsForCommitMessage(array $fields) {

View file

@ -117,7 +117,15 @@ final class ReleephRequestQuery
if ($this->severities) { if ($this->severities) {
$severities = array_fuse($this->severities); $severities = array_fuse($this->severities);
foreach ($requests as $key => $request) { foreach ($requests as $key => $request) {
if (empty($severities[$request->getDetail('releeph:severity')])) {
// NOTE: Facebook uses a custom field here.
if (ReleephDefaultFieldSelector::isFacebook()) {
$severity = $request->getDetail('severity');
} else {
$severity = $request->getDetail('releeph:severity');
}
if (empty($severities[$severity])) {
unset($requests[$key]); unset($requests[$key]);
} }
} }

View file

@ -148,11 +148,22 @@ final class ReleephRequestSearchEngine
} }
private function getSeverityOptions() { private function getSeverityOptions() {
return array( if (ReleephDefaultFieldSelector::isFacebook()) {
'' => pht('(All Severities)'), return array(
ReleephSeverityFieldSpecification::HOTFIX => pht('Hotfix'), '' => pht('(All Severities)'),
ReleephSeverityFieldSpecification::RELEASE => pht('Release'), 11 => 'HOTFIX',
); 12 => 'PIGGYBACK',
13 => 'RELEASE',
14 => 'DAILY',
15 => 'PARKING',
);
} else {
return array(
'' => pht('(All Severities)'),
ReleephSeverityFieldSpecification::HOTFIX => pht('Hotfix'),
ReleephSeverityFieldSpecification::RELEASE => pht('Release'),
);
}
} }
} }