From c7ede3b403576ce283a360bb7212d941df4ea967 Mon Sep 17 00:00:00 2001 From: Elias Hiller Date: Mon, 6 Nov 2023 13:29:18 +0100 Subject: [PATCH] Added support to create variants on object creation --- src/Resolver/Location/FindParentStrategy.php | 14 ++++++++++++++ .../components/resolver/location/findParent.js | 6 ++++++ src/Resources/translations/admin.ca.yml | 1 + src/Resources/translations/admin.cs.yml | 1 + src/Resources/translations/admin.de.yml | 1 + src/Resources/translations/admin.en.yml | 1 + src/Resources/translations/admin.es.yml | 1 + src/Resources/translations/admin.fr.yml | 1 + src/Resources/translations/admin.hu.yml | 1 + src/Resources/translations/admin.it.yml | 1 + src/Resources/translations/admin.nl.yml | 1 + src/Resources/translations/admin.pl.yml | 1 + src/Resources/translations/admin.sk.yml | 1 + src/Resources/translations/admin.sv.yml | 1 + src/Resources/translations/admin.th.yml | 1 + src/Resources/translations/admin.zh_Hans.yml | 1 + 16 files changed, 34 insertions(+) diff --git a/src/Resolver/Location/FindParentStrategy.php b/src/Resolver/Location/FindParentStrategy.php index 4f653b61..c07e7df9 100644 --- a/src/Resolver/Location/FindParentStrategy.php +++ b/src/Resolver/Location/FindParentStrategy.php @@ -57,6 +57,8 @@ class FindParentStrategy implements LocationStrategyInterface */ protected $attributeLanguage; + protected bool $saveAsVariant; + public function __construct(protected DataObjectLoader $dataObjectLoader) { } @@ -75,6 +77,8 @@ public function setSettings(array $settings): void throw new InvalidConfigurationException('Empty find strategy.'); } + $this->saveAsVariant = !empty($settings['asVariant']) && $settings['asVariant'] === 'on'; + $this->findStrategy = $settings['findStrategy']; if ($this->findStrategy == self::FIND_BY_ATTRIBUTE) { @@ -132,6 +136,16 @@ public function updateParent(ElementInterface $element, array $inputData): Eleme return $element->setParent($newParent); } + // Save the element as variant: The parent and element need to be of the same dataobject type. + if ( + $this->saveAsVariant && + $newParent instanceof DataObject && + $newParent instanceof $element && + $newParent->getClass()->getAllowVariants() + ) { + $element->setType(DataObject::OBJECT_TYPE_VARIANT); + } + return $element; } diff --git a/src/Resources/public/js/pimcore/configuration/components/resolver/location/findParent.js b/src/Resources/public/js/pimcore/configuration/components/resolver/location/findParent.js index 17dc33b1..36542c6f 100644 --- a/src/Resources/public/js/pimcore/configuration/components/resolver/location/findParent.js +++ b/src/Resources/public/js/pimcore/configuration/components/resolver/location/findParent.js @@ -154,6 +154,12 @@ pimcore.plugin.pimcoreDataImporterBundle.configuration.components.resolver.locat fieldLabel: t('plugin_pimcore_datahub_data_importer_configpanel_fallback_path'), name: this.dataNamePrefix + 'fallbackPath', value: this.data.fallbackPath + }, + { + xtype: 'checkbox', + fieldLabel: t('plugin_pimcore_datahub_data_importer_configpanel_as_variant'), + name: this.dataNamePrefix + 'asVariant', + value: this.data.asVariant } ] }); diff --git a/src/Resources/translations/admin.ca.yml b/src/Resources/translations/admin.ca.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.ca.yml +++ b/src/Resources/translations/admin.ca.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.cs.yml b/src/Resources/translations/admin.cs.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.cs.yml +++ b/src/Resources/translations/admin.cs.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.de.yml b/src/Resources/translations/admin.de.yml index 8e9a1f2d..9e2f067e 100644 --- a/src/Resources/translations/admin.de.yml +++ b/src/Resources/translations/admin.de.yml @@ -76,6 +76,7 @@ plugin_pimcore_datahub_data_importer_configpanel_element_creation: Element-Erste plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Pfad-Strategie plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback-Pfad plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Strategie finden +plugin_pimcore_datahub_data_importer_configpanel_as_variant: Als Variante plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Elternteil finden plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Ordner diff --git a/src/Resources/translations/admin.en.yml b/src/Resources/translations/admin.en.yml index 84a5161e..700bf11f 100644 --- a/src/Resources/translations/admin.en.yml +++ b/src/Resources/translations/admin.en.yml @@ -64,6 +64,7 @@ plugin_pimcore_datahub_data_importer_configpanel_element_creation: Element Creat plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Location Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find or Create Folder plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_noChange: No Change diff --git a/src/Resources/translations/admin.es.yml b/src/Resources/translations/admin.es.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.es.yml +++ b/src/Resources/translations/admin.es.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.fr.yml b/src/Resources/translations/admin.fr.yml index 04e465d4..ee914db0 100644 --- a/src/Resources/translations/admin.fr.yml +++ b/src/Resources/translations/admin.fr.yml @@ -80,6 +80,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: "Stra de localisation" plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: "Trouver une strat\xE9gie" +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Trouver le parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: "Trouver diff --git a/src/Resources/translations/admin.hu.yml b/src/Resources/translations/admin.hu.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.hu.yml +++ b/src/Resources/translations/admin.hu.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.it.yml b/src/Resources/translations/admin.it.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.it.yml +++ b/src/Resources/translations/admin.it.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.nl.yml b/src/Resources/translations/admin.nl.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.nl.yml +++ b/src/Resources/translations/admin.nl.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.pl.yml b/src/Resources/translations/admin.pl.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.pl.yml +++ b/src/Resources/translations/admin.pl.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.sk.yml b/src/Resources/translations/admin.sk.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.sk.yml +++ b/src/Resources/translations/admin.sk.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.sv.yml b/src/Resources/translations/admin.sv.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.sv.yml +++ b/src/Resources/translations/admin.sv.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.th.yml b/src/Resources/translations/admin.th.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.th.yml +++ b/src/Resources/translations/admin.th.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find diff --git a/src/Resources/translations/admin.zh_Hans.yml b/src/Resources/translations/admin.zh_Hans.yml index 8b89574b..8fa2df47 100644 --- a/src/Resources/translations/admin.zh_Hans.yml +++ b/src/Resources/translations/admin.zh_Hans.yml @@ -77,6 +77,7 @@ plugin_pimcore_datahub_data_importer_configpanel_create_location_strategy: Locat Strategy plugin_pimcore_datahub_data_importer_configpanel_fallback_path: Fallback Path plugin_pimcore_datahub_data_importer_configpanel_find_strategy: Find Strategy +plugin_pimcore_datahub_data_importer_configpanel_as_variant: As Variant plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findParent: Find Parent plugin_pimcore_datahub_data_importer_configpanel_createLocationStrategy.type_findOrCreateFolder: Find