.../src/Plugin/CKEditor5PluginDefinition.php | 4 +- .../src/Kernel/CKEditor5PluginManagerTest.php | 50 ++++++++++++---------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php index a981943ee3..3ca1ab5e52 100644 --- a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php @@ -53,7 +53,9 @@ final class CKEditor5PluginDefinition extends PluginDefinition implements Plugin * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException */ public function __construct(array $definition) { - $this->id = $id = $definition['id']; + $this->id = $id = !isset($definition['base_id']) + ? $definition['id'] + : sprintf("%s:%s", $definition['base_id'], $definition['id']); $expected_prefix = sprintf("%s_", $definition['provider']); if (strpos($id, $expected_prefix) !== 0) { diff --git a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php index b3f9927fb0..003a6b631b 100644 --- a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php +++ b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php @@ -1589,7 +1589,8 @@ public function getDerivativeDefinitions($base_plugin_definition) { assert($base_plugin_definition instanceof CKEditor5PluginDefinition); foreach (['bar', 'baz'] as $derivative) { $definition = $base_plugin_definition->toArray(); - $definition['id'] .= "_$derivative"; + $definition['base_id'] = $base_plugin_definition->id(); + $definition['id'] = $derivative; $definition['drupal']['label'] = sprintf("Foo %s", $derivative); $this->derivatives[$definition['id']] = new CKEditor5PluginDefinition($definition); } @@ -1610,7 +1611,7 @@ public function getDerivativeDefinitions($base_plugin_definition) { drupal: deriver: Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\SimpleDeriver YAML, - 'The "ckeditor5_derived_plugin_foo_bar" CKEditor 5 derived plugin definition must contain a "drupal.elements" key.', + 'The "ckeditor5_derived_plugin_foo:bar" CKEditor 5 derived plugin definition must contain a "drupal.elements" key.', $simple_deriver_additional_files, ]; @@ -1622,7 +1623,7 @@ public function getDerivativeDefinitions($base_plugin_definition) { elements: false deriver: Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\SimpleDeriver YAML, - 'The "ckeditor5_derived_plugin_foo_bar" CKEditor 5 derived plugin definition must contain a "ckeditor5.plugins" key.', + 'The "ckeditor5_derived_plugin_foo:bar" CKEditor 5 derived plugin definition must contain a "ckeditor5.plugins" key.', $simple_deriver_additional_files, ]; @@ -1633,11 +1634,11 @@ public function getDerivativeDefinitions($base_plugin_definition) { elements: false deriver: Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\SimpleDeriver YAML, - 'The "ckeditor5_derived_plugin_foo_bar" CKEditor 5 derived plugin definition must contain a "ckeditor5.plugins" key.', + 'The "ckeditor5_derived_plugin_foo:bar" CKEditor 5 derived plugin definition must contain a "ckeditor5.plugins" key.', $simple_deriver_additional_files, ]; - yield 'VALID: simple deriver which returns arrays instead of CKEditor5PluginDefinition instances' => [ + yield 'INVALID: simple deriver which returns arrays instead of CKEditor5PluginDefinition instances' => [ << [ 'Plugin' => [ @@ -1661,7 +1662,8 @@ public function getDerivativeDefinitions($base_plugin_definition) { assert($base_plugin_definition instanceof CKEditor5PluginDefinition); foreach (['bar', 'baz'] as $derivative) { $definition = $base_plugin_definition->toArray(); - $definition['id'] .= "_$derivative"; + $definition['base_id'] = $base_plugin_definition->id(); + $definition['id'] = $derivative; $definition['drupal']['label'] = sprintf("Foo %s", $derivative); $this->derivatives[$definition['id']] = $definition; } @@ -1687,9 +1689,9 @@ public function getDerivativeDefinitions($base_plugin_definition) { NULL, $simple_deriver_additional_files, [ - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_bar' => [ + 'ckeditor5_derived_plugin_foo:bar' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_bar', + 'id' => 'ckeditor5_derived_plugin_foo:bar', 'ckeditor5' => ['plugins' => []] + $ckeditor5_aspects_defaults, 'drupal' => [ 'label' => 'Foo bar', @@ -1697,9 +1699,9 @@ public function getDerivativeDefinitions($base_plugin_definition) { 'deriver' => 'Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\SimpleDeriver', ] + $drupal_aspects_defaults, ], - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_baz' => [ + 'ckeditor5_derived_plugin_foo:baz' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_baz', + 'id' => 'ckeditor5_derived_plugin_foo:baz', 'ckeditor5' => ['plugins' => []] + $ckeditor5_aspects_defaults, 'drupal' => [ 'label' => 'Foo baz', @@ -1743,9 +1745,9 @@ class Foo extends CKEditor5PluginDefault { ], ], [ - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_bar' => [ + 'ckeditor5_derived_plugin_foo:bar' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_bar', + 'id' => 'ckeditor5_derived_plugin_foo:bar', 'ckeditor5' => ['plugins' => []] + $ckeditor5_aspects_defaults, 'drupal' => [ 'class' => 'Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\Foo', @@ -1754,9 +1756,9 @@ class Foo extends CKEditor5PluginDefault { 'deriver' => 'Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\SimpleDeriver', ] + $drupal_aspects_defaults, ], - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_baz' => [ + 'ckeditor5_derived_plugin_foo:baz' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_baz', + 'id' => 'ckeditor5_derived_plugin_foo:baz', 'ckeditor5' => ['plugins' => []] + $ckeditor5_aspects_defaults, 'drupal' => [ 'class' => 'Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\Foo', @@ -1790,7 +1792,8 @@ public function getDerivativeDefinitions($base_plugin_definition) { assert($base_plugin_definition instanceof CKEditor5PluginDefinition); foreach (['A', 'B'] as $derivative) { $definition = $base_plugin_definition->toArray(); - $definition['id'] .= "_$derivative"; + $definition['base_id'] = $base_plugin_definition->id(); + $definition['id'] = $derivative; $definition['drupal']['label'] = sprintf("Foo %s", $derivative); $definition['drupal']['elements'] = FALSE; $definition['ckeditor5']['plugins'] = []; @@ -1805,9 +1808,9 @@ public function getDerivativeDefinitions($base_plugin_definition) { ], ], [ - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_A' => [ + 'ckeditor5_derived_plugin_foo:A' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_A', + 'id' => 'ckeditor5_derived_plugin_foo:A', 'ckeditor5' => ['plugins' => []], 'drupal' => [ 'label' => 'Foo A', @@ -1815,9 +1818,9 @@ public function getDerivativeDefinitions($base_plugin_definition) { 'deriver' => 'Drupal\ckeditor5_derived_plugin\Plugin\CKEditor5Plugin\MaximalDeriver', ] + $drupal_aspects_defaults, ], - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_B' => [ + 'ckeditor5_derived_plugin_foo:B' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_B', + 'id' => 'ckeditor5_derived_plugin_foo:B', 'ckeditor5' => ['plugins' => []], 'drupal' => [ 'label' => 'Foo B', @@ -1878,7 +1881,8 @@ public function getDerivativeDefinitions($base_plugin_definition) { $authentication_providers = array_keys($this->authenticationCollector->getSortedProviders()); foreach ($authentication_providers as $id) { $definition = $base_plugin_definition->toArray(); - $definition['id'] .= "_$id"; + $definition['base_id'] = $base_plugin_definition->id(); + $definition['id'] = $id; $definition['drupal']['label'] = sprintf("Foo %s", $id); $this->derivatives[$definition['id']] = new CKEditor5PluginDefinition($definition); } @@ -1891,9 +1895,9 @@ public function getDerivativeDefinitions($base_plugin_definition) { ], ], [ - 'ckeditor5_derived_plugin_foo:ckeditor5_derived_plugin_foo_cookie' => [ + 'ckeditor5_derived_plugin_foo:cookie' => [ 'provider' => 'ckeditor5_derived_plugin', - 'id' => 'ckeditor5_derived_plugin_foo_cookie', + 'id' => 'ckeditor5_derived_plugin_foo:cookie', 'ckeditor5' => ['plugins' => []] + $ckeditor5_aspects_defaults, 'drupal' => [ 'label' => 'Foo cookie',