Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15448856
D17341.id41701.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
18 KB
Referenced Files
None
Subscribers
None
D17341.id41701.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
@@ -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
Details
Attached
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)
Attached To
Mode
D17341: Reduce application search engine results list for Dashboards
Attached
Detach File
Event Timeline
Log In to Comment