Browse Source
Merge pull request #24474 from nextcloud/enhancement/unified-search-result-attributes
Allow unified search results to have attributes
pull/24543/head
Christoph Wurst
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
25 additions and
1 deletions
-
apps/files/lib/Search/FilesSearchProvider.php
-
lib/public/Search/SearchResultEntry.php
|
|
|
@ -110,13 +110,16 @@ class FilesSearchProvider implements IProvider { |
|
|
|
? $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 32, 'y' => 32, 'fileId' => $result->id]) |
|
|
|
: ''; |
|
|
|
|
|
|
|
return new SearchResultEntry( |
|
|
|
$searchResultEntry = new SearchResultEntry( |
|
|
|
$thumbnailUrl, |
|
|
|
$result->name, |
|
|
|
$this->formatSubline($result), |
|
|
|
$this->urlGenerator->getAbsoluteURL($result->link), |
|
|
|
$result->type === 'folder' ? 'icon-folder' : $this->mimeTypeDetector->mimeTypeIcon($result->mime_type) |
|
|
|
); |
|
|
|
$searchResultEntry->addAttribute('fileId', (string)$result->id); |
|
|
|
$searchResultEntry->addAttribute('path', $result->path); |
|
|
|
return $searchResultEntry; |
|
|
|
}, $this->fileSearch->search($query->getTerm())) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
@ -82,6 +82,13 @@ class SearchResultEntry implements JsonSerializable { |
|
|
|
*/ |
|
|
|
protected $rounded; |
|
|
|
|
|
|
|
/** |
|
|
|
* @var string[] |
|
|
|
* @psalm-var array<string, string> |
|
|
|
* @since 20.0.0 |
|
|
|
*/ |
|
|
|
protected $attributes = []; |
|
|
|
|
|
|
|
/** |
|
|
|
* @param string $thumbnailUrl a relative or absolute URL to the thumbnail or icon of the entry |
|
|
|
* @param string $title a main title of the entry |
|
|
|
@ -106,6 +113,19 @@ class SearchResultEntry implements JsonSerializable { |
|
|
|
$this->rounded = $rounded; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Add optional attributes to the result entry, e.g. an ID or some other |
|
|
|
* context information that can be read by the client application |
|
|
|
* |
|
|
|
* @param string $key |
|
|
|
* @param string $value |
|
|
|
* |
|
|
|
* @since 20.0.0 |
|
|
|
*/ |
|
|
|
public function addAttribute(string $key, string $value): void { |
|
|
|
$this->attributes[$key] = $value; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return array |
|
|
|
* |
|
|
|
@ -119,6 +139,7 @@ class SearchResultEntry implements JsonSerializable { |
|
|
|
'resourceUrl' => $this->resourceUrl, |
|
|
|
'icon' => $this->icon, |
|
|
|
'rounded' => $this->rounded, |
|
|
|
'attributes' => $this->attributes, |
|
|
|
]; |
|
|
|
} |
|
|
|
} |