X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FPlugin%2FAction%2FDerivative%2FDeleteActionDeriver.php;fp=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FPlugin%2FAction%2FDerivative%2FDeleteActionDeriver.php;h=085bd0ee0fdda872b8e74cbd19d42e02fc27fc29;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/entity/src/Plugin/Action/Derivative/DeleteActionDeriver.php b/web/modules/contrib/entity/src/Plugin/Action/Derivative/DeleteActionDeriver.php new file mode 100644 index 000000000..085bd0ee0 --- /dev/null +++ b/web/modules/contrib/entity/src/Plugin/Action/Derivative/DeleteActionDeriver.php @@ -0,0 +1,78 @@ +entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, $base_plugin_id) { + return new static($container->get('entity_type.manager')); + } + + /** + * {@inheritdoc} + */ + public function getDerivativeDefinitions($base_plugin_definition) { + if (empty($this->derivatives)) { + $definitions = []; + foreach ($this->getParticipatingEntityTypes() as $entity_type_id => $entity_type) { + $definition = $base_plugin_definition; + $definition['label'] = t('Delete @entity_type', ['@entity_type' => $entity_type->getLowercaseLabel()]); + $definition['type'] = $entity_type_id; + $definition['confirm_form_route_name'] = 'entity.' . $entity_type_id . '.delete_multiple_form'; + $definitions[$entity_type_id] = $definition; + } + $this->derivatives = $definitions; + } + + return parent::getDerivativeDefinitions($base_plugin_definition); + } + + /** + * Gets a list of participating entity types. + * + * The list consists of all content entity types with a delete-multiple-form + * link template. + * + * @return \Drupal\Core\Entity\EntityTypeInterface[] + * The participating entity types, keyed by entity type id. + */ + protected function getParticipatingEntityTypes() { + $entity_types = $this->entityTypeManager->getDefinitions(); + $entity_types = array_filter($entity_types, function (EntityTypeInterface $entity_type) { + return $entity_type->isSubclassOf(ContentEntityInterface::class) && $entity_type->hasLinkTemplate('delete-multiple-form'); + }); + + return $entity_types; + } + +}