custom/static-plugins/EtagenProjectMainTheme/src/EtagenProjectMainTheme.php line 14

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace EtagenProjectMainTheme;
  3. use Etagen\ProjectConfig\Installer\CustomFieldInstaller;
  4. use Ramsey\Uuid\Uuid;
  5. use Shopware\Core\Framework\Plugin;
  6. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  7. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  8. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  9. use Shopware\Core\System\CustomField\CustomFieldTypes;
  10. use Shopware\Storefront\Framework\ThemeInterface;
  11. class EtagenProjectMainTheme extends Plugin implements ThemeInterface
  12. {
  13.     public static $customFieldSets = [
  14.         [
  15.             'id' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID,
  16.             'name' => 'hbh_product_extension',
  17.             'global' => true,
  18.             'config' => [
  19.                 'label' => [
  20.                     'en-GB' => "HbH Product Extensions",
  21.                     'de-DE' => "HbH Produkt Erweiterungen",
  22.                 ]
  23.             ],
  24.             'relation' => [
  25.                 'id' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_RELATION_ID,
  26.                 'entityName' => 'product',
  27.             ]
  28.         ],
  29.         [
  30.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD,
  31.             'name' => 'etagen_pdp_custom_tab_download',
  32.             'global' => true,
  33.             'config' => [
  34.                 'label' => [
  35.                     'en-GB' => "Custom Product Tab Download",
  36.                     'de-DE' => "Download Tab"
  37.                 ]
  38.             ],
  39.             'relation' => [
  40.                 'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD_RELATION,
  41.                 'entityName' => 'product',
  42.             ]
  43.         ],
  44.         [
  45.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA,
  46.             'name' => 'etagen_pdp_custom_tab_properties_data',
  47.             'global' => true,
  48.             'config' => [
  49.                 'label' => [
  50.                     'en-GB' => "Properties Data Tab",
  51.                     'de-DE' => "Eigenschaften Daten Tab"
  52.                 ]
  53.             ],
  54.             'relation' => [
  55.                 'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA_RELATION,
  56.                 'entityName' => 'product',
  57.             ]
  58.         ],
  59.         [
  60.             'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO,
  61.             'name' => 'etagen_manufacturer_info',
  62.             'global' => true,
  63.             'config' => [
  64.                 'label' => [
  65.                     'en-GB' => "Info data",
  66.                     'de-DE' => "Info Daten"
  67.                 ]
  68.             ],
  69.             'relation' => [
  70.                 'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_RELATION,
  71.                 'entityName' => 'product_manufacturer',
  72.             ]
  73.         ],
  74.         [
  75.             'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_ID,
  76.             'name' => 'etagen_customer_info',
  77.             'global' => true,
  78.             'config' => [
  79.                 'label' => [
  80.                     'en-GB' => "Info data",
  81.                     'de-DE' => "Info Daten"
  82.                 ]
  83.             ],
  84.             'relation' => [
  85.                 'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_RELATION_ID,
  86.                 'entityName' => 'customer',
  87.             ]
  88.         ]
  89.     ];
  90.     public static array $customFields = [
  91.         [
  92.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_SHORT_DESCRIPTION_ID,
  93.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_SHORT_DESCRIPTION_NAME,
  94.             'type' => CustomFieldTypes::HTML,
  95.             'config' => [
  96.                 'label' => [
  97.                     'en-GB' => 'Product Short Description',
  98.                     'de-DE' => 'Produkt Kurzbeschreibung',
  99.                 ],
  100.                 'componentName' => 'sw-text-editor',
  101.                 'customFieldType' => 'html',
  102.                 'customFieldPosition' => 10,
  103.             ],
  104.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  105.         ],
  106.         [
  107.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_SORTING_PRIORITY_ID,
  108.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_SORTING_PRIORITY_NAME,
  109.             'type' => CustomFieldTypes::INT,
  110.             'config' => [
  111.                 'label' => [
  112.                     'en-GB' => 'Product Sorting Priority',
  113.                     'de-DE' => 'Produkt Sortierungspriorität',
  114.                 ],
  115.                 'customFieldPosition' => 20,
  116.             ],
  117.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  118.         ],
  119.         [
  120.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_H_SATZ_ID,
  121.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_H_SATZ_NAME,
  122.             'type' => CustomFieldTypes::TEXT,
  123.             'config' => [
  124.                 'label' => [
  125.                     'en-GB' => 'H-Sentence',
  126.                     'de-DE' => 'H-Sätze',
  127.                 ],
  128.                 'customFieldPosition' => 30,
  129.             ],
  130.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  131.         ],
  132.         [
  133.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_P_SATZ_ID,
  134.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_P_SATZ_NAME,
  135.             'type' => CustomFieldTypes::TEXT,
  136.             'config' => [
  137.                 'label' => [
  138.                     'en-GB' => 'P-Sentence',
  139.                     'de-DE' => 'P-Sätze',
  140.                 ],
  141.                 'customFieldPosition' => 40,
  142.             ],
  143.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  144.         ],
  145.         [
  146.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_UN_NR_ID,
  147.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_UN_NR_NAME,
  148.             'type' => CustomFieldTypes::TEXT,
  149.             'config' => [
  150.                 'label' => [
  151.                     'en-GB' => 'UN-Nr.',
  152.                     'de-DE' => 'UN-Nr.',
  153.                 ],
  154.                 'customFieldPosition' => 50,
  155.             ],
  156.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  157.         ],
  158.         [
  159.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_NAG_ID,
  160.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_NAG_NAME,
  161.             'type' => CustomFieldTypes::TEXT,
  162.             'config' => [
  163.                 'label' => [
  164.                     'en-GB' => 'NAG/Gefahrenstoff',
  165.                     'de-DE' => 'NAG/Gefahrenstoff',
  166.                 ],
  167.                 'customFieldPosition' => 60,
  168.             ],
  169.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  170.         ],
  171.         [
  172.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_LIMITED_QUANTITY_ID,
  173.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_LIMITED_QUANTITY_NAME,
  174.             'type' => CustomFieldTypes::BOOL,
  175.             'config' => [
  176.                 'label' => [
  177.                     'en-GB' => 'Gefahrgut - Begrenzte Menge',
  178.                     'de-DE' => 'Gefahrgut - Begrenzte Menge',
  179.                 ],
  180.                 'customFieldPosition' => 70,
  181.             ],
  182.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  183.         ],
  184.         [
  185.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_DESINFECTION_ID,
  186.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_DESINFECTION_NAME,
  187.             'type' => CustomFieldTypes::BOOL,
  188.             'config' => [
  189.                 'label' => [
  190.                     'en-GB' => 'Gefahrgut - Ist Desinfektionsmittel',
  191.                     'de-DE' => 'Gefahrgut - Ist Desinfektionsmittel',
  192.                 ],
  193.                 'customFieldPosition' => 80,
  194.             ],
  195.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  196.         ],
  197.         [
  198.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_BIOZID_ID,
  199.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_IS_BIOZID_NAME,
  200.             'type' => CustomFieldTypes::BOOL,
  201.             'config' => [
  202.                 'label' => [
  203.                     'en-GB' => 'Gefahrgut - Ist Biozid',
  204.                     'de-DE' => 'Gefahrgut - Ist Biozid',
  205.                 ],
  206.                 'customFieldPosition' => 90,
  207.             ],
  208.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  209.         ],
  210.         [
  211.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_BB_1_4_ID,
  212.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_BB_1_4_NAME,
  213.             'type' => CustomFieldTypes::TEXT,
  214.             'config' => [
  215.                 'label' => [
  216.                     'en-GB' => 'BB 1 bis BB 4',
  217.                     'de-DE' => 'BB 1 bis BB 4',
  218.                 ],
  219.                 'customFieldPosition' => 80,
  220.             ],
  221.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  222.         ],
  223.         [
  224.             'id' => Defaults::CUSTOM_FIELD_PRODUCT_GG_PICTOGRAM_ID,
  225.             'name' => Defaults::CUSTOM_FIELD_PRODUCT_GG_PICTOGRAM_NAME,
  226.             'type' => CustomFieldTypes::TEXT,
  227.             'config' => [
  228.                 'label' => [
  229.                     'en-GB' => 'Piktogramme',
  230.                     'de-DE' => 'Piktogramme',
  231.                 ],
  232.                 'customFieldPosition' => 90,
  233.             ],
  234.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PRODUCT_EXTENSIONS_ID
  235.         ],
  236.         [
  237.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID,
  238.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_ACTIVATE,
  239.             'type' => CustomFieldTypes::BOOL,
  240.             'config' => [
  241.                 'label' => [
  242.                     'en_GB' => 'Activate Downloads Tab',
  243.                     'de_DE' => 'Download Tab anzeigen',
  244.                 ],
  245.                 'customFieldPosition' => 10
  246.             ],
  247.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
  248.         ],
  249.         [
  250.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_ID,
  251.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_ACTIVATE,
  252.             'type' => CustomFieldTypes::BOOL,
  253.             'config' => [
  254.                 'label' => [
  255.                     'en_GB' => 'Activate Properties Data Tab',
  256.                     'de_DE' => 'Eingenschaften Daten Tab anzeigen'
  257.                 ],
  258.                 'customFieldPosition' => 10
  259.             ],
  260.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  261.         ],
  262.         [
  263.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT_ID,
  264.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT,
  265.             'type' => CustomFieldTypes::HTML,
  266.             'config' => [
  267.                 'label' => [
  268.                     'en_GB' => 'Properties Data Text',
  269.                     'de_DE' => 'Eingenschaften Daten Text'
  270.                 ],
  271.                 'componentName' => 'sw-text-editor',
  272.                 'customFieldType' => 'html',
  273.                 'customFieldPosition' => 20
  274.             ],
  275.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  276.         ],
  277.         [
  278.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM_ID,
  279.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM,
  280.             'type' => CustomFieldTypes::MEDIA,
  281.             'config' => [
  282.                 'label' => [
  283.                     'en_GB' => 'Properties Data Image',
  284.                     'de_DE' => 'Eingenschaften Daten Bild'
  285.                 ],
  286.                 'componentName' => 'sw-media-field',
  287.                 'customFieldType' => 'media',
  288.                 'customFieldPosition' => 30
  289.             ],
  290.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  291.         ],
  292.         [
  293.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID_ALPHA,
  294.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_ALPHA,
  295.             'type' => CustomFieldTypes::TEXT,
  296.             'config' => [
  297.                 'label' => [
  298.                     'en_GB' => 'Download Medium Data AlphaPlan',
  299.                     'de_DE' => 'Download Medium Datei AlphaPlan',
  300.                 ],
  301.             ],
  302.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
  303.         ],
  304.         [
  305.             'id' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_SHOW_IMAGE_ID,
  306.             'name' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO_SHOW_IMAGE_FIELDNAME,
  307.             'type' => CustomFieldTypes::BOOL,
  308.             'config' => [
  309.                 'label' => [
  310.                     'en_GB' => "Don't show manufacturer image",
  311.                     'de_DE' => 'Entferne das Bild auf der Produktseite',
  312.                 ],
  313.             ],
  314.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_MANUFACTURER_INFO
  315.         ],
  316.         [
  317.             'id' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_SHIPPING_METHOD_ID,
  318.             'name' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_SHIPPING_METHOD_FIELDNAME,
  319.             'type' => CustomFieldTypes::TEXT,
  320.             'config' => [
  321.                 'label' => [
  322.                     'en_GB' => "Versandart Kennung",
  323.                     'de_DE' => 'Versandart Kennung',
  324.                 ],
  325.             ],
  326.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_CUSTOMER_EXTENSIONS_ID
  327.         ]
  328.     ];
  329.     public static $deleteCustomFieldSets = [
  330.         [
  331.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA,
  332.             'name' => 'etagen_pdp_custom_tab_properties_data',
  333.             'global' => true,
  334.             'config' => [
  335.                 'label' => [
  336.                     'en-GB' => "Properties Data Tab",
  337.                     'de-DE' => "Eigenschaften Daten Tab"
  338.                 ]
  339.             ],
  340.             'relation' => [
  341.                 'id' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA_RELATION,
  342.                 'entityName' => 'product',
  343.             ]
  344.         ],
  345.     ];
  346.     public static $deleteCustomFields = [
  347.         [
  348.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_ID,
  349.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_ACTIVATE,
  350.             'type' => CustomFieldTypes::BOOL,
  351.             'config' => [
  352.                 'label' => [
  353.                     'en_GB' => 'Activate Properties Data Tab',
  354.                     'de_DE' => 'Eingenschaften Daten Tab anzeigen'
  355.                 ],
  356.                 'customFieldPosition' => 10
  357.             ],
  358.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  359.         ],
  360.         [
  361.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT_ID,
  362.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_TEXT,
  363.             'type' => CustomFieldTypes::HTML,
  364.             'config' => [
  365.                 'label' => [
  366.                     'en_GB' => 'Properties Data Text',
  367.                     'de_DE' => 'Eingenschaften Daten Text'
  368.                 ],
  369.                 'componentName' => 'sw-text-editor',
  370.                 'customFieldType' => 'html',
  371.                 'customFieldPosition' => 20
  372.             ],
  373.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  374.         ],
  375.         [
  376.             'id' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM_ID,
  377.             'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_PROPERTIES_DATA_CONTENT_FIELDNAME_MEDIUM,
  378.             'type' => CustomFieldTypes::MEDIA,
  379.             'config' => [
  380.                 'label' => [
  381.                     'en_GB' => 'Properties Data Image',
  382.                     'de_DE' => 'Eingenschaften Daten Bild'
  383.                 ],
  384.                 'componentName' => 'sw-media-field',
  385.                 'customFieldType' => 'media',
  386.                 'customFieldPosition' => 30
  387.             ],
  388.             'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_PROPERTIES_DATA
  389.         ]
  390.     ];
  391.     public const UUID_NAMESPACE '7b1d757fb4c44e21af1677c3d6688015';
  392.     private function createDownloadArray()
  393.     {
  394.         $position 100;
  395.         for ($i 1$i <= 5$i++) {
  396.             $tempDownload =
  397.                 [
  398.                     'id' => Uuid::uuid5(self::UUID_NAMESPACEDefaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_ID $i)->getHex()->toString(),
  399.                     'name' => Defaults::CUSTOM_FIELD_SET_PDP_TABS_DOWNLOADS_CONTENT_FIELDNAME_MEDIUM$i,
  400.                     'type' => CustomFieldTypes::MEDIA,
  401.                     'config' => [
  402.                         'label' => [
  403.                             'en_GB' => 'Download Medium Data ' $i,
  404.                             'de_DE' => 'Download Medium Datei ' $i,
  405.                         ],
  406.                         'componentName' => 'sw-media-field',
  407.                         'customFieldType' => 'media',
  408.                         'customFieldPosition' => $position,
  409.                     ],
  410.                     'customFieldSetId' => Defaults::CUSTOM_FIELD_SET_PDP_TAB_DOWNLOAD
  411.                 ];
  412.             $position++;
  413.             array_push(self::$customFields$tempDownload);
  414.         }
  415.     }
  416.     public function getThemeConfigPath(): string
  417.     {
  418.         return 'theme.json';
  419.     }
  420.     public function install(InstallContext $installContext): void
  421.     {
  422.         $this->createDownloadArray();
  423.         $customFieldInstaller = new CustomFieldInstaller($this->container);
  424.         $customFieldInstaller->install(self::$customFieldSetsself::$customFields$installContext);
  425.         parent::install($installContext);
  426.     }
  427.     public function update(UpdateContext $updateContext): void
  428.     {
  429.         $this->createDownloadArray();
  430.         $customFieldInstaller = new CustomFieldInstaller($this->container);
  431.         $customFieldInstaller->update(self::$customFieldSetsself::$customFields$updateContextself::$deleteCustomFieldSetsself::$deleteCustomFields);
  432.         parent::update($updateContext);
  433.     }
  434.     public function uninstall(UninstallContext $uninstallContext): void
  435.     {
  436.         $this->createDownloadArray();
  437.         $customFieldInstaller = new CustomFieldInstaller($this->container);
  438.         if ($uninstallContext->keepUserData()) {
  439.             $customFieldInstaller->uninstall(self::$customFieldSetsself::$customFields$uninstallContext);
  440.             parent::uninstall($uninstallContext);
  441.             return;
  442.         }
  443.         $customFieldInstaller->remove(self::$customFieldSetsself::$customFields$uninstallContext);
  444.         parent::uninstall($uninstallContext);
  445.     }
  446. }