<?php

use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;

defined('TYPO3') || die('Access denied.');

\FluidTYPO3\Flux\Core::registerConfigurationProvider(\Medienreaktor\Products\Provider\ProductConfigurationProvider::class);
\FluidTYPO3\Flux\Core::registerConfigurationProvider(\Medienreaktor\Products\Provider\ProductGroupConfigurationProvider::class);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Products',
    'Catalog',
    [
        \Medienreaktor\Products\Controller\ProductController::class => 'switchable',
    ],
    // non-cacheable actions
    [
        \Medienreaktor\Products\Controller\ProductController::class => 'switchable',
    ]
);


\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Products',
    'Cart',
    [
        \Medienreaktor\Products\Controller\CartController::class => 'switchable',
    ],
    // non-cacheable actions
    [
        \Medienreaktor\Products\Controller\CartController::class => 'switchable'
    ]
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Products',
    'Faq',
    [
        \Medienreaktor\Products\Controller\FaqController::class => 'switchable',
    ],
    // non-cacheable actions
    [
        \Medienreaktor\Products\Controller\FaqController::class => 'switchable'
    ]
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Products',
    'Download',
    [
        \Medienreaktor\Products\Controller\DownloadController::class => 'switchable',
    ],
    // non-cacheable actions
    [
    ]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'Products',
    'Location',
    [
        \Medienreaktor\Products\Controller\LocationController::class => 'switchable',
    ],
    // non-cacheable actions
    [
    ]
);

$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
    \TYPO3\CMS\Core\Imaging\IconRegistry::class
);
$iconRegistry->registerIcon(
    'user-plugin-catalog',
    \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
    ['source' => 'EXT:products/Resources/Public/Icons/user_plugin_catalog.svg']
);

// wizards
ExtensionManagementUtility::addPageTSConfig(
    'mod {
        wizards.newContentElement.wizardItems.plugins {
            elements {
                catalog {
                    iconIdentifier = user-plugin-catalog
                    title = Produktkatalog
                    description = Produkte und Varianten aus der Produktdatenbank anzeigen.
                    tt_content_defValues {
                        CType = list
                        list_type = products_catalog
                    }
                }
            }
            show = *
        }
   }'
);

ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:products/Configuration/TSconfig/Page.tsconfig">');


call_user_func(static function () {
    // Add form configuration to TYPO3 backend (module) and frontend (plugin):

    ExtensionManagementUtility::addTypoScriptSetup(
        trim('
             module.tx_form.settings.yamlConfigurations {
                200 = EXT:products/Configuration/Yaml/FormSetup.yaml
            }

            plugin.tx_form.settings.yamlConfigurations {
               200 = EXT:products/Configuration/Yaml/FormSetup.yaml
            }
        ')
    );
});
