From 181221a429a756c4f3e840a41d784542bca1e802 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Thu, 4 Apr 2024 22:50:02 +0100 Subject: [PATCH] Issue #3421000 by sorlov, quietone, smustgrave, larowlan, alexpott: Convert ViewsWizard plugin discovery to attributes --- .../src/Plugin/views/wizard/BlockContent.php | 13 ++++--- .../src/Plugin/views/wizard/Comment.php | 13 ++++--- .../src/Plugin/views/wizard/Watchdog.php | 14 +++---- .../file/src/Plugin/views/wizard/File.php | 13 ++++--- .../media/src/Plugin/views/wizard/Media.php | 13 ++++--- .../src/Plugin/views/wizard/MediaRevision.php | 13 ++++--- .../node/src/Plugin/views/wizard/Node.php | 13 ++++--- .../src/Plugin/views/wizard/NodeRevision.php | 13 ++++--- .../src/Plugin/views/wizard/TaxonomyTerm.php | 13 ++++--- .../user/src/Plugin/views/wizard/Users.php | 13 ++++--- .../views/src/Attribute/ViewsWizard.php | 39 +++++++++++++++++++ .../src/Plugin/views/wizard/Standard.php | 15 ++++--- 12 files changed, 118 insertions(+), 67 deletions(-) create mode 100644 core/modules/views/src/Attribute/ViewsWizard.php diff --git a/core/modules/block_content/src/Plugin/views/wizard/BlockContent.php b/core/modules/block_content/src/Plugin/views/wizard/BlockContent.php index cb19c6247dcf..eb2de7e50c2a 100644 --- a/core/modules/block_content/src/Plugin/views/wizard/BlockContent.php +++ b/core/modules/block_content/src/Plugin/views/wizard/BlockContent.php @@ -2,17 +2,18 @@ namespace Drupal\block_content\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Used for creating 'block_content' views with the wizard. - * - * @ViewsWizard( - * id = "block_content", - * base_table = "block_content_field_data", - * title = @Translation("Content Block"), - * ) */ +#[ViewsWizard( + id: 'block_content', + title: new TranslatableMarkup('Content Block'), + base_table: 'block_content_field_data' +)] class BlockContent extends WizardPluginBase { /** diff --git a/core/modules/comment/src/Plugin/views/wizard/Comment.php b/core/modules/comment/src/Plugin/views/wizard/Comment.php index 7cc5c632cc05..3e662475b401 100644 --- a/core/modules/comment/src/Plugin/views/wizard/Comment.php +++ b/core/modules/comment/src/Plugin/views/wizard/Comment.php @@ -2,6 +2,8 @@ namespace Drupal\comment\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** @@ -10,13 +12,12 @@ /** * Tests creating comment views with the wizard. - * - * @ViewsWizard( - * id = "comment", - * base_table = "comment_field_data", - * title = @Translation("Comments") - * ) */ +#[ViewsWizard( + id: 'comment', + base_table: 'comment_field_data', + title: new TranslatableMarkup('Comments') +)] class Comment extends WizardPluginBase { /** diff --git a/core/modules/dblog/src/Plugin/views/wizard/Watchdog.php b/core/modules/dblog/src/Plugin/views/wizard/Watchdog.php index 3a0dad5c86dd..ac78fe828bcc 100644 --- a/core/modules/dblog/src/Plugin/views/wizard/Watchdog.php +++ b/core/modules/dblog/src/Plugin/views/wizard/Watchdog.php @@ -2,18 +2,18 @@ namespace Drupal\dblog\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Defines a wizard for the watchdog table. - * - * @ViewsWizard( - * id = "watchdog", - * module = "dblog", - * base_table = "watchdog", - * title = @Translation("Log entries") - * ) */ +#[ViewsWizard( + id: 'watchdog', + title: new TranslatableMarkup('Log entries'), + base_table: 'watchdog' +)] class Watchdog extends WizardPluginBase { /** diff --git a/core/modules/file/src/Plugin/views/wizard/File.php b/core/modules/file/src/Plugin/views/wizard/File.php index f870f6576a06..2d1d8a5cf382 100644 --- a/core/modules/file/src/Plugin/views/wizard/File.php +++ b/core/modules/file/src/Plugin/views/wizard/File.php @@ -2,17 +2,18 @@ namespace Drupal\file\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Tests creating managed files views with the wizard. - * - * @ViewsWizard( - * id = "file_managed", - * base_table = "file_managed", - * title = @Translation("Files") - * ) */ +#[ViewsWizard( + id: 'file_managed', + title: new TranslatableMarkup('Files'), + base_table: 'file_managed' +)] class File extends WizardPluginBase { /** diff --git a/core/modules/media/src/Plugin/views/wizard/Media.php b/core/modules/media/src/Plugin/views/wizard/Media.php index 30a7ad632381..322f04fc2885 100644 --- a/core/modules/media/src/Plugin/views/wizard/Media.php +++ b/core/modules/media/src/Plugin/views/wizard/Media.php @@ -2,17 +2,18 @@ namespace Drupal\media\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Provides Views creation wizard for Media. - * - * @ViewsWizard( - * id = "media", - * base_table = "media_field_data", - * title = @Translation("Media") - * ) */ +#[ViewsWizard( + id: 'media', + base_table: 'media_field_data', + title: new TranslatableMarkup('Media') +)] class Media extends WizardPluginBase { /** diff --git a/core/modules/media/src/Plugin/views/wizard/MediaRevision.php b/core/modules/media/src/Plugin/views/wizard/MediaRevision.php index 10b51547b9d4..f7a2aafee23e 100644 --- a/core/modules/media/src/Plugin/views/wizard/MediaRevision.php +++ b/core/modules/media/src/Plugin/views/wizard/MediaRevision.php @@ -2,17 +2,18 @@ namespace Drupal\media\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Provides Views creation wizard for Media revisions. - * - * @ViewsWizard( - * id = "media_revision", - * base_table = "media_field_revision", - * title = @Translation("Media revisions") - * ) */ +#[ViewsWizard( + id: 'media_revision', + title: new TranslatableMarkup('Media revisions'), + base_table: 'media_field_revision' +)] class MediaRevision extends WizardPluginBase { /** diff --git a/core/modules/node/src/Plugin/views/wizard/Node.php b/core/modules/node/src/Plugin/views/wizard/Node.php index ea0081086235..6e2ca1d1f2d6 100644 --- a/core/modules/node/src/Plugin/views/wizard/Node.php +++ b/core/modules/node/src/Plugin/views/wizard/Node.php @@ -8,6 +8,8 @@ use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Menu\MenuParentFormSelectorInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -17,13 +19,12 @@ /** * Tests creating node views with the wizard. - * - * @ViewsWizard( - * id = "node", - * base_table = "node_field_data", - * title = @Translation("Content") - * ) */ +#[ViewsWizard( + id: 'node', + base_table: 'node_field_data', + title: new TranslatableMarkup('Content') +)] class Node extends WizardPluginBase { /** diff --git a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php index 14119d4fb565..1a7121eb007a 100644 --- a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php +++ b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php @@ -3,6 +3,8 @@ namespace Drupal\node\Plugin\views\wizard; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** @@ -11,13 +13,12 @@ /** * Tests creating node revision views with the wizard. - * - * @ViewsWizard( - * id = "node_revision", - * base_table = "node_field_revision", - * title = @Translation("Content revisions") - * ) */ +#[ViewsWizard( + id: 'node_revision', + title: new TranslatableMarkup('Content revisions'), + base_table: 'node_field_revision' +)] class NodeRevision extends WizardPluginBase { /** diff --git a/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php b/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php index cc79681093d4..751f365c493e 100644 --- a/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php +++ b/core/modules/taxonomy/src/Plugin/views/wizard/TaxonomyTerm.php @@ -2,17 +2,18 @@ namespace Drupal\taxonomy\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** * Tests creating taxonomy views with the wizard. - * - * @ViewsWizard( - * id = "taxonomy_term", - * base_table = "taxonomy_term_field_data", - * title = @Translation("Taxonomy terms") - * ) */ +#[ViewsWizard( + id: 'taxonomy_term', + title: new TranslatableMarkup('Taxonomy terms'), + base_table: 'taxonomy_term_field_data' +)] class TaxonomyTerm extends WizardPluginBase { /** diff --git a/core/modules/user/src/Plugin/views/wizard/Users.php b/core/modules/user/src/Plugin/views/wizard/Users.php index 6ba045f70d99..92b8f28d901c 100644 --- a/core/modules/user/src/Plugin/views/wizard/Users.php +++ b/core/modules/user/src/Plugin/views/wizard/Users.php @@ -2,6 +2,8 @@ namespace Drupal\user\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; use Drupal\views\Plugin\views\wizard\WizardPluginBase; /** @@ -10,13 +12,12 @@ /** * Tests creating user views with the wizard. - * - * @ViewsWizard( - * id = "users", - * base_table = "users_field_data", - * title = @Translation("Users") - * ) */ +#[ViewsWizard( + id: 'users', + title: new TranslatableMarkup('Users'), + base_table: 'users_field_data' +)] class Users extends WizardPluginBase { /** diff --git a/core/modules/views/src/Attribute/ViewsWizard.php b/core/modules/views/src/Attribute/ViewsWizard.php new file mode 100644 index 000000000000..e5ef222bb07b --- /dev/null +++ b/core/modules/views/src/Attribute/ViewsWizard.php @@ -0,0 +1,39 @@ +<?php + +namespace Drupal\views\Attribute; + +use Drupal\Component\Plugin\Attribute\Plugin; +use Drupal\Core\StringTranslation\TranslatableMarkup; + +/** + * Defines a Plugin attribute object for views wizard plugins. + * + * @see \Drupal\views\Plugin\views\wizard\WizardPluginBase + * @see \Drupal\views\Plugin\views\wizard\WizardInterface + * + * @ingroup views_wizard_plugins + */ +#[\Attribute(\Attribute::TARGET_CLASS)] +class ViewsWizard extends Plugin { + + /** + * Constructs an ViewsWizard attribute. + * + * @param string $id + * The plugin ID. + * @param \Drupal\Core\StringTranslation\TranslatableMarkup $title + * The plugin title used in the views UI. + * @param string|null $base_table + * (optional) The base table on which this wizard is used. The base_table is + * required when a deriver class is not defined. + * @param class-string|null $deriver + * (optional) The deriver class. + */ + public function __construct( + public readonly string $id, + public readonly TranslatableMarkup $title, + public readonly ?string $base_table = NULL, + public readonly ?string $deriver = NULL + ) {} + +} diff --git a/core/modules/views/src/Plugin/views/wizard/Standard.php b/core/modules/views/src/Plugin/views/wizard/Standard.php index a277fbd1a223..30875ed7570d 100644 --- a/core/modules/views/src/Plugin/views/wizard/Standard.php +++ b/core/modules/views/src/Plugin/views/wizard/Standard.php @@ -2,17 +2,20 @@ namespace Drupal\views\Plugin\views\wizard; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\views\Attribute\ViewsWizard; +use Drupal\views\Plugin\Derivative\DefaultWizardDeriver; + /** * Standard Views wizard plugin. * * @ingroup views_wizard_plugins - * - * @ViewsWizard( - * id = "standard", - * deriver = "Drupal\views\Plugin\Derivative\DefaultWizardDeriver", - * title = @Translation("Default wizard") - * ) */ +#[ViewsWizard( + id: 'standard', + title: new TranslatableMarkup('Default wizard'), + deriver: DefaultWizardDeriver::class, +)] class Standard extends WizardPluginBase { } -- GitLab