Page MenuHomePhabricator

D17341.id41701.diff
No OneTemporary

D17341.id41701.diff

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
@@ -2493,6 +2493,7 @@
'PhabricatorDashboardPanelNgrams' => 'applications/dashboard/storage/PhabricatorDashboardPanelNgrams.php',
'PhabricatorDashboardPanelPHIDType' => 'applications/dashboard/phid/PhabricatorDashboardPanelPHIDType.php',
'PhabricatorDashboardPanelQuery' => 'applications/dashboard/query/PhabricatorDashboardPanelQuery.php',
+ 'PhabricatorDashboardPanelQueryDatasource' => 'applications/dashboard/typeahead/PhabricatorDashboardPanelQueryDatasource.php',
'PhabricatorDashboardPanelRenderController' => 'applications/dashboard/controller/PhabricatorDashboardPanelRenderController.php',
'PhabricatorDashboardPanelRenderingEngine' => 'applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php',
'PhabricatorDashboardPanelSearchApplicationCustomField' => 'applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php',
@@ -7514,6 +7515,7 @@
'PhabricatorDashboardPanelNgrams' => 'PhabricatorSearchNgrams',
'PhabricatorDashboardPanelPHIDType' => 'PhabricatorPHIDType',
'PhabricatorDashboardPanelQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'PhabricatorDashboardPanelQueryDatasource' => 'PhabricatorTypeaheadDatasource',
'PhabricatorDashboardPanelRenderController' => 'PhabricatorDashboardController',
'PhabricatorDashboardPanelRenderingEngine' => 'Phobject',
'PhabricatorDashboardPanelSearchApplicationCustomField' => 'PhabricatorStandardCustomField',
diff --git a/src/applications/audit/query/PhabricatorCommitSearchEngine.php b/src/applications/audit/query/PhabricatorCommitSearchEngine.php
--- a/src/applications/audit/query/PhabricatorCommitSearchEngine.php
+++ b/src/applications/audit/query/PhabricatorCommitSearchEngine.php
@@ -4,7 +4,7 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Commits');
+ return pht('Diffusion Commits');
}
public function getApplicationClassName() {
diff --git a/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php b/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php
--- a/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php
+++ b/src/applications/auth/query/PhabricatorAuthInviteSearchEngine.php
@@ -4,13 +4,17 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Email Invites');
+ return pht('Auth Email Invites');
}
public function getApplicationClassName() {
return 'PhabricatorAuthApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
diff --git a/src/applications/badges/query/PhabricatorBadgesSearchEngine.php b/src/applications/badges/query/PhabricatorBadgesSearchEngine.php
--- a/src/applications/badges/query/PhabricatorBadgesSearchEngine.php
+++ b/src/applications/badges/query/PhabricatorBadgesSearchEngine.php
@@ -4,7 +4,7 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Badge');
+ return pht('Badges');
}
public function getApplicationClassName() {
diff --git a/src/applications/calendar/query/PhabricatorCalendarExportSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarExportSearchEngine.php
--- a/src/applications/calendar/query/PhabricatorCalendarExportSearchEngine.php
+++ b/src/applications/calendar/query/PhabricatorCalendarExportSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorCalendarApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
$viewer = $this->requireViewer();
diff --git a/src/applications/calendar/query/PhabricatorCalendarImportLogSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarImportLogSearchEngine.php
--- a/src/applications/calendar/query/PhabricatorCalendarImportLogSearchEngine.php
+++ b/src/applications/calendar/query/PhabricatorCalendarImportLogSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorCalendarApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorCalendarImportLogQuery();
}
diff --git a/src/applications/calendar/query/PhabricatorCalendarImportSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarImportSearchEngine.php
--- a/src/applications/calendar/query/PhabricatorCalendarImportSearchEngine.php
+++ b/src/applications/calendar/query/PhabricatorCalendarImportSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorCalendarApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorCalendarImportQuery();
}
diff --git a/src/applications/conduit/query/PhabricatorConduitLogSearchEngine.php b/src/applications/conduit/query/PhabricatorConduitLogSearchEngine.php
--- a/src/applications/conduit/query/PhabricatorConduitLogSearchEngine.php
+++ b/src/applications/conduit/query/PhabricatorConduitLogSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorConduitApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorConduitLogQuery();
}
diff --git a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php
--- a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php
+++ b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorConduitApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function getPageSize(PhabricatorSavedQuery $saved) {
return PHP_INT_MAX - 1;
}
diff --git a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php
--- a/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php
+++ b/src/applications/conpherence/query/ConpherenceThreadSearchEngine.php
@@ -4,7 +4,7 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Rooms');
+ return pht('Conpherence Rooms');
}
public function getApplicationClassName() {
diff --git a/src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php b/src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php
--- a/src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php
+++ b/src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php
@@ -12,42 +12,18 @@
}
public function renderEditControl(array $handles) {
- $engines = id(new PhutilClassMapQuery())
- ->setAncestorClass('PhabricatorApplicationSearchEngine')
- ->setFilterMethod('canUseInPanelContext')
- ->execute();
-
- $all_apps = id(new PhabricatorApplicationQuery())
- ->setViewer($this->getViewer())
- ->withUnlisted(false)
- ->withInstalled(true)
- ->execute();
- foreach ($engines as $index => $engine) {
- if (!isset($all_apps[$engine->getApplicationClassName()])) {
- unset($engines[$index]);
- continue;
- }
- }
-
- $options = array();
$value = $this->getFieldValue();
- if (strlen($value) && empty($engines[$value])) {
- $options[$value] = $value;
- }
-
- $engines = msort($engines, 'getResultTypeDescription');
- foreach ($engines as $class_name => $engine) {
- $options[$class_name] = $engine->getResultTypeDescription();
- }
- return id(new AphrontFormSelectControl())
+ return id(new AphrontFormTokenizerControl())
+ ->setUser($this->getViewer())
->setID($this->getFieldControlID())
->setLabel($this->getFieldName())
->setCaption($this->getCaption())
->setName($this->getFieldKey())
->setValue($this->getFieldValue())
- ->setOptions($options);
+ ->setLimit(1)
+ ->setDatasource(new PhabricatorDashboardPanelQueryDatasource());
}
}
diff --git a/src/applications/dashboard/typeahead/PhabricatorDashboardPanelQueryDatasource.php b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelQueryDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelQueryDatasource.php
@@ -0,0 +1,72 @@
+<?php
+
+final class PhabricatorDashboardPanelQueryDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ public function getBrowseTitle() {
+ return pht('Browse Panel Query Engines');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type an application or object type...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorDashboardApplication';
+ }
+
+ public function loadResults() {
+ $results = $this->buildResults();
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+
+ protected function renderSpecialTokens(array $values) {
+ return $this->renderTokensFromResults($this->buildResults(), $values);
+ }
+
+ private function buildResults() {
+ $engines = id(new PhutilClassMapQuery())
+ ->setAncestorClass('PhabricatorApplicationSearchEngine')
+ ->setFilterMethod('canUseInPanelContext')
+ ->execute();
+
+ $all_apps = id(new PhabricatorApplicationQuery())
+ ->setViewer($this->getViewer())
+ ->withUnlisted(false)
+ ->withInstalled(true)
+ ->execute();
+ $icons = array();
+ foreach ($engines as $index => $engine) {
+ if (!isset($all_apps[$engine->getApplicationClassName()])) {
+ unset($engines[$index]);
+ continue;
+ }
+ $app = $all_apps[$engine->getApplicationClassName()];
+ $icons[$index] = $app->getIcon();
+ }
+
+ $engines = msort($engines, 'getResultTypeDescription');
+ $options = array();
+ foreach ($engines as $class_name => $engine) {
+ $option = array();
+ $option['name'] = $engine->getResultTypeDescription();
+ $option['engine'] = $class_name;
+ $option['icon'] = $icons[$class_name];
+ $options[] = $option;
+ }
+
+ $results = array();
+ foreach ($options as $option) {
+ $value = $option['engine'];
+ $result = id(new PhabricatorTypeaheadResult())
+ ->setPHID($value)
+ ->setName($option['name'])
+ ->setIcon($option['icon']);
+
+ $results[$value] = $result;
+ }
+ return $results;
+ }
+
+}
diff --git a/src/applications/diviner/query/DivinerAtomSearchEngine.php b/src/applications/diviner/query/DivinerAtomSearchEngine.php
--- a/src/applications/diviner/query/DivinerAtomSearchEngine.php
+++ b/src/applications/diviner/query/DivinerAtomSearchEngine.php
@@ -10,6 +10,10 @@
return 'PhabricatorDivinerApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
diff --git a/src/applications/files/query/PhabricatorFileSearchEngine.php b/src/applications/files/query/PhabricatorFileSearchEngine.php
--- a/src/applications/files/query/PhabricatorFileSearchEngine.php
+++ b/src/applications/files/query/PhabricatorFileSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorFilesApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorFileQuery();
}
diff --git a/src/applications/herald/query/HeraldTranscriptSearchEngine.php b/src/applications/herald/query/HeraldTranscriptSearchEngine.php
--- a/src/applications/herald/query/HeraldTranscriptSearchEngine.php
+++ b/src/applications/herald/query/HeraldTranscriptSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorHeraldApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
diff --git a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
--- a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
+++ b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
@@ -31,7 +31,7 @@
}
public function getResultTypeDescription() {
- return pht('Tasks');
+ return pht('Maniphest Tasks');
}
public function getApplicationClassName() {
diff --git a/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php b/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php
--- a/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php
+++ b/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorMetaMTAApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorMetaMTAMailQuery();
}
diff --git a/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php b/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php
--- a/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php
+++ b/src/applications/oauthserver/query/PhabricatorOAuthServerClientSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorOAuthServerApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return id(new PhabricatorOAuthServerClientQuery());
}
diff --git a/src/applications/phrequent/query/PhrequentSearchEngine.php b/src/applications/phrequent/query/PhrequentSearchEngine.php
--- a/src/applications/phrequent/query/PhrequentSearchEngine.php
+++ b/src/applications/phrequent/query/PhrequentSearchEngine.php
@@ -10,6 +10,11 @@
return 'PhabricatorPhrequentApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
+
public function getPageSize(PhabricatorSavedQuery $saved) {
return $saved->getParameter('limit', 1000);
}
diff --git a/src/applications/phurl/query/PhabricatorPhurlURLSearchEngine.php b/src/applications/phurl/query/PhabricatorPhurlURLSearchEngine.php
--- a/src/applications/phurl/query/PhabricatorPhurlURLSearchEngine.php
+++ b/src/applications/phurl/query/PhabricatorPhurlURLSearchEngine.php
@@ -4,7 +4,7 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Shortened URLs');
+ return pht('Phurl URLs');
}
public function getApplicationClassName() {
diff --git a/src/applications/project/query/PhabricatorProjectColumnSearchEngine.php b/src/applications/project/query/PhabricatorProjectColumnSearchEngine.php
--- a/src/applications/project/query/PhabricatorProjectColumnSearchEngine.php
+++ b/src/applications/project/query/PhabricatorProjectColumnSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorProjectApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function newQuery() {
return new PhabricatorProjectColumnQuery();
}
@@ -25,7 +29,6 @@
);
}
-
protected function buildQueryFromParameters(array $map) {
$query = $this->newQuery();
diff --git a/src/applications/releeph/query/ReleephBranchSearchEngine.php b/src/applications/releeph/query/ReleephBranchSearchEngine.php
--- a/src/applications/releeph/query/ReleephBranchSearchEngine.php
+++ b/src/applications/releeph/query/ReleephBranchSearchEngine.php
@@ -9,6 +9,10 @@
return pht('Releeph Branches');
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function getApplicationClassName() {
return 'PhabricatorReleephApplication';
}
diff --git a/src/applications/releeph/query/ReleephProductSearchEngine.php b/src/applications/releeph/query/ReleephProductSearchEngine.php
--- a/src/applications/releeph/query/ReleephProductSearchEngine.php
+++ b/src/applications/releeph/query/ReleephProductSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorReleephApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
diff --git a/src/applications/releeph/query/ReleephRequestSearchEngine.php b/src/applications/releeph/query/ReleephRequestSearchEngine.php
--- a/src/applications/releeph/query/ReleephRequestSearchEngine.php
+++ b/src/applications/releeph/query/ReleephRequestSearchEngine.php
@@ -14,6 +14,10 @@
return 'PhabricatorReleephApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function setBranch(ReleephBranch $branch) {
$this->branch = $branch;
return $this;
diff --git a/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php b/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php
--- a/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php
+++ b/src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php
@@ -11,6 +11,10 @@
return 'PhabricatorSearchApplication';
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
diff --git a/src/infrastructure/daemon/workers/query/PhabricatorWorkerBulkJobSearchEngine.php b/src/infrastructure/daemon/workers/query/PhabricatorWorkerBulkJobSearchEngine.php
--- a/src/infrastructure/daemon/workers/query/PhabricatorWorkerBulkJobSearchEngine.php
+++ b/src/infrastructure/daemon/workers/query/PhabricatorWorkerBulkJobSearchEngine.php
@@ -4,7 +4,7 @@
extends PhabricatorApplicationSearchEngine {
public function getResultTypeDescription() {
- return pht('Bulk Jobs');
+ return pht('Daemon Bulk Jobs');
}
public function getApplicationClassName() {
@@ -15,6 +15,10 @@
return id(new PhabricatorWorkerBulkJobQuery());
}
+ public function canUseInPanelContext() {
+ return false;
+ }
+
protected function buildQueryFromParameters(array $map) {
$query = $this->newQuery();

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 29, 7:12 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7725992
Default Alt Text
D17341.id41701.diff (18 KB)

Event Timeline