diff --git a/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php index 8bbdb1a5e5..883b6d32bb 100644 --- a/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php +++ b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php @@ -1,66 +1,75 @@ buildResults(); return $this->filterResultsAgainstTokens($results); } - protected function renderSpecialTokens(array $values) { return $this->renderTokensFromResults($this->buildResults(), $values); } public function buildResults() { - $query = id(new PhabricatorDashboardPanelQuery()); + $query = new PhabricatorDashboardPanelQuery(); + + $raw_query = $this->getRawQuery(); + if (preg_match('/^[wW]\d+\z/', $raw_query)) { + $id = trim($raw_query, 'wW'); + $id = (int)$id; + $query->withIDs(array($id)); + } else { + $query->withNameNgrams($raw_query); + } + $panels = $this->executeQuery($query); $results = array(); foreach ($panels as $panel) { $impl = $panel->getImplementation(); if ($impl) { $type_text = $impl->getPanelTypeName(); $icon = $impl->getIcon(); } else { $type_text = nonempty($panel->getPanelType(), pht('Unknown Type')); $icon = 'fa-question'; } $id = $panel->getID(); $monogram = $panel->getMonogram(); $properties = $panel->getProperties(); $result = id(new PhabricatorTypeaheadResult()) ->setName($monogram.' '.$panel->getName()) ->setPHID($id) ->setIcon($icon) ->addAttribute($type_text); if (!empty($properties['class'])) { $result->addAttribute($properties['class']); } if ($panel->getIsArchived()) { $result->setClosed(pht('Archived')); } $results[$id] = $result; } return $results; } }