From 1b8fe608973e15107ab4dfe6aa85ce945ddd921b Mon Sep 17 00:00:00 2001 From: Bram Driesen <4761-BramDriesen@users.noreply.drupalcode.org> Date: Mon, 31 Mar 2025 17:16:09 +0000 Subject: [PATCH] Issue #3500374 by keiserjb, bramdriesen: Settings page in Drupal 11 --- konamicode.info.yml | 2 +- konamicode.module | 6 +++--- konamicode.services.yml | 4 ++++ src/Form/KonamicodeActionAlertConfiguration.php | 5 +++-- .../KonamicodeActionAsteroidsConfiguration.php | 5 +++-- src/Form/KonamicodeActionBaseConfiguration.php | 7 +++++-- .../KonamicodeActionFlipTextConfiguration.php | 5 +++-- .../KonamicodeActionImageSpawnConfiguration.php | 5 +++-- .../KonamicodeActionRaptorizeConfiguration.php | 5 +++-- .../KonamicodeActionRedirectConfiguration.php | 5 +++-- ...onamicodeActionReplaceImagesConfiguration.php | 5 +++-- .../KonamicodeActionSnowfallConfiguration.php | 5 +++-- src/Form/KonamicodeMainConfiguration.php | 16 ++++++++-------- tests/src/Unit/KonamicodeHexColorTest.php | 10 +++++++++- tests/src/Unit/KonamicodeKeyCodeSequenceTest.php | 10 +++++++++- 15 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 konamicode.services.yml diff --git a/konamicode.info.yml b/konamicode.info.yml index 6f7e964..b2e9876 100644 --- a/konamicode.info.yml +++ b/konamicode.info.yml @@ -2,6 +2,6 @@ name: Konami Code type: module description: Performs special actions when the user enters the Konami Code. package: Other -core_version_requirement: ^8.8 || ^9 || ^10 || ^11 +core_version_requirement: ^10.2 || ^11 configure: konamicode.configuration diff --git a/konamicode.module b/konamicode.module index de4fd11..462881a 100644 --- a/konamicode.module +++ b/konamicode.module @@ -20,9 +20,9 @@ function konamicode_help($route_name, RouteMatchInterface $route_match) { <h3>Instructions</h3> <p>Install the module like any other module in the <em>modules/contrib</em> folder and enable in <strong>/admin/modules</strong>.</p> <p>Then, visit <strong>/admin/config/user-interface/konamicode</strong> to configure the different <em>actions</em> and options for each of the actions.</p> - <p>Last, visit any page and enter the configured Konami code.</p> + <p>Last, visit any page and enter the configured Konami code.</p> <h3>Documentation</h3> - <p>The complete documentation guide can be found at the dedicated <a href="https://www.drupal.org/docs/8/modules/konami-code">documentation</a> page.</p> + <p>The complete documentation guide can be found at the dedicated <a href="https://www.drupal.org/docs/8/modules/konami-code">documentation</a> page.</p> '); } } @@ -64,7 +64,7 @@ function konamicode_page_attachments(array &$page) { $raw_configuration = $config->getRawData(); // Fetch the Konami Code settings. - $main_configuration_class = new KonamicodeMainConfiguration(\Drupal::configFactory()); + $main_configuration_class = \Drupal::service('konamicode.main_configuration'); $actions = $main_configuration_class->getAllActions(); // Loop over all the actions. diff --git a/konamicode.services.yml b/konamicode.services.yml new file mode 100644 index 0000000..ff1b292 --- /dev/null +++ b/konamicode.services.yml @@ -0,0 +1,4 @@ +services: + konamicode.main_configuration: + class: Drupal\konamicode\Form\KonamicodeMainConfiguration + arguments: [ '@config.factory', '@config.typed' ] diff --git a/src/Form/KonamicodeActionAlertConfiguration.php b/src/Form/KonamicodeActionAlertConfiguration.php index a17a717..a59d8ae 100644 --- a/src/Form/KonamicodeActionAlertConfiguration.php +++ b/src/Form/KonamicodeActionAlertConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -16,8 +17,8 @@ class KonamicodeActionAlertConfiguration extends KonamicodeActionBaseConfigurati /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName); } /** diff --git a/src/Form/KonamicodeActionAsteroidsConfiguration.php b/src/Form/KonamicodeActionAsteroidsConfiguration.php index 10bfe01..683f6be 100644 --- a/src/Form/KonamicodeActionAsteroidsConfiguration.php +++ b/src/Form/KonamicodeActionAsteroidsConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -17,8 +18,8 @@ class KonamicodeActionAsteroidsConfiguration extends KonamicodeActionBaseConfigu /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName, self::$dependencies); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName, self::$dependencies); } /** diff --git a/src/Form/KonamicodeActionBaseConfiguration.php b/src/Form/KonamicodeActionBaseConfiguration.php index 340079d..1b9d56d 100644 --- a/src/Form/KonamicodeActionBaseConfiguration.php +++ b/src/Form/KonamicodeActionBaseConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -51,6 +52,8 @@ class KonamicodeActionBaseConfiguration extends KonamicodeMainConfiguration { * * @param Drupal\Core\Config\ConfigFactoryInterface $config_factory * The ConfigFactoryInterface. + * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager + * The typed config manager. * @param string $name * Action name. * @param string $machine_name @@ -59,11 +62,11 @@ class KonamicodeActionBaseConfiguration extends KonamicodeMainConfiguration { * Optional: An array of dependencies. The dependency name must match the * name set in the konamicode.libraries.yml file. */ - public function __construct(ConfigFactoryInterface $config_factory, $name, $machine_name, array $dependencies = []) { + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager, $name, $machine_name, array $dependencies = []) { $this->setName($name); $this->setMachineName($machine_name); $this->setDependencies($dependencies); - parent::__construct($config_factory); + parent::__construct($config_factory, $typed_config_manager); } /** diff --git a/src/Form/KonamicodeActionFlipTextConfiguration.php b/src/Form/KonamicodeActionFlipTextConfiguration.php index dca7b12..a30d9a1 100644 --- a/src/Form/KonamicodeActionFlipTextConfiguration.php +++ b/src/Form/KonamicodeActionFlipTextConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -17,8 +18,8 @@ class KonamicodeActionFlipTextConfiguration extends KonamicodeActionBaseConfigur /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName, self::$dependencies); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName, self::$dependencies); } /** diff --git a/src/Form/KonamicodeActionImageSpawnConfiguration.php b/src/Form/KonamicodeActionImageSpawnConfiguration.php index 5a58613..de87bef 100644 --- a/src/Form/KonamicodeActionImageSpawnConfiguration.php +++ b/src/Form/KonamicodeActionImageSpawnConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -17,8 +18,8 @@ class KonamicodeActionImageSpawnConfiguration extends KonamicodeActionBaseConfig /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName, self::$dependencies); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName, self::$dependencies); } /** diff --git a/src/Form/KonamicodeActionRaptorizeConfiguration.php b/src/Form/KonamicodeActionRaptorizeConfiguration.php index 87ac67a..5f572f4 100644 --- a/src/Form/KonamicodeActionRaptorizeConfiguration.php +++ b/src/Form/KonamicodeActionRaptorizeConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -17,8 +18,8 @@ class KonamicodeActionRaptorizeConfiguration extends KonamicodeActionBaseConfigu /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName, self::$dependencies); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName, self::$dependencies); } /** diff --git a/src/Form/KonamicodeActionRedirectConfiguration.php b/src/Form/KonamicodeActionRedirectConfiguration.php index c2667b9..60590ff 100644 --- a/src/Form/KonamicodeActionRedirectConfiguration.php +++ b/src/Form/KonamicodeActionRedirectConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -16,8 +17,8 @@ class KonamicodeActionRedirectConfiguration extends KonamicodeActionBaseConfigur /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName); } /** diff --git a/src/Form/KonamicodeActionReplaceImagesConfiguration.php b/src/Form/KonamicodeActionReplaceImagesConfiguration.php index b29fb3e..8c972e2 100644 --- a/src/Form/KonamicodeActionReplaceImagesConfiguration.php +++ b/src/Form/KonamicodeActionReplaceImagesConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; /** @@ -16,8 +17,8 @@ class KonamicodeActionReplaceImagesConfiguration extends KonamicodeActionBaseCon /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName); } /** diff --git a/src/Form/KonamicodeActionSnowfallConfiguration.php b/src/Form/KonamicodeActionSnowfallConfiguration.php index 69839dc..14c4385 100644 --- a/src/Form/KonamicodeActionSnowfallConfiguration.php +++ b/src/Form/KonamicodeActionSnowfallConfiguration.php @@ -3,6 +3,7 @@ namespace Drupal\konamicode\Form; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Link; use Drupal\Core\Url; @@ -19,8 +20,8 @@ class KonamicodeActionSnowfallConfiguration extends KonamicodeActionBaseConfigur /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory) { - parent::__construct($config_factory, self::$name, self::$machineName, self::$dependencies); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager) { + parent::__construct($config_factory, $typed_config_manager, self::$name, self::$machineName, self::$dependencies); } /** diff --git a/src/Form/KonamicodeMainConfiguration.php b/src/Form/KonamicodeMainConfiguration.php index 1692bc6..291dadc 100644 --- a/src/Form/KonamicodeMainConfiguration.php +++ b/src/Form/KonamicodeMainConfiguration.php @@ -109,14 +109,14 @@ class KonamicodeMainConfiguration extends ConfigFormBase { */ public function getAllActions() { return [ - new KonamicodeActionRedirectConfiguration($this->configFactory), - new KonamicodeActionAlertConfiguration($this->configFactory), - new KonamicodeActionRaptorizeConfiguration($this->configFactory), - new KonamicodeActionFlipTextConfiguration($this->configFactory), - new KonamicodeActionImageSpawnConfiguration($this->configFactory), - new KonamicodeActionReplaceImagesConfiguration($this->configFactory), - new KonamicodeActionSnowfallConfiguration($this->configFactory), - new KonamicodeActionAsteroidsConfiguration($this->configFactory), + new KonamicodeActionRedirectConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionAlertConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionRaptorizeConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionFlipTextConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionImageSpawnConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionReplaceImagesConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionSnowfallConfiguration($this->configFactory, $this->typedConfigManager), + new KonamicodeActionAsteroidsConfiguration($this->configFactory, $this->typedConfigManager), ]; } diff --git a/tests/src/Unit/KonamicodeHexColorTest.php b/tests/src/Unit/KonamicodeHexColorTest.php index 7984042..b4f400e 100644 --- a/tests/src/Unit/KonamicodeHexColorTest.php +++ b/tests/src/Unit/KonamicodeHexColorTest.php @@ -19,6 +19,13 @@ class KonamicodeHexColorTest extends UnitTestCase { */ protected $configFactory; + /** + * The typed config manager. + * + * @var \Drupal\Core\Config\TypedConfigManager + */ + protected $typedConfigManager; + /** * The action class used to trigger the functions. * @@ -32,9 +39,10 @@ class KonamicodeHexColorTest extends UnitTestCase { public function setUp(): void { parent::setUp(); $this->configFactory = $this->createMock('Drupal\Core\Config\ConfigFactory'); + $this->typedConfigManager = $this->createMock('Drupal\Core\Config\TypedConfigManager'); // Mock that we are the snowfall class. - $this->actionClass = new KonamicodeActionSnowfallConfiguration($this->configFactory); + $this->actionClass = new KonamicodeActionSnowfallConfiguration($this->configFactory, $this->typedConfigManager); } /** diff --git a/tests/src/Unit/KonamicodeKeyCodeSequenceTest.php b/tests/src/Unit/KonamicodeKeyCodeSequenceTest.php index d4d948a..30b6ae2 100644 --- a/tests/src/Unit/KonamicodeKeyCodeSequenceTest.php +++ b/tests/src/Unit/KonamicodeKeyCodeSequenceTest.php @@ -18,6 +18,13 @@ class KonamicodeKeyCodeSequenceTest extends UnitTestCase { * @var \Drupal\Core\Config\ConfigFactory */ protected $configFactory; + + /** + * The typed config manager. + * + * @var \Drupal\Core\Config\TypedConfigManager + */ + protected $typedConfigManager; /** * The action class used to trigger the functions. @@ -32,10 +39,11 @@ class KonamicodeKeyCodeSequenceTest extends UnitTestCase { public function setUp(): void { parent::setUp(); $this->configFactory = $this->createMock('Drupal\Core\Config\ConfigFactory'); + $this->typedConfigManager = $this->createMock('Drupal\Core\Config\TypedConfigManager'); // Just mock that we are one of the action classes in order to be able to // call the validation function of the base class. - $this->actionClass = new KonamicodeActionAlertConfiguration($this->configFactory); + $this->actionClass = new KonamicodeActionAlertConfiguration($this->configFactory, $this->typedConfigManager); } /** -- GitLab