diff --git a/modules/rh_eck/rh_eck.info.yml b/modules/rh_eck/rh_eck.info.yml new file mode 100644 index 0000000..40df3aa --- /dev/null +++ b/modules/rh_eck/rh_eck.info.yml @@ -0,0 +1,8 @@ +name: Rabbit Hole ECK +type: module +description: Adds Rabbit Hole functionality for eck entity type. +dependencies: + - rabbit_hole + - eck + +core_version_requirement: ^8 || ^9 || ^10 || ^11 diff --git a/modules/rh_eck/rh_eck.module b/modules/rh_eck/rh_eck.module new file mode 100644 index 0000000..3352117 --- /dev/null +++ b/modules/rh_eck/rh_eck.module @@ -0,0 +1,21 @@ +getStorage('eck_entity_type')->loadMultiple(); + $types = array_keys($eck_entity_types); + if (in_array($entity_type->id(), $types)) { + return \Drupal::service('rabbit_hole.entity_extender') + ->getRabbitHoleFields($entity_type->id()); + } +} diff --git a/modules/rh_eck/src/Plugin/Derivative/Eck.php b/modules/rh_eck/src/Plugin/Derivative/Eck.php new file mode 100644 index 0000000..702497c --- /dev/null +++ b/modules/rh_eck/src/Plugin/Derivative/Eck.php @@ -0,0 +1,72 @@ +get('entity_type.manager'); + return new static( + $entity_manager, + $entity_manager->getStorage($entity_type) + ); + } + + /** + * {@inheritdoc} + */ + public function __construct(EntityTypeManagerInterface $manager, EntityStorageInterface $storage) { + $this->entityManager = $manager; + $this->entityStorage = $storage; + } + + /** + * {@inheritdoc} + */ + public function getDerivativeDefinitions($base_plugin_definition) { + $eck_contents = $this->entityStorage->loadMultiple(); + // Reset the discovered definitions. + $this->derivatives = []; + + foreach ($eck_contents as $eck_content) { + $derivative_key = $base_plugin_definition['id'] . '_' . $eck_content->id(); + $this->derivatives[$derivative_key] = $base_plugin_definition; + $this->derivatives[$derivative_key]['id'] = $derivative_key; + $this->derivatives[$derivative_key]['label'] = $eck_content->label(); + $this->derivatives[$derivative_key]['entityType'] = $eck_content->id(); + } + return parent::getDerivativeDefinitions($base_plugin_definition); + } + +} diff --git a/modules/rh_eck/src/Plugin/RabbitHoleEntityPlugin/Eck.php b/modules/rh_eck/src/Plugin/RabbitHoleEntityPlugin/Eck.php new file mode 100644 index 0000000..8e86e3d --- /dev/null +++ b/modules/rh_eck/src/Plugin/RabbitHoleEntityPlugin/Eck.php @@ -0,0 +1,29 @@ +