Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15537229
D18392.id44233.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
12 KB
Referenced Files
None
Subscribers
None
D18392.id44233.diff
View Options
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
@@ -521,6 +521,7 @@
'DifferentialRevisionAuthorProjectsHeraldField' => 'applications/differential/herald/DifferentialRevisionAuthorProjectsHeraldField.php',
'DifferentialRevisionCloseDetailsController' => 'applications/differential/controller/DifferentialRevisionCloseDetailsController.php',
'DifferentialRevisionCloseTransaction' => 'applications/differential/xaction/DifferentialRevisionCloseTransaction.php',
+ 'DifferentialRevisionClosedStatusDatasource' => 'applications/differential/typeahead/DifferentialRevisionClosedStatusDatasource.php',
'DifferentialRevisionCommandeerTransaction' => 'applications/differential/xaction/DifferentialRevisionCommandeerTransaction.php',
'DifferentialRevisionContentAddedHeraldField' => 'applications/differential/herald/DifferentialRevisionContentAddedHeraldField.php',
'DifferentialRevisionContentHeraldField' => 'applications/differential/herald/DifferentialRevisionContentHeraldField.php',
@@ -548,6 +549,7 @@
'DifferentialRevisionListController' => 'applications/differential/controller/DifferentialRevisionListController.php',
'DifferentialRevisionListView' => 'applications/differential/view/DifferentialRevisionListView.php',
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
+ 'DifferentialRevisionOpenStatusDatasource' => 'applications/differential/typeahead/DifferentialRevisionOpenStatusDatasource.php',
'DifferentialRevisionOperationController' => 'applications/differential/controller/DifferentialRevisionOperationController.php',
'DifferentialRevisionPHIDType' => 'applications/differential/phid/DifferentialRevisionPHIDType.php',
'DifferentialRevisionPackageHeraldField' => 'applications/differential/herald/DifferentialRevisionPackageHeraldField.php',
@@ -572,6 +574,8 @@
'DifferentialRevisionSearchConduitAPIMethod' => 'applications/differential/conduit/DifferentialRevisionSearchConduitAPIMethod.php',
'DifferentialRevisionSearchEngine' => 'applications/differential/query/DifferentialRevisionSearchEngine.php',
'DifferentialRevisionStatus' => 'applications/differential/constants/DifferentialRevisionStatus.php',
+ 'DifferentialRevisionStatusDatasource' => 'applications/differential/typeahead/DifferentialRevisionStatusDatasource.php',
+ 'DifferentialRevisionStatusFunctionDatasource' => 'applications/differential/typeahead/DifferentialRevisionStatusFunctionDatasource.php',
'DifferentialRevisionSummaryHeraldField' => 'applications/differential/herald/DifferentialRevisionSummaryHeraldField.php',
'DifferentialRevisionSummaryTransaction' => 'applications/differential/xaction/DifferentialRevisionSummaryTransaction.php',
'DifferentialRevisionTestPlanTransaction' => 'applications/differential/xaction/DifferentialRevisionTestPlanTransaction.php',
@@ -5514,6 +5518,7 @@
'DifferentialRevisionAuthorProjectsHeraldField' => 'DifferentialRevisionHeraldField',
'DifferentialRevisionCloseDetailsController' => 'DifferentialController',
'DifferentialRevisionCloseTransaction' => 'DifferentialRevisionActionTransaction',
+ 'DifferentialRevisionClosedStatusDatasource' => 'PhabricatorTypeaheadDatasource',
'DifferentialRevisionCommandeerTransaction' => 'DifferentialRevisionActionTransaction',
'DifferentialRevisionContentAddedHeraldField' => 'DifferentialRevisionHeraldField',
'DifferentialRevisionContentHeraldField' => 'DifferentialRevisionHeraldField',
@@ -5541,6 +5546,7 @@
'DifferentialRevisionListController' => 'DifferentialController',
'DifferentialRevisionListView' => 'AphrontView',
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
+ 'DifferentialRevisionOpenStatusDatasource' => 'PhabricatorTypeaheadDatasource',
'DifferentialRevisionOperationController' => 'DifferentialController',
'DifferentialRevisionPHIDType' => 'PhabricatorPHIDType',
'DifferentialRevisionPackageHeraldField' => 'DifferentialRevisionHeraldField',
@@ -5565,6 +5571,8 @@
'DifferentialRevisionSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
'DifferentialRevisionSearchEngine' => 'PhabricatorApplicationSearchEngine',
'DifferentialRevisionStatus' => 'Phobject',
+ 'DifferentialRevisionStatusDatasource' => 'PhabricatorTypeaheadDatasource',
+ 'DifferentialRevisionStatusFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
'DifferentialRevisionSummaryHeraldField' => 'DifferentialRevisionHeraldField',
'DifferentialRevisionSummaryTransaction' => 'DifferentialRevisionTransactionType',
'DifferentialRevisionTestPlanTransaction' => 'DifferentialRevisionTransactionType',
diff --git a/src/applications/differential/constants/DifferentialRevisionStatus.php b/src/applications/differential/constants/DifferentialRevisionStatus.php
--- a/src/applications/differential/constants/DifferentialRevisionStatus.php
+++ b/src/applications/differential/constants/DifferentialRevisionStatus.php
@@ -93,6 +93,16 @@
return $result;
}
+ public static function getAll() {
+ $result = array();
+
+ foreach (self::getMap() as $key => $spec) {
+ $result[$key] = self::newForStatus($key);
+ }
+
+ return $result;
+ }
+
private static function getMap() {
$close_on_accept = PhabricatorEnv::getEnvConfig(
'differential.close-on-accept');
diff --git a/src/applications/differential/typeahead/DifferentialRevisionClosedStatusDatasource.php b/src/applications/differential/typeahead/DifferentialRevisionClosedStatusDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/typeahead/DifferentialRevisionClosedStatusDatasource.php
@@ -0,0 +1,74 @@
+<?php
+
+final class DifferentialRevisionClosedStatusDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ const FUNCTION_TOKEN = 'closed()';
+
+ public function getBrowseTitle() {
+ return pht('Browse Any Closed Status');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type closed()...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorDifferentialApplication';
+ }
+
+ public function getDatasourceFunctions() {
+ return array(
+ 'closed' => array(
+ 'name' => pht('Any Closed Status'),
+ 'summary' => pht('Find results with any closed status.'),
+ 'description' => pht(
+ 'This function includes results which have any closed status.'),
+ ),
+ );
+ }
+
+ public function loadResults() {
+ $results = array(
+ $this->buildClosedResult(),
+ );
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+ protected function evaluateFunction($function, array $argv_list) {
+ $results = array();
+
+ $map = DifferentialRevisionStatus::getAll();
+ foreach ($argv_list as $argv) {
+ foreach ($map as $status) {
+ if ($status->isClosedStatus()) {
+ $results[] = $status->getKey();
+ }
+ }
+ }
+
+ return $results;
+ }
+
+ public function renderFunctionTokens($function, array $argv_list) {
+ $results = array();
+
+ foreach ($argv_list as $argv) {
+ $results[] = PhabricatorTypeaheadTokenView::newFromTypeaheadResult(
+ $this->buildClosedResult());
+ }
+
+ return $results;
+ }
+
+ private function buildClosedResult() {
+ $name = pht('Any Closed Status');
+ return $this->newFunctionResult()
+ ->setName($name.' closed')
+ ->setDisplayName($name)
+ ->setPHID(self::FUNCTION_TOKEN)
+ ->setUnique(true)
+ ->addAttribute(pht('Select any closed status.'));
+ }
+
+}
diff --git a/src/applications/differential/typeahead/DifferentialRevisionOpenStatusDatasource.php b/src/applications/differential/typeahead/DifferentialRevisionOpenStatusDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/typeahead/DifferentialRevisionOpenStatusDatasource.php
@@ -0,0 +1,74 @@
+<?php
+
+final class DifferentialRevisionOpenStatusDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ const FUNCTION_TOKEN = 'open()';
+
+ public function getBrowseTitle() {
+ return pht('Browse Any Open Status');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type open()...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorDifferentialApplication';
+ }
+
+ public function getDatasourceFunctions() {
+ return array(
+ 'open' => array(
+ 'name' => pht('Any Open Status'),
+ 'summary' => pht('Find results with any open status.'),
+ 'description' => pht(
+ 'This function includes results which have any open status.'),
+ ),
+ );
+ }
+
+ public function loadResults() {
+ $results = array(
+ $this->buildOpenResult(),
+ );
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+ protected function evaluateFunction($function, array $argv_list) {
+ $results = array();
+
+ $map = DifferentialRevisionStatus::getAll();
+ foreach ($argv_list as $argv) {
+ foreach ($map as $status) {
+ if (!$status->isClosedStatus()) {
+ $results[] = $status->getKey();
+ }
+ }
+ }
+
+ return $results;
+ }
+
+ public function renderFunctionTokens($function, array $argv_list) {
+ $results = array();
+
+ foreach ($argv_list as $argv) {
+ $results[] = PhabricatorTypeaheadTokenView::newFromTypeaheadResult(
+ $this->buildOpenResult());
+ }
+
+ return $results;
+ }
+
+ private function buildOpenResult() {
+ $name = pht('Any Open Status');
+ return $this->newFunctionResult()
+ ->setName($name.' open')
+ ->setDisplayName($name)
+ ->setPHID(self::FUNCTION_TOKEN)
+ ->setUnique(true)
+ ->addAttribute(pht('Select any open status.'));
+ }
+
+}
diff --git a/src/applications/differential/typeahead/DifferentialRevisionStatusDatasource.php b/src/applications/differential/typeahead/DifferentialRevisionStatusDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/typeahead/DifferentialRevisionStatusDatasource.php
@@ -0,0 +1,52 @@
+<?php
+
+final class DifferentialRevisionStatusDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ public function getBrowseTitle() {
+ return pht('Browse Statuses');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type a revision status name...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorDifferentialApplication';
+ }
+
+ public function loadResults() {
+ $results = $this->buildResults();
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+
+ protected function renderSpecialTokens(array $values) {
+ return $this->renderTokensFromResults($this->buildResults(), $values);
+ }
+
+ private function buildResults() {
+ $results = array();
+
+ $statuses = DifferentialRevisionStatus::getAll();
+ foreach ($statuses as $status) {
+ $key = $status->getKey();
+
+ $result = id(new PhabricatorTypeaheadResult())
+ ->setIcon($status->getIcon())
+ ->setPHID($key)
+ ->setName($status->getDisplayName());
+
+ if ($status->isClosedStatus()) {
+ $result->addAttribute(pht('Closed Status'));
+ } else {
+ $result->addAttribute(pht('Open Status'));
+ }
+
+ $results[$key] = $result;
+ }
+
+ return $results;
+ }
+
+}
diff --git a/src/applications/differential/typeahead/DifferentialRevisionStatusFunctionDatasource.php b/src/applications/differential/typeahead/DifferentialRevisionStatusFunctionDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/typeahead/DifferentialRevisionStatusFunctionDatasource.php
@@ -0,0 +1,22 @@
+<?php
+
+final class DifferentialRevisionStatusFunctionDatasource
+ extends PhabricatorTypeaheadCompositeDatasource {
+
+ public function getBrowseTitle() {
+ return pht('Browse Statuses');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type a revision status name or function...');
+ }
+
+ public function getComponentDatasources() {
+ return array(
+ new DifferentialRevisionStatusDatasource(),
+ new DifferentialRevisionClosedStatusDatasource(),
+ new DifferentialRevisionOpenStatusDatasource(),
+ );
+ }
+
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 25, 1:03 PM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7726133
Default Alt Text
D18392.id44233.diff (12 KB)
Attached To
Mode
D18392: Add a Differential revision status tokenizer datasource
Attached
Detach File
Event Timeline
Log In to Comment