Verified Commit ee98c76b authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3421013 by mohit_aghera, sorlov, smustgrave, mstrelan, larowlan, catch:...

Issue #3421013 by mohit_aghera, sorlov, smustgrave, mstrelan, larowlan, catch: Convert Search plugin discovery to attributes

(cherry picked from commit 1e1dc945)
parent 152b8169
Loading
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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 {

  /**
+6 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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 {

  /**
+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
  ) {}

}
+2 −1
Original line number Diff line number Diff line
@@ -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.
@@ -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');
  }
+7 −6
Original line number Diff line number Diff line
@@ -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