Verified Commit 152b8169 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3421010 by sorlov, larowlan, smustgrave: Convert ViewsArgumentValidator...

Issue #3421010 by sorlov, larowlan, smustgrave: Convert ViewsArgumentValidator plugin discovery to attributes

(cherry picked from commit cb857b78)
parent 31ec7d64
Loading
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -5,17 +5,18 @@
use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsArgumentValidator;
use Drupal\views\Plugin\views\argument_validator\Entity;

/**
 * Validates whether a term name is a valid term argument.
 *
 * @ViewsArgumentValidator(
 *   id = "taxonomy_term_name",
 *   title = @Translation("Taxonomy term name"),
 *   entity_type = "taxonomy_term"
 * )
 */
#[ViewsArgumentValidator(
  id: 'taxonomy_term_name',
  title: new TranslatableMarkup('Taxonomy term name'),
  entity_type: 'taxonomy_term'
)]
class TermName extends Entity {

  /**
+7 −6
Original line number Diff line number Diff line
@@ -3,16 +3,17 @@
namespace Drupal\user\Plugin\views\argument_validator;

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsArgumentValidator;

/**
 * Validates whether a user name is valid.
 *
 * @ViewsArgumentValidator(
 *   id = "user_name",
 *   title = @Translation("User name"),
 *   entity_type = "user"
 * )
 */
#[ViewsArgumentValidator(
  id: 'user_name',
  title: new TranslatableMarkup('User name'),
  entity_type: 'user'
)]
class UserName extends User {

  /**
+45 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\views\Attribute;

use Drupal\Component\Plugin\Attribute\Plugin;
use Drupal\Core\StringTranslation\TranslatableMarkup;

/**
 * Defines a ViewsArgumentValidator attribute object for plugin discovery.
 *
 * Plugin Namespace: Plugin\ViewsArgumentValidator
 *
 * @see \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase
 *
 * @ingroup views_argument_validate_plugins
 */
#[\Attribute(\Attribute::TARGET_CLASS)]
class ViewsArgumentValidator extends Plugin {

  /**
   * Constructs a ViewsArgumentValidator attribute.
   *
   * @param string $id
   *   The plugin ID.
   * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $title
   *   The plugin title used in the views UI.
   * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $short_title
   *   (optional) The short title used in the views UI.
   * @param string $entity_type
   *   (optional) Entity type.
   * @param bool $no_ui
   *   Whether the plugin is selectable in the UI.
   * @param class-string|null $deriver
   *   (optional) The deriver class.
   */
  public function __construct(
    public readonly string $id,
    public readonly ?TranslatableMarkup $title = NULL,
    public readonly ?TranslatableMarkup $short_title = NULL,
    public readonly ?string $entity_type = NULL,
    public readonly bool $no_ui = FALSE,
    public readonly ?string $deriver = NULL
  ) {}

}
+6 −7
Original line number Diff line number Diff line
@@ -7,19 +7,18 @@
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\Context\EntityContextDefinition;
use Drupal\views\Attribute\ViewsArgumentValidator;
use Drupal\views\Plugin\Derivative\ViewsEntityArgumentValidator;
use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Defines an argument validator plugin for each entity type.
 *
 * @ViewsArgumentValidator(
 *   id = "entity",
 *   deriver = "Drupal\views\Plugin\Derivative\ViewsEntityArgumentValidator"
 * )
 *
 * @see \Drupal\views\Plugin\Derivative\ViewsEntityArgumentValidator
 */
#[ViewsArgumentValidator(
  id: 'entity',
  deriver: ViewsEntityArgumentValidator::class
)]
class Entity extends ArgumentValidatorPluginBase {

  /**
+7 −5
Original line number Diff line number Diff line
@@ -2,16 +2,18 @@

namespace Drupal\views\Plugin\views\argument_validator;

use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsArgumentValidator;

/**
 * Do not validate the argument.
 *
 * @ingroup views_argument_validate_plugins
 *
 * @ViewsArgumentValidator(
 *   id = "none",
 *   title = @Translation(" - Basic validation - ")
 * )
 */
#[ViewsArgumentValidator(
  id: 'none',
  title: new TranslatableMarkup('- Basic validation -')
)]
class None extends ArgumentValidatorPluginBase {

  public function validateArgument($argument) {
Loading