Search code examples
typo3typo3-8.xtypo3-9.xtypo3-tca

TCA Icon overlay in typo3 backend


I’m working on an extension where I synchronise some data to another database and I wanted to show this in the backend using a TCA icon overlay. Sadly I could not find out how to do this. I thought about using ‘ctrl’=>‘typeicon_classes’ (using the state field of my table to choose an icon), this works for the default (non synchronised element) but I cannot figure out how to set an overlay. Any idea on how to do this?

My TCA configuration looks like this:

'ctrl' => [
    ...
    'typeicon_column' => 'state',
    'typeicon_classes' => [
        'new' => 'mimetypes-x-content-login',
        'synced' => 'mimetypes-x-content-login-overlay-approved',
    ]
],

The "synced" part does not work as expected. What I would expect is to either add the overlay at the end of the icon or by adding it with a whitespace but both did not work.

Any help is appreciated.

PS: I really just need this in the TYPO3 backend, the obvious solution for frontend is to use fluid or PHP but I don't think this suits the TYPO3 Backend list.


Solution

  • You need to register your icon files. Given your icon files are named content_login.svg and content_login_overlay_approved.svg located in directory /Resources/Public/Icons/ you can register these in ext_localconf.php as following:

    if (TYPO3_MODE === 'BE') {
        $icons = [
            'mimetypes-x-content-login' => 'content_login.svg',
            'mimetypes-x-content-login-overlay-approved' => 'content_login_overlay_approved.svg',
        ];
        $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
        foreach ($icons as $identifier => $path) {
            $iconRegistry->registerIcon(
                $identifier,
                \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
                ['source' => 'EXT:YOUREXTENSIONNANME/Resources/Public/Icons/' . $path]
            );
        }
    }
    

    Adapt yourextensionname