Skip to content
Snippets Groups Projects
Verified Commit ffaf9871 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3420991 by kim.pepper, larowlan, mstrelan: Convert ImageToolkit plugin...

Issue #3420991 by kim.pepper, larowlan, mstrelan: Convert ImageToolkit plugin discovery to attributes
parent 328bb474
No related branches found
No related tags found
30 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8540Issue #3457061: Bootstrap Modal dialog Not closing after 10.3.0 Update,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8373Issue #3427374 by danflanagan8, Vighneshh: taxonomy_tid ViewsArgumentDefault...,!7526Expose roles in response,!7352Draft: Resolve #3203489 "Set filename as",!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3668Resolve #3347842 "Deprecate the trusted",!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2794Issue #3100732: Allow specifying `meta` data on JSON:API objects,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
<?php
declare(strict_types=1);
namespace Drupal\Core\ImageToolkit\Attribute;
use Drupal\Component\Plugin\Attribute\Plugin;
use Drupal\Core\StringTranslation\TranslatableMarkup;
/**
* Defines a Plugin attribute for the image toolkit plugin.
*
* An image toolkit provides common image file manipulations like scaling,
* cropping, and rotating.
*
* Plugin namespace: Plugin\ImageToolkit
*
* For a working example, see
* \Drupal\system\Plugin\ImageToolkit\GDToolkit
*
* @see \Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation
* @see \Drupal\Core\ImageToolkit\ImageToolkitInterface
* @see \Drupal\Core\ImageToolkit\ImageToolkitBase
* @see \Drupal\Core\ImageToolkit\ImageToolkitManager
* @see plugin_api
*/
#[\Attribute(\Attribute::TARGET_CLASS)]
class ImageToolkit extends Plugin {
public function __construct(
public readonly string $id,
public readonly TranslatableMarkup $title,
public readonly ?string $deriver = NULL,
) {}
}
......@@ -5,6 +5,7 @@
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\ImageToolkit\Attribute\ImageToolkit;
use Drupal\Core\Plugin\DefaultPluginManager;
/**
......@@ -38,7 +39,14 @@ class ImageToolkitManager extends DefaultPluginManager {
* The config factory.
*/
public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ConfigFactoryInterface $config_factory) {
parent::__construct('Plugin/ImageToolkit', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkit');
parent::__construct(
'Plugin/ImageToolkit',
$namespaces,
$module_handler,
ImageToolkitInterface::class,
ImageToolkit::class,
'Drupal\Core\ImageToolkit\Annotation\ImageToolkit',
);
$this->setCacheBackend($cache_backend, 'image_toolkit_plugins');
$this->configFactory = $config_factory;
......
......@@ -7,11 +7,13 @@
use Drupal\Core\File\Exception\FileException;
use Drupal\Core\File\FileSystemInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\ImageToolkit\Attribute\ImageToolkit;
use Drupal\Core\ImageToolkit\ImageToolkitBase;
use Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface;
use Drupal\Core\StreamWrapper\StreamWrapperInterface;
use Drupal\Core\StreamWrapper\StreamWrapperManager;
use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
......@@ -19,12 +21,11 @@
/**
* Defines the GD2 toolkit for image manipulation within Drupal.
*
* @ImageToolkit(
* id = "gd",
* title = @Translation("GD2 image manipulation toolkit")
* )
*/
#[ImageToolkit(
id: "gd",
title: new TranslatableMarkup("GD2 image manipulation toolkit"),
)]
class GDToolkit extends ImageToolkitBase {
/**
......
......@@ -2,14 +2,16 @@
namespace Drupal\image_test\Plugin\ImageToolkit;
use Drupal\Core\ImageToolkit\Attribute\ImageToolkit;
use Drupal\Core\StringTranslation\TranslatableMarkup;
/**
* Defines a Test toolkit for image manipulation within Drupal.
*
* @ImageToolkit(
* id = "broken",
* title = @Translation("A dummy toolkit that is broken")
* )
*/
#[ImageToolkit(
id: "broken",
title: new TranslatableMarkup("A dummy toolkit that is broken"),
)]
class BrokenToolkit extends TestToolkit {
/**
......
......@@ -2,12 +2,14 @@
namespace Drupal\image_test\Plugin\ImageToolkit;
use Drupal\Core\ImageToolkit\Attribute\ImageToolkit;
use Drupal\Core\StringTranslation\TranslatableMarkup;
/**
* Provides a derivative of TestToolkit.
*
* @ImageToolkit(
* id = "test:derived_toolkit",
* title = @Translation("A dummy toolkit, derivative of 'test'.")
* )
*/
#[ImageToolkit(
id: "test:derived_toolkit",
title: new TranslatableMarkup("A dummy toolkit, derivative of 'test'."),
)]
class DerivedToolkit extends TestToolkit {}
......@@ -4,20 +4,21 @@
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\ImageToolkit\Attribute\ImageToolkit;
use Drupal\Core\ImageToolkit\ImageToolkitBase;
use Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface;
use Drupal\Core\State\StateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Defines a Test toolkit for image manipulation within Drupal.
*
* @ImageToolkit(
* id = "test",
* title = @Translation("A dummy toolkit that works")
* )
*/
#[ImageToolkit(
id: "test",
title: new TranslatableMarkup("A dummy toolkit that works"),
)]
class TestToolkit extends ImageToolkitBase {
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment