Skip to content

Commit

Permalink
Added support to create variants on object creation
Browse files Browse the repository at this point in the history
  • Loading branch information
turbo-ele committed Nov 6, 2023
1 parent 764dda0 commit c7ede3b
Show file tree
Hide file tree
Showing 16 changed files with 34 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/Resolver/Location/FindParentStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class FindParentStrategy implements LocationStrategyInterface
*/
protected $attributeLanguage;

protected bool $saveAsVariant;

public function __construct(protected DataObjectLoader $dataObjectLoader)
{
}
Expand All @@ -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) {
Expand Down Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
]
});
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.ca.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.cs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.hu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.nl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.pl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.sk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.sv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.th.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/Resources/translations/admin.zh_Hans.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c7ede3b

Please sign in to comment.