<?php

declare(strict_types=1);

/*
 * This file is part of formilicious bundle for Contao.
 *
 * (c) Benjamin Roth
 *
 * @license LGPL-3.0-or-later
 */

namespace vonRotenberg\FormiliciousBundle\EventListener;

use Contao\CoreBundle\DataContainer\PaletteManipulator;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;

#[AsHook('loadDataContainer')]
class LoadDataContainerListener
{
    /**
     * Array containing all fields which shouldn't use Formilicous extensions
     * @var array
     */
    protected $arrNoFl = array('__selector__','fieldsetStart','fieldsetStop','hidden','html','headline');

    public function __invoke(string $table): void
    {
        if ($table != 'tl_form_field')
        {
            return;
        }

        // Hook in the Formilicious fields
        if (is_array($GLOBALS['TL_DCA']['tl_form_field']['palettes']))
        {
            $palettes = array_diff(array_keys($GLOBALS['TL_DCA']['tl_form_field']['palettes']),$this->arrNoFl);

            $PaletteManipulator = PaletteManipulator::create()
                ->addLegend('formilicious_legend','expert_legend',PaletteManipulator::POSITION_BEFORE)
                ->addField('eSM_fl_width','formilicious_legend',PaletteManipulator::POSITION_APPEND)
                ->addField('eSM_fl_clear','formilicious_legend',PaletteManipulator::POSITION_APPEND)
                ->addField('eSM_fl_class','formilicious_legend',PaletteManipulator::POSITION_APPEND)
            ;

            foreach ($palettes as $palette)
            {
                $pm = clone $PaletteManipulator;
                if ($palette == 'submit')
                {
                    $pm
                        ->addField('eSM_fl_lblpadding','formilicious_legend',PaletteManipulator::POSITION_APPEND)
                        ->addField('eSM_fl_alignment','formilicious_legend',PaletteManipulator::POSITION_APPEND)
                    ;
                }
                $pm->applyToPalette($palette,'tl_form_field');
            }
        }
    }

}