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

Issue #3421005 by Ruturaj Chaubey, sorlov, quietone, smustgrave, larowlan,...

Issue #3421005 by Ruturaj Chaubey, sorlov, quietone, smustgrave, larowlan, alexpott: Convert ViewsStyle plugin discovery to attributes

(cherry picked from commit f944f488)
parent dd091490
Loading
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsStyle;
use Drupal\views\Plugin\views\style\StylePluginBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Serializer\SerializerInterface;
@@ -13,14 +15,13 @@
 * The style plugin for serialized output formats.
 *
 * @ingroup views_style_plugins
 *
 * @ViewsStyle(
 *   id = "serializer",
 *   title = @Translation("Serializer"),
 *   help = @Translation("Serializes views row data using the Serializer component."),
 *   display_types = {"data"}
 * )
 */
#[ViewsStyle(
  id: "serializer",
  title: new TranslatableMarkup("Serializer"),
  help: new TranslatableMarkup("Serializes views row data using the Serializer component."),
  display_types: ["data"],
)]
class Serializer extends StylePluginBase implements CacheableDependencyInterface {

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

declare(strict_types=1);

namespace Drupal\views\Attribute;

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

/**
 * Defines a views style plugins type attribute for plugin discovery.
 *
 * @see \Drupal\views\Plugin\views\style\StylePluginBase
 *
 * @ingroup views_style_plugins
 */
#[\Attribute(\Attribute::TARGET_CLASS)]
class ViewsStyle extends Plugin {

  /**
   * Constructs a ViewsStyle 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 \Drupal\Core\StringTranslation\TranslatableMarkup|null $help
   *   (optional) A short help string; this is displayed in the views UI.
   * @param string|null $theme
   *   (optional) The theme function used to render the style output.
   * @param string[] $display_types
   *   The types of the display this plugin can be used with.
   *   For example the Feed display defines the type 'feed', so only rss style
   *   and row plugins can be used in the views UI.
   * @param string[] $base
   *   (optional) The base tables on which this access plugin can be used.
   *   If no base table is specified the plugin can be used with all tables.
   * @param bool $no_ui
   *   (optional) Whether the plugin should be not selectable in the UI.
   *   If set to TRUE, you can still use it via the API in config files.
   *   Defaults to FALSE.
   * @param bool $register_theme
   *   (optional) Whether or not to register a theme function automatically.
   * @param class-string|null $deriver
   *   (optional) The deriver class.
   */
  public function __construct(
    public readonly string $id,
    public readonly TranslatableMarkup $title,
    public readonly ?TranslatableMarkup $short_title = NULL,
    public readonly ?TranslatableMarkup $help = NULL,
    public readonly ?string $theme = NULL,
    public readonly array $display_types = [],
    public readonly array $base = [],
    public readonly bool $no_ui = FALSE,
    public readonly bool $register_theme = TRUE,
    public readonly ?string $deriver = NULL
  ) {}

}
+10 −8
Original line number Diff line number Diff line
@@ -2,21 +2,23 @@

namespace Drupal\views\Plugin\views\style;

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

/**
 * Unformatted style plugin to render rows.
 *
 * Row are rendered one after another with no decorations.
 *
 * @ingroup views_style_plugins
 *
 * @ViewsStyle(
 *   id = "default",
 *   title = @Translation("Unformatted list"),
 *   help = @Translation("Displays rows one after another."),
 *   theme = "views_view_unformatted",
 *   display_types = {"normal"}
 * )
 */
#[ViewsStyle(
  id: "default",
  title: new TranslatableMarkup("Unformatted list"),
  help: new TranslatableMarkup("Displays rows one after another."),
  theme: "views_view_unformatted",
  display_types: ["normal"],
)]
class DefaultStyle extends StylePluginBase {

  /**
+9 −8
Original line number Diff line number Diff line
@@ -3,20 +3,21 @@
namespace Drupal\views\Plugin\views\style;

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

/**
 * The default style plugin for summaries.
 *
 * @ingroup views_style_plugins
 *
 * @ViewsStyle(
 *   id = "default_summary",
 *   title = @Translation("List"),
 *   help = @Translation("Displays the default summary as a list."),
 *   theme = "views_view_summary",
 *   display_types = {"summary"}
 * )
 */
#[ViewsStyle(
  id: "default_summary",
  title: new TranslatableMarkup("List"),
  help: new TranslatableMarkup("Displays the default summary as a list."),
  theme: "views_view_summary",
  display_types: ["summary"],
)]
class DefaultSummary extends StylePluginBase {

  protected function defineOptions() {
+10 −9
Original line number Diff line number Diff line
@@ -4,21 +4,22 @@

use Drupal\Component\Utility\Xss;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsStyle;

/**
 * EntityReference style plugin.
 *
 * @ingroup views_style_plugins
 *
 * @ViewsStyle(
 *   id = "entity_reference",
 *   title = @Translation("Entity Reference list"),
 *   help = @Translation("Returns results as a PHP array of labels and rendered rows."),
 *   theme = "views_view_unformatted",
 *   register_theme = FALSE,
 *   display_types = {"entity_reference"}
 * )
 */
#[ViewsStyle(
  id: "entity_reference",
  title: new TranslatableMarkup("Entity Reference list"),
  help: new TranslatableMarkup("Returns results as a PHP array of labels and rendered rows."),
  theme: "views_view_unformatted",
  register_theme: FALSE,
  display_types: ["entity_reference"],
)]
class EntityReference extends StylePluginBase {

  /**
Loading