Loading core/modules/help/src/Plugin/Search/HelpSearch.php +7 −6 Original line number Diff line number Diff line Loading @@ -13,8 +13,10 @@ use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\State\StateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\help\HelpSectionManager; use Drupal\help\SearchableHelpInterface; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\SearchIndexingInterface; use Drupal\search\Plugin\SearchPluginBase; use Drupal\search\SearchIndexInterface; Loading @@ -30,15 +32,14 @@ * @see \Drupal\help\HelpSearchInterface * @see \Drupal\help\HelpSectionPluginInterface * * @SearchPlugin( * id = "help_search", * title = @Translation("Help"), * use_admin_theme = TRUE, * ) * * @internal * Plugin classes are internal. */ #[Search( id: 'help_search', title: new TranslatableMarkup('Help'), use_admin_theme: TRUE, )] class HelpSearch extends SearchPluginBase implements AccessibleInterface, SearchIndexingInterface { /** Loading core/modules/node/src/Plugin/Search/NodeSearch.php +6 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ use Drupal\Core\Render\RendererInterface; use Drupal\Core\Security\TrustedCallbackInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\node\NodeInterface; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\ConfigurableSearchPluginBase; use Drupal\search\Plugin\SearchIndexingInterface; use Drupal\search\SearchIndexInterface; Loading @@ -28,12 +30,11 @@ /** * Handles searching for node entities using the Search module index. * * @SearchPlugin( * id = "node_search", * title = @Translation("Content") * ) */ #[Search( id: 'node_search', title: new TranslatableMarkup('Content'), )] class NodeSearch extends ConfigurableSearchPluginBase implements AccessibleInterface, SearchIndexingInterface, TrustedCallbackInterface { /** Loading core/modules/search/src/Attribute/Search.php 0 → 100644 +40 −0 Original line number Diff line number Diff line <?php namespace Drupal\search\Attribute; use Drupal\Component\Plugin\Attribute\Plugin; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines a Search type attribute for plugin discovery. * * Search classes define search types for the core Search module. Each search * type can be used to create search pages from the Search settings page. * * @see SearchPluginBase * * @ingroup search */ #[\Attribute(\Attribute::TARGET_CLASS)] class Search extends Plugin { /** * Constructs a Search attribute. * * @param string $id * The plugin ID. * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $title * The title for the search page tab. * @param bool $use_admin_theme * Whether search results should be displayed in admin theme or not. * @param class-string|null $deriver * (optional) The deriver class. */ public function __construct( public readonly string $id, public readonly ?TranslatableMarkup $title = NULL, public readonly bool $use_admin_theme = FALSE, public readonly ?string $deriver = NULL ) {} } core/modules/search/src/SearchPluginManager.php +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\search\Attribute\Search; /** * SearchExecute plugin manager. Loading @@ -23,7 +24,7 @@ class SearchPluginManager extends DefaultPluginManager { * The module handler to invoke the alter hook with. */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { parent::__construct('Plugin/Search', $namespaces, $module_handler, 'Drupal\search\Plugin\SearchInterface', 'Drupal\search\Annotation\SearchPlugin'); parent::__construct('Plugin/Search', $namespaces, $module_handler, 'Drupal\search\Plugin\SearchInterface', Search::class, 'Drupal\search\Annotation\SearchPlugin'); $this->setCacheBackend($cache_backend, 'search_plugins'); $this->alterInfo('search_plugin'); } Loading core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php +7 −6 Original line number Diff line number Diff line Loading @@ -4,18 +4,19 @@ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\ConfigurableSearchPluginBase; /** * Executes a dummy keyword search. * * @SearchPlugin( * id = "search_extra_type_search", * title = @Translation("Dummy search type"), * use_admin_theme = TRUE, * ) */ #[Search( id: 'search_extra_type_search', title: new TranslatableMarkup('Dummy search type'), use_admin_theme: TRUE, )] class SearchExtraTypeSearch extends ConfigurableSearchPluginBase { /** Loading Loading
core/modules/help/src/Plugin/Search/HelpSearch.php +7 −6 Original line number Diff line number Diff line Loading @@ -13,8 +13,10 @@ use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\State\StateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\help\HelpSectionManager; use Drupal\help\SearchableHelpInterface; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\SearchIndexingInterface; use Drupal\search\Plugin\SearchPluginBase; use Drupal\search\SearchIndexInterface; Loading @@ -30,15 +32,14 @@ * @see \Drupal\help\HelpSearchInterface * @see \Drupal\help\HelpSectionPluginInterface * * @SearchPlugin( * id = "help_search", * title = @Translation("Help"), * use_admin_theme = TRUE, * ) * * @internal * Plugin classes are internal. */ #[Search( id: 'help_search', title: new TranslatableMarkup('Help'), use_admin_theme: TRUE, )] class HelpSearch extends SearchPluginBase implements AccessibleInterface, SearchIndexingInterface { /** Loading
core/modules/node/src/Plugin/Search/NodeSearch.php +6 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ use Drupal\Core\Render\RendererInterface; use Drupal\Core\Security\TrustedCallbackInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\node\NodeInterface; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\ConfigurableSearchPluginBase; use Drupal\search\Plugin\SearchIndexingInterface; use Drupal\search\SearchIndexInterface; Loading @@ -28,12 +30,11 @@ /** * Handles searching for node entities using the Search module index. * * @SearchPlugin( * id = "node_search", * title = @Translation("Content") * ) */ #[Search( id: 'node_search', title: new TranslatableMarkup('Content'), )] class NodeSearch extends ConfigurableSearchPluginBase implements AccessibleInterface, SearchIndexingInterface, TrustedCallbackInterface { /** Loading
core/modules/search/src/Attribute/Search.php 0 → 100644 +40 −0 Original line number Diff line number Diff line <?php namespace Drupal\search\Attribute; use Drupal\Component\Plugin\Attribute\Plugin; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines a Search type attribute for plugin discovery. * * Search classes define search types for the core Search module. Each search * type can be used to create search pages from the Search settings page. * * @see SearchPluginBase * * @ingroup search */ #[\Attribute(\Attribute::TARGET_CLASS)] class Search extends Plugin { /** * Constructs a Search attribute. * * @param string $id * The plugin ID. * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $title * The title for the search page tab. * @param bool $use_admin_theme * Whether search results should be displayed in admin theme or not. * @param class-string|null $deriver * (optional) The deriver class. */ public function __construct( public readonly string $id, public readonly ?TranslatableMarkup $title = NULL, public readonly bool $use_admin_theme = FALSE, public readonly ?string $deriver = NULL ) {} }
core/modules/search/src/SearchPluginManager.php +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\search\Attribute\Search; /** * SearchExecute plugin manager. Loading @@ -23,7 +24,7 @@ class SearchPluginManager extends DefaultPluginManager { * The module handler to invoke the alter hook with. */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { parent::__construct('Plugin/Search', $namespaces, $module_handler, 'Drupal\search\Plugin\SearchInterface', 'Drupal\search\Annotation\SearchPlugin'); parent::__construct('Plugin/Search', $namespaces, $module_handler, 'Drupal\search\Plugin\SearchInterface', Search::class, 'Drupal\search\Annotation\SearchPlugin'); $this->setCacheBackend($cache_backend, 'search_plugins'); $this->alterInfo('search_plugin'); } Loading
core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php +7 −6 Original line number Diff line number Diff line Loading @@ -4,18 +4,19 @@ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; use Drupal\search\Attribute\Search; use Drupal\search\Plugin\ConfigurableSearchPluginBase; /** * Executes a dummy keyword search. * * @SearchPlugin( * id = "search_extra_type_search", * title = @Translation("Dummy search type"), * use_admin_theme = TRUE, * ) */ #[Search( id: 'search_extra_type_search', title: new TranslatableMarkup('Dummy search type'), use_admin_theme: TRUE, )] class SearchExtraTypeSearch extends ConfigurableSearchPluginBase { /** Loading