<?php declare(strict_types=1);
namespace EtagenProjectMainTheme;
use Etagen\ProjectConfig\Installer\CustomFieldInstaller;
use Ramsey\Uuid\Uuid;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
use Shopware\Core\Framework\Plugin\Context\UpdateContext;
use Shopware\Core\System\CustomField\CustomFieldTypes;
use Shopware\Storefront\Framework\ThemeInterface;
class EtagenProjectMainTheme extends Plugin implements ThemeInterface
{
public static $customFieldSets = [
[
'id' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID,
'name' => 'hbh_product_extension',
'global' => true,
'config' => [
'label' => [
'en-GB' => "HbH Product Extensions",
'de-DE' => "HbH Produkt Erweiterungen",
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_RELATION_ID,
'entityName' => 'product',
]
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD,
'name' => 'etagen_pdp_custom_tab_download',
'global' => true,
'config' => [
'label' => [
'en-GB' => "Custom Product Tab Download",
'de-DE' => "Download Tab"
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD_RELATION,
'entityName' => 'product',
]
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA,
'name' => 'etagen_pdp_custom_tab_properties_data',
'global' => true,
'config' => [
'label' => [
'en-GB' => "Properties Data Tab",
'de-DE' => "Eigenschaften Daten Tab"
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA_RELATION,
'entityName' => 'product',
]
],
[
'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO,
'name' => 'etagen_manufacturer_info',
'global' => true,
'config' => [
'label' => [
'en-GB' => "Info data",
'de-DE' => "Info Daten"
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_RELATION,
'entityName' => 'product_manufacturer',
]
],
[
'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_ID,
'name' => 'etagen_customer_info',
'global' => true,
'config' => [
'label' => [
'en-GB' => "Info data",
'de-DE' => "Info Daten"
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_RELATION_ID,
'entityName' => 'customer',
]
]
];
public static array $customFields = [
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_SHORT_DESCRIPTION_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_SHORT_DESCRIPTION_NAME,
'type' => CustomFieldTypes::HTML,
'config' => [
'label' => [
'en-GB' => 'Product Short Description',
'de-DE' => 'Produkt Kurzbeschreibung',
],
'componentName' => 'sw-text-editor',
'customFieldType' => 'html',
'customFieldPosition' => 10,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_SORTING_PRIORITY_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_SORTING_PRIORITY_NAME,
'type' => CustomFieldTypes::INT,
'config' => [
'label' => [
'en-GB' => 'Product Sorting Priority',
'de-DE' => 'Produkt Sortierungspriorität',
],
'customFieldPosition' => 20,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_H_SATZ_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_H_SATZ_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'H-Sentence',
'de-DE' => 'H-Sätze',
],
'customFieldPosition' => 30,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_P_SATZ_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_P_SATZ_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'P-Sentence',
'de-DE' => 'P-Sätze',
],
'customFieldPosition' => 40,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_UN_NR_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_UN_NR_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'UN-Nr.',
'de-DE' => 'UN-Nr.',
],
'customFieldPosition' => 50,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_NAG_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_NAG_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'NAG/Gefahrenstoff',
'de-DE' => 'NAG/Gefahrenstoff',
],
'customFieldPosition' => 60,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_LIMITED_QUANTITY_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_LIMITED_QUANTITY_NAME,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en-GB' => 'Gefahrgut - Begrenzte Menge',
'de-DE' => 'Gefahrgut - Begrenzte Menge',
],
'customFieldPosition' => 70,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_DESINFECTION_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_DESINFECTION_NAME,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en-GB' => 'Gefahrgut - Ist Desinfektionsmittel',
'de-DE' => 'Gefahrgut - Ist Desinfektionsmittel',
],
'customFieldPosition' => 80,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_BIOZID_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_BIOZID_NAME,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en-GB' => 'Gefahrgut - Ist Biozid',
'de-DE' => 'Gefahrgut - Ist Biozid',
],
'customFieldPosition' => 90,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_BB_1_4_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_BB_1_4_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'BB 1 bis BB 4',
'de-DE' => 'BB 1 bis BB 4',
],
'customFieldPosition' => 80,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_PICTOGRAM_ID,
'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_PICTOGRAM_NAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en-GB' => 'Piktogramme',
'de-DE' => 'Piktogramme',
],
'customFieldPosition' => 90,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_ACTIVATE,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en_GB' => 'Activate Downloads Tab',
'de_DE' => 'Download Tab anzeigen',
],
'customFieldPosition' => 10
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_ACTIVATE,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en_GB' => 'Activate Properties Data Tab',
'de_DE' => 'Eingenschaften Daten Tab anzeigen'
],
'customFieldPosition' => 10
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT,
'type' => CustomFieldTypes::HTML,
'config' => [
'label' => [
'en_GB' => 'Properties Data Text',
'de_DE' => 'Eingenschaften Daten Text'
],
'componentName' => 'sw-text-editor',
'customFieldType' => 'html',
'customFieldPosition' => 20
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM,
'type' => CustomFieldTypes::MEDIA,
'config' => [
'label' => [
'en_GB' => 'Properties Data Image',
'de_DE' => 'Eingenschaften Daten Bild'
],
'componentName' => 'sw-media-field',
'customFieldType' => 'media',
'customFieldPosition' => 30
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID_ALPHA,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_ALPHA,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en_GB' => 'Download Medium Data AlphaPlan',
'de_DE' => 'Download Medium Datei AlphaPlan',
],
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
],
[
'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_SHOW_IMAGE_ID,
'name' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_SHOW_IMAGE_FIELDNAME,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en_GB' => "Don't show manufacturer image",
'de_DE' => 'Entferne das Bild auf der Produktseite',
],
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO
],
[
'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_SHIPPING_METHOD_ID,
'name' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_SHIPPING_METHOD_FIELDNAME,
'type' => CustomFieldTypes::TEXT,
'config' => [
'label' => [
'en_GB' => "Versandart Kennung",
'de_DE' => 'Versandart Kennung',
],
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_ID
]
];
public static $deleteCustomFieldSets = [
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA,
'name' => 'etagen_pdp_custom_tab_properties_data',
'global' => true,
'config' => [
'label' => [
'en-GB' => "Properties Data Tab",
'de-DE' => "Eigenschaften Daten Tab"
]
],
'relation' => [
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA_RELATION,
'entityName' => 'product',
]
],
];
public static $deleteCustomFields = [
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_ACTIVATE,
'type' => CustomFieldTypes::BOOL,
'config' => [
'label' => [
'en_GB' => 'Activate Properties Data Tab',
'de_DE' => 'Eingenschaften Daten Tab anzeigen'
],
'customFieldPosition' => 10
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT,
'type' => CustomFieldTypes::HTML,
'config' => [
'label' => [
'en_GB' => 'Properties Data Text',
'de_DE' => 'Eingenschaften Daten Text'
],
'componentName' => 'sw-text-editor',
'customFieldType' => 'html',
'customFieldPosition' => 20
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
],
[
'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM_ID,
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM,
'type' => CustomFieldTypes::MEDIA,
'config' => [
'label' => [
'en_GB' => 'Properties Data Image',
'de_DE' => 'Eingenschaften Daten Bild'
],
'componentName' => 'sw-media-field',
'customFieldType' => 'media',
'customFieldPosition' => 30
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
]
];
public const UUID_NAMESPACE = '7b1d757fb4c44e21af1677c3d6688015';
private function createDownloadArray()
{
$position = 100;
for ($i = 1; $i <= 5; $i++) {
$tempDownload =
[
'id' => Uuid::uuid5(self::UUID_NAMESPACE, Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID . $i)->getHex()->toString(),
'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_MEDIUM. $i,
'type' => CustomFieldTypes::MEDIA,
'config' => [
'label' => [
'en_GB' => 'Download Medium Data ' . $i,
'de_DE' => 'Download Medium Datei ' . $i,
],
'componentName' => 'sw-media-field',
'customFieldType' => 'media',
'customFieldPosition' => $position,
],
'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
];
$position++;
array_push(self::$customFields, $tempDownload);
}
}
public function getThemeConfigPath(): string
{
return 'theme.json';
}
public function install(InstallContext $installContext): void
{
$this->createDownloadArray();
$customFieldInstaller = new CustomFieldInstaller($this->container);
$customFieldInstaller->install(self::$customFieldSets, self::$customFields, $installContext);
parent::install($installContext);
}
public function update(UpdateContext $updateContext): void
{
$this->createDownloadArray();
$customFieldInstaller = new CustomFieldInstaller($this->container);
$customFieldInstaller->update(self::$customFieldSets, self::$customFields, $updateContext, self::$deleteCustomFieldSets, self::$deleteCustomFields);
parent::update($updateContext);
}
public function uninstall(UninstallContext $uninstallContext): void
{
$this->createDownloadArray();
$customFieldInstaller = new CustomFieldInstaller($this->container);
if ($uninstallContext->keepUserData()) {
$customFieldInstaller->uninstall(self::$customFieldSets, self::$customFields, $uninstallContext);
parent::uninstall($uninstallContext);
return;
}
$customFieldInstaller->remove(self::$customFieldSets, self::$customFields, $uninstallContext);
parent::uninstall($uninstallContext);
}
}