Loading modules/core_event_dispatcher/core_event_dispatcher.module +14 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ use Drupal\core_event_dispatcher\Event\Block\BlockViewAlterEvent; use Drupal\core_event_dispatcher\Event\Core\CountriesAlterEvent; use Drupal\core_event_dispatcher\Event\Core\CronEvent; use Drupal\core_event_dispatcher\Event\Core\DataTypeInfoAlterEvent; use Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent; use Drupal\core_event_dispatcher\Event\Core\MailAlterEvent; use Drupal\core_event_dispatcher\Event\Core\MailBackendInfoAlterEvent; use Drupal\core_event_dispatcher\Event\Core\QueueInfoAlterEvent; Loading Loading @@ -71,7 +72,6 @@ use Drupal\core_event_dispatcher\Event\Language\LanguageSwitchLinksAlterEvent; // Core. // @todo hook_mail() // @todo hook_display_variant_plugin_alter() // @todo hook_layout_alter() // @todo hook_cache_flush() // @todo hook_rebuild() Loading Loading @@ -209,6 +209,16 @@ function core_event_dispatcher_mail_alter(&$message) { $manager->register($event); } /** * Implements hook_mail_backend_info_alter(). */ function core_event_dispatcher_mail_backend_info_alter(&$info) { /** @var \Drupal\hook_event_dispatcher\Manager\HookEventDispatcherManagerInterface $manager */ $manager = Drupal::service('hook_event_dispatcher.manager'); $event = new MailBackendInfoAlterEvent($info); $manager->register($event); } /** * Implements hook_countries_alter(). */ Loading @@ -220,12 +230,12 @@ function core_event_dispatcher_countries_alter(&$countries) { } /** * Implements hook_mail_backend_info_alter(). * Implements hook_display_variant_plugin_alter(). */ function core_event_dispatcher_mail_backend_info_alter(&$info) { function core_event_dispatcher_display_variant_plugin_alter(array &$definitions) { /** @var \Drupal\hook_event_dispatcher\Manager\HookEventDispatcherManagerInterface $manager */ $manager = Drupal::service('hook_event_dispatcher.manager'); $event = new MailBackendInfoAlterEvent($info); $event = new DisplayVariantPluginAlterEvent($definitions); $manager->register($event); } Loading modules/core_event_dispatcher/src/Event/Core/DisplayVariantPluginAlterEvent.php 0 → 100644 +48 −0 Original line number Diff line number Diff line <?php namespace Drupal\core_event_dispatcher\Event\Core; use Drupal\Component\EventDispatcher\Event; use Drupal\hook_event_dispatcher\Event\EventInterface; use Drupal\hook_event_dispatcher\HookEventDispatcherInterface; /** * Class DisplayVariantPluginAlterEvent. */ class DisplayVariantPluginAlterEvent extends Event implements EventInterface { /** * The display variant definitions. * * @var array */ protected $definitions; /** * DisplayVariantPluginAlterEvent constructor. * * @param array $definitions * The array of display variant definitions, keyed by plugin ID. */ public function __construct(array &$definitions) { $this->definitions = &$definitions; } /** * Gets the display variant definitions. * * @return array * The array of display variant definitions, keyed by plugin ID. */ public function &getDefinitions(): array { return $this->definitions; } /** * {@inheritdoc} */ public function getDispatcherType(): string { return HookEventDispatcherInterface::DISPLAY_VARIANT_PLUGIN_ALTER; } } modules/core_event_dispatcher/tests/src/Kernel/Core/DisplayVariantPluginAlterEventTest.php 0 → 100644 +57 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\core_event_dispatcher\Kernel\Core; use Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent; use Drupal\hook_event_dispatcher\HookEventDispatcherInterface; use Drupal\KernelTests\KernelTestBase; use Drupal\Tests\hook_event_dispatcher\Kernel\ListenerTrait; /** * Class DisplayVariantPluginAlterEventTest. * * @group hook_event_dispatcher * @group core_event_dispatcher * * @see core_event_dispatcher_display_variant_plugin_alter() */ class DisplayVariantPluginAlterEventTest extends KernelTestBase { use ListenerTrait; /** * {@inheritdoc} */ protected static $modules = [ 'hook_event_dispatcher', 'core_event_dispatcher', ]; /** * Tests the DisplayVariantPluginAlterEvent. * * @throws \Exception */ public function testDisplayVariantPluginAlter(): void { $this->listen(HookEventDispatcherInterface::DISPLAY_VARIANT_PLUGIN_ALTER, 'onDisplayVariantPluginAlter'); $definitions = $this->container->get('plugin.manager.display_variant')->getDefinitions(); $this->assertEquals('Altered', $definitions['simple_page']['admin_label']); } /** * Callback for DisplayVariantPluginAlterEvent. * * @param \Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent $event * The event. */ public function onDisplayVariantPluginAlter(DisplayVariantPluginAlterEvent $event): void { $definitions = &$event->getDefinitions(); $this->assertArrayHasKey('simple_page', $definitions); $this->assertArrayHasKey('admin_label', $definitions['simple_page']); $this->assertEquals('Simple page', $definitions['simple_page']['admin_label']); $definitions['simple_page']['admin_label'] = 'Altered'; } } src/HookEventDispatcherInterface.php +14 −0 Original line number Diff line number Diff line Loading @@ -942,9 +942,23 @@ interface HookEventDispatcherInterface { * * @see core_event_dispatcher_countries_alter() * @see hook_countries_alter() * * @var string */ public const COUNTRIES_ALTER = self::PREFIX . 'countries.alter'; /** * Alter display variant plugin definitions. * * @Event * * @see core_event_dispatcher_display_variant_plugin_alter() * @see hook_display_variant_plugin_alter() * * @var string */ public const DISPLAY_VARIANT_PLUGIN_ALTER = self::PREFIX . 'display_variant.plugin_alter'; // LANGUAGE EVENTS. /** * Alter the links generated to switch languages. Loading Loading
modules/core_event_dispatcher/core_event_dispatcher.module +14 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ use Drupal\core_event_dispatcher\Event\Block\BlockViewAlterEvent; use Drupal\core_event_dispatcher\Event\Core\CountriesAlterEvent; use Drupal\core_event_dispatcher\Event\Core\CronEvent; use Drupal\core_event_dispatcher\Event\Core\DataTypeInfoAlterEvent; use Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent; use Drupal\core_event_dispatcher\Event\Core\MailAlterEvent; use Drupal\core_event_dispatcher\Event\Core\MailBackendInfoAlterEvent; use Drupal\core_event_dispatcher\Event\Core\QueueInfoAlterEvent; Loading Loading @@ -71,7 +72,6 @@ use Drupal\core_event_dispatcher\Event\Language\LanguageSwitchLinksAlterEvent; // Core. // @todo hook_mail() // @todo hook_display_variant_plugin_alter() // @todo hook_layout_alter() // @todo hook_cache_flush() // @todo hook_rebuild() Loading Loading @@ -209,6 +209,16 @@ function core_event_dispatcher_mail_alter(&$message) { $manager->register($event); } /** * Implements hook_mail_backend_info_alter(). */ function core_event_dispatcher_mail_backend_info_alter(&$info) { /** @var \Drupal\hook_event_dispatcher\Manager\HookEventDispatcherManagerInterface $manager */ $manager = Drupal::service('hook_event_dispatcher.manager'); $event = new MailBackendInfoAlterEvent($info); $manager->register($event); } /** * Implements hook_countries_alter(). */ Loading @@ -220,12 +230,12 @@ function core_event_dispatcher_countries_alter(&$countries) { } /** * Implements hook_mail_backend_info_alter(). * Implements hook_display_variant_plugin_alter(). */ function core_event_dispatcher_mail_backend_info_alter(&$info) { function core_event_dispatcher_display_variant_plugin_alter(array &$definitions) { /** @var \Drupal\hook_event_dispatcher\Manager\HookEventDispatcherManagerInterface $manager */ $manager = Drupal::service('hook_event_dispatcher.manager'); $event = new MailBackendInfoAlterEvent($info); $event = new DisplayVariantPluginAlterEvent($definitions); $manager->register($event); } Loading
modules/core_event_dispatcher/src/Event/Core/DisplayVariantPluginAlterEvent.php 0 → 100644 +48 −0 Original line number Diff line number Diff line <?php namespace Drupal\core_event_dispatcher\Event\Core; use Drupal\Component\EventDispatcher\Event; use Drupal\hook_event_dispatcher\Event\EventInterface; use Drupal\hook_event_dispatcher\HookEventDispatcherInterface; /** * Class DisplayVariantPluginAlterEvent. */ class DisplayVariantPluginAlterEvent extends Event implements EventInterface { /** * The display variant definitions. * * @var array */ protected $definitions; /** * DisplayVariantPluginAlterEvent constructor. * * @param array $definitions * The array of display variant definitions, keyed by plugin ID. */ public function __construct(array &$definitions) { $this->definitions = &$definitions; } /** * Gets the display variant definitions. * * @return array * The array of display variant definitions, keyed by plugin ID. */ public function &getDefinitions(): array { return $this->definitions; } /** * {@inheritdoc} */ public function getDispatcherType(): string { return HookEventDispatcherInterface::DISPLAY_VARIANT_PLUGIN_ALTER; } }
modules/core_event_dispatcher/tests/src/Kernel/Core/DisplayVariantPluginAlterEventTest.php 0 → 100644 +57 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\core_event_dispatcher\Kernel\Core; use Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent; use Drupal\hook_event_dispatcher\HookEventDispatcherInterface; use Drupal\KernelTests\KernelTestBase; use Drupal\Tests\hook_event_dispatcher\Kernel\ListenerTrait; /** * Class DisplayVariantPluginAlterEventTest. * * @group hook_event_dispatcher * @group core_event_dispatcher * * @see core_event_dispatcher_display_variant_plugin_alter() */ class DisplayVariantPluginAlterEventTest extends KernelTestBase { use ListenerTrait; /** * {@inheritdoc} */ protected static $modules = [ 'hook_event_dispatcher', 'core_event_dispatcher', ]; /** * Tests the DisplayVariantPluginAlterEvent. * * @throws \Exception */ public function testDisplayVariantPluginAlter(): void { $this->listen(HookEventDispatcherInterface::DISPLAY_VARIANT_PLUGIN_ALTER, 'onDisplayVariantPluginAlter'); $definitions = $this->container->get('plugin.manager.display_variant')->getDefinitions(); $this->assertEquals('Altered', $definitions['simple_page']['admin_label']); } /** * Callback for DisplayVariantPluginAlterEvent. * * @param \Drupal\core_event_dispatcher\Event\Core\DisplayVariantPluginAlterEvent $event * The event. */ public function onDisplayVariantPluginAlter(DisplayVariantPluginAlterEvent $event): void { $definitions = &$event->getDefinitions(); $this->assertArrayHasKey('simple_page', $definitions); $this->assertArrayHasKey('admin_label', $definitions['simple_page']); $this->assertEquals('Simple page', $definitions['simple_page']['admin_label']); $definitions['simple_page']['admin_label'] = 'Altered'; } }
src/HookEventDispatcherInterface.php +14 −0 Original line number Diff line number Diff line Loading @@ -942,9 +942,23 @@ interface HookEventDispatcherInterface { * * @see core_event_dispatcher_countries_alter() * @see hook_countries_alter() * * @var string */ public const COUNTRIES_ALTER = self::PREFIX . 'countries.alter'; /** * Alter display variant plugin definitions. * * @Event * * @see core_event_dispatcher_display_variant_plugin_alter() * @see hook_display_variant_plugin_alter() * * @var string */ public const DISPLAY_VARIANT_PLUGIN_ALTER = self::PREFIX . 'display_variant.plugin_alter'; // LANGUAGE EVENTS. /** * Alter the links generated to switch languages. Loading