From 71b62c4203a25beefeab73f73668919c813e3a50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Tue, 4 Aug 2020 10:00:27 +0200 Subject: Show mime icon, bump bundles, make the SearchResultEntry class non-abstract, Fix header search icon, various fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- lib/public/Search/ASearchResultEntry.php | 122 ------------------------------- lib/public/Search/IProvider.php | 10 +++ lib/public/Search/SearchResult.php | 8 +- lib/public/Search/SearchResultEntry.php | 122 +++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 126 deletions(-) delete mode 100644 lib/public/Search/ASearchResultEntry.php create mode 100644 lib/public/Search/SearchResultEntry.php (limited to 'lib/public/Search') diff --git a/lib/public/Search/ASearchResultEntry.php b/lib/public/Search/ASearchResultEntry.php deleted file mode 100644 index 584ae79de4d..00000000000 --- a/lib/public/Search/ASearchResultEntry.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * @author 2020 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -namespace OCP\Search; - -use JsonSerializable; - -/** - * Represents an entry in a list of results an app returns for a unified search - * query. - * - * The app providing the results has to extend this class for customization. In - * most cases apps do not have to add any additional code. - * - * @example ``class MailResultEntry extends ASearchResultEntry {}` - * - * This approach was chosen over a final class as it allows Nextcloud to later - * add new optional properties of an entry without having to break the usage of - * this class in apps. - * - * @since 20.0.0 - */ -abstract class ASearchResultEntry implements JsonSerializable { - - /** - * @var string - * @since 20.0.0 - */ - protected $thumbnailUrl; - - /** - * @var string - * @since 20.0.0 - */ - protected $title; - - /** - * @var string - * @since 20.0.0 - */ - protected $subline; - - /** - * @var string - * @since 20.0.0 - */ - protected $resourceUrl; - - /** - * @var string - * @since 20.0.0 - */ - protected $iconClass; - - /** - * @var boolean - * @since 20.0.0 - */ - protected $rounded; - - /** - * @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 - * @param string $subline the secondary line of the entry - * @param string $resourceUrl the URL where the user can find the detail, like a deep link inside the app - * @param string $iconClass the icon class fallback - * @param boolean $rounded is the thumbnail rounded - * - * @since 20.0.0 - */ - public function __construct(string $thumbnailUrl, - string $title, - string $subline, - string $resourceUrl, - string $iconClass = '', - bool $rounded = false) { - $this->thumbnailUrl = $thumbnailUrl; - $this->title = $title; - $this->subline = $subline; - $this->resourceUrl = $resourceUrl; - $this->iconClass = $iconClass; - $this->rounded = $rounded; - } - - /** - * @return array - * - * @since 20.0.0 - */ - public function jsonSerialize(): array { - return [ - 'thumbnailUrl' => $this->thumbnailUrl, - 'title' => $this->title, - 'subline' => $this->subline, - 'resourceUrl' => $this->resourceUrl, - 'iconClass' => $this->iconClass, - 'rounded' => $this->rounded, - ]; - } -} diff --git a/lib/public/Search/IProvider.php b/lib/public/Search/IProvider.php index bdff0a66e0e..66db62c6829 100644 --- a/lib/public/Search/IProvider.php +++ b/lib/public/Search/IProvider.php @@ -64,6 +64,16 @@ interface IProvider { */ public function getName(): string; + /** + * Get the search provider order + * The lower the int, the higher it will be sorted (0 will be before 10) + * + * @return int + * + * @since 20.0.0 + */ + public function getOrder(): int; + /** * Find matching search entries in an app * diff --git a/lib/public/Search/SearchResult.php b/lib/public/Search/SearchResult.php index 7abb5b9f188..8dbbcd96c26 100644 --- a/lib/public/Search/SearchResult.php +++ b/lib/public/Search/SearchResult.php @@ -38,7 +38,7 @@ final class SearchResult implements JsonSerializable { /** @var bool */ private $isPaginated; - /** @var ASearchResultEntry[] */ + /** @var SearchResultEntry[] */ private $entries; /** @var int|string|null */ @@ -47,7 +47,7 @@ final class SearchResult implements JsonSerializable { /** * @param string $name the translated name of the result section or group, e.g. "Mail" * @param bool $isPaginated - * @param ASearchResultEntry[] $entries + * @param SearchResultEntry[] $entries * @param null $cursor * * @since 20.0.0 @@ -63,7 +63,7 @@ final class SearchResult implements JsonSerializable { } /** - * @param ASearchResultEntry[] $entries + * @param SearchResultEntry[] $entries * * @return static * @@ -78,7 +78,7 @@ final class SearchResult implements JsonSerializable { } /** - * @param ASearchResultEntry[] $entries + * @param SearchResultEntry[] $entries * @param int|string $cursor * * @return static diff --git a/lib/public/Search/SearchResultEntry.php b/lib/public/Search/SearchResultEntry.php new file mode 100644 index 00000000000..a3d0d98560d --- /dev/null +++ b/lib/public/Search/SearchResultEntry.php @@ -0,0 +1,122 @@ + + * + * @author 2020 Christoph Wurst + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace OCP\Search; + +use JsonSerializable; + +/** + * Represents an entry in a list of results an app returns for a unified search + * query. + * + * The app providing the results has to extend this class for customization. In + * most cases apps do not have to add any additional code. + * + * @example ``class MailResultEntry extends SearchResultEntry {}` + * + * This approach was chosen over a final class as it allows Nextcloud to later + * add new optional properties of an entry without having to break the usage of + * this class in apps. + * + * @since 20.0.0 + */ +class SearchResultEntry implements JsonSerializable { + + /** + * @var string + * @since 20.0.0 + */ + protected $thumbnailUrl; + + /** + * @var string + * @since 20.0.0 + */ + protected $title; + + /** + * @var string + * @since 20.0.0 + */ + protected $subline; + + /** + * @var string + * @since 20.0.0 + */ + protected $resourceUrl; + + /** + * @var string + * @since 20.0.0 + */ + protected $icon; + + /** + * @var boolean + * @since 20.0.0 + */ + protected $rounded; + + /** + * @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 + * @param string $subline the secondary line of the entry + * @param string $resourceUrl the URL where the user can find the detail, like a deep link inside the app + * @param string $icon the icon class or url to the icon + * @param boolean $rounded is the thumbnail rounded + * + * @since 20.0.0 + */ + public function __construct(string $thumbnailUrl, + string $title, + string $subline, + string $resourceUrl, + string $icon = '', + bool $rounded = false) { + $this->thumbnailUrl = $thumbnailUrl; + $this->title = $title; + $this->subline = $subline; + $this->resourceUrl = $resourceUrl; + $this->icon = $icon; + $this->rounded = $rounded; + } + + /** + * @return array + * + * @since 20.0.0 + */ + public function jsonSerialize(): array { + return [ + 'thumbnailUrl' => $this->thumbnailUrl, + 'title' => $this->title, + 'subline' => $this->subline, + 'resourceUrl' => $this->resourceUrl, + 'icon' => $this->icon, + 'rounded' => $this->rounded, + ]; + } +} -- cgit v1.2.3