Changeset View
Changeset View
Standalone View
Standalone View
src/applications/phriction/typeahead/PhrictionDocumentDatasource.php
Show All 12 Lines | final class PhrictionDocumentDatasource | ||||
public function getDatasourceApplicationClass() { | public function getDatasourceApplicationClass() { | ||||
return 'PhabricatorPhrictionApplication'; | return 'PhabricatorPhrictionApplication'; | ||||
} | } | ||||
public function loadResults() { | public function loadResults() { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$app_type = pht('Wiki Document'); | |||||
$mid_dot = "\xC2\xB7"; | |||||
$query = id(new PhrictionDocumentQuery()) | $query = id(new PhrictionDocumentQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->needContent(true); | ->needContent(true); | ||||
$this->applyFerretConstraints( | $this->applyFerretConstraints( | ||||
$query, | $query, | ||||
id(new PhrictionDocument())->newFerretEngine(), | id(new PhrictionDocument())->newFerretEngine(), | ||||
'title', | 'title', | ||||
$this->getRawQuery()); | $this->getRawQuery()); | ||||
$documents = $query->execute(); | $documents = $query->execute(); | ||||
$results = array(); | $results = array(); | ||||
foreach ($documents as $document) { | foreach ($documents as $document) { | ||||
$content = $document->getContent(); | $content = $document->getContent(); | ||||
if (!$document->isActive()) { | if ($document->isActive()) { | ||||
$closed = $document->getStatusDisplayName(); | |||||
} else { | |||||
$closed = null; | $closed = null; | ||||
} else { | |||||
$closed = $document->getStatusDisplayName(); | |||||
} | } | ||||
$slug = $document->getSlug(); | $slug = $document->getSlug(); | ||||
$title = $content->getTitle(); | $title = $content->getTitle(); | ||||
// For some time the search result was | |||||
// just mentioning the document slug. | |||||
// Now, it also mentions the application type. | |||||
// Example: "Wiki Document - /foo/bar" | |||||
$display_type = sprintf( | |||||
'%s %s %s', | |||||
$app_type, | |||||
$mid_dot, | |||||
$slug); | |||||
$sprite = 'phabricator-search-icon phui-font-fa phui-icon-view fa-book'; | $sprite = 'phabricator-search-icon phui-font-fa phui-icon-view fa-book'; | ||||
$autocomplete = '[[ '.$slug.' ]]'; | $autocomplete = '[[ '.$slug.' ]]'; | ||||
$result = id(new PhabricatorTypeaheadResult()) | $result = id(new PhabricatorTypeaheadResult()) | ||||
->setName($title) | ->setName($title) | ||||
->setDisplayName($title) | ->setDisplayName($title) | ||||
->setURI($document->getURI()) | ->setURI($document->getURI()) | ||||
->setPHID($document->getPHID()) | ->setPHID($document->getPHID()) | ||||
->setDisplayType($slug) | ->setDisplayType($display_type) | ||||
->setPriorityType('wiki') | ->setPriorityType('wiki') | ||||
->setImageSprite($sprite) | ->setImageSprite($sprite) | ||||
->setAutocomplete($autocomplete) | ->setAutocomplete($autocomplete) | ||||
->setClosed($closed); | ->setClosed($closed); | ||||
$results[] = $result; | $results[] = $result; | ||||
} | } | ||||
return $results; | return $results; | ||||
} | } | ||||
} | } |
Content licensed under Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) unless otherwise noted; code licensed under Apache 2.0 or other open source licenses. · CC BY-SA 4.0 · Apache 2.0