From 241497a2ab5e34501ead41106e021de0145b8332 Mon Sep 17 00:00:00 2001 From: Benni Mack <benni@typo3.org> Date: Wed, 20 Jan 2016 09:15:59 +0100 Subject: [PATCH] [TASK] Unify references for backend modules icons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Somehow on earth, regular (non-extbase) modules register their module icons via [labels][tabs_images][tab] when using addModule(). The icon is not related to the labels at all, and can be simplified. All icons registered are available via the module configuration option "icon" and old formats are migrated automatically (with a deprecation warning), and always stored in an absolute format. Using "icon" now in the available places makes it easier and is unified in ModuleLoader, FormEngine, EXT:about and the Module Menu. Resolves: #72827 Releases: master Change-Id: Ie5770539bcb94921a9319a1d8d53d981c49fbcd8 Reviewed-on: https://review.typo3.org/46100 Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl> Tested-by: Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by: Frank Nägler <frank.naegler@typo3.org> Tested-by: Frank Nägler <frank.naegler@typo3.org> --- .../Classes/Controller/ModulesController.php | 2 +- .../ToolbarItems/ShortcutToolbarItem.php | 35 +++++++------ .../Module/BackendModuleRepository.php | 45 ++--------------- .../FormDataProvider/AbstractItemProvider.php | 7 ++- .../backend/Classes/Module/ModuleLoader.php | 10 ---- .../FormDataProvider/TcaSelectItemsTest.php | 8 +-- typo3/sysext/backend/ext_tables.php | 4 +- .../Utility/ExtensionManagementUtility.php | 27 +++++++--- ...onConfigurationViaLabelstabs_imagestab.rst | 50 +++++++++++++++++++ typo3/sysext/dbal/ext_tables.php | 4 +- typo3/sysext/func/ext_tables.php | 4 +- typo3/sysext/info/ext_tables.php | 4 +- typo3/sysext/install/ext_tables.php | 4 +- typo3/sysext/lowlevel/ext_tables.php | 8 +-- typo3/sysext/recordlist/ext_tables.php | 4 +- typo3/sysext/scheduler/ext_tables.php | 4 +- typo3/sysext/setup/ext_tables.php | 4 +- typo3/sysext/taskcenter/ext_tables.php | 4 +- typo3/sysext/tstemplate/ext_tables.php | 4 +- 19 files changed, 119 insertions(+), 113 deletions(-) create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Deprecation-72827-ModuleIconConfigurationViaLabelstabs_imagestab.rst diff --git a/typo3/sysext/about/Classes/Controller/ModulesController.php b/typo3/sysext/about/Classes/Controller/ModulesController.php index 8768ca597710..37ce64e35b54 100644 --- a/typo3/sysext/about/Classes/Controller/ModulesController.php +++ b/typo3/sysext/about/Classes/Controller/ModulesController.php @@ -144,7 +144,7 @@ class ModulesController extends ActionController $subModuleKey = $moduleName . '_' . $subModuleName . '_tab'; $subModuleData = array(); $subModuleData['name'] = $subModuleName; - $subModuleData['icon'] = PathUtility::stripPathSitePrefix($this->languageService->moduleLabels['tabs_images'][$subModuleKey]); + $subModuleData['icon'] = PathUtility::getAbsoluteWebPath($subModuleInfo['icon']); $subModuleData['label'] = $this->languageService->moduleLabels['tabs'][$subModuleKey]; $subModuleData['shortDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'label']; $subModuleData['longDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'descr']; diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php index 799395bf718b..18bb512b6adf 100644 --- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php +++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php @@ -74,18 +74,21 @@ class ShortcutToolbarItem implements ToolbarItemInterface */ protected $iconFactory; + /** + * @var ModuleLoader + */ + protected $moduleLoader; + /** * Constructor */ public function __construct() { $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class); - if (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_AJAX) { - $this->getLanguageService()->includeLLFile('EXT:lang/locallang_misc.xlf'); - // Needed to get the correct icons when reloading the menu after saving it - $loadModules = GeneralUtility::makeInstance(ModuleLoader::class); - $loadModules->load($GLOBALS['TBE_MODULES']); - } + $this->getLanguageService()->includeLLFile('EXT:lang/locallang_misc.xlf'); + // Needed to get the correct icons when reloading the menu after saving it + $this->moduleLoader = GeneralUtility::makeInstance(ModuleLoader::class); + $this->moduleLoader->load($GLOBALS['TBE_MODULES']); // By default, 5 groups are set $this->shortcutGroups = array( @@ -275,7 +278,8 @@ class ShortcutToolbarItem implements ToolbarItemInterface } // Check for module access $moduleName = $row['M_module_name'] ?: $row['module_name']; - if (!isset($this->getLanguageService()->moduleLabels['tabs_images'][$moduleName . '_tab'])) { + + if (!isset($this->getLanguageService()->moduleLabels['labels'][$moduleName . '_tablabel'])) { // Nice hack to check if the user has access to this module // - otherwise the translation label would not have been loaded :-) continue; @@ -840,14 +844,15 @@ class ShortcutToolbarItem implements ToolbarItemInterface $icon = '<span title="' . $titleAttribute . '">' . $this->iconFactory->getIcon('mimetypes-word', Icon::SIZE_SMALL)->render() . '</span>'; break; default: - if ($languageService->moduleLabels['tabs_images'][$row['module_name'] . '_tab']) { - $icon = $languageService->moduleLabels['tabs_images'][$row['module_name'] . '_tab']; - // Change icon of fileadmin references - otherwise it doesn't differ with Web->List - $icon = str_replace('mod/file/list/list.gif', 'mod/file/file.gif', $icon); - if (GeneralUtility::isAbsPath($icon)) { - $icon = '../' . PathUtility::stripPathSitePrefix($icon); - } - // @todo: hardcoded width as we don't have a way to address module icons with an API yet. + $moduleName = $row['module_name']; + if (strpos($moduleName, '_') !== false) { + list($mainModule, $subModule) = explode('_', $moduleName, 2); + $icon = $this->moduleLoader->modules[$mainModule]['sub'][$subModule]['icon']; + } elseif (!empty($moduleName)) { + $icon = $this->moduleLoader->modules[$moduleName]['icon']; + } + if (!empty($icon) && file_exists($icon)) { + $icon = '../' . PathUtility::stripPathSitePrefix($icon); $icon = '<img src="' . htmlspecialchars($icon) . '" alt="' . $titleAttribute . '" width="16">'; } else { $icon = '<span title="' . $titleAttribute . '">' . $this->iconFactory->getIcon('empty-empty', Icon::SIZE_SMALL)->render() . '</span>'; diff --git a/typo3/sysext/backend/Classes/Domain/Repository/Module/BackendModuleRepository.php b/typo3/sysext/backend/Classes/Domain/Repository/Module/BackendModuleRepository.php index 493ec471b929..07a82fccb191 100644 --- a/typo3/sysext/backend/Classes/Domain/Repository/Module/BackendModuleRepository.php +++ b/typo3/sysext/backend/Classes/Domain/Repository/Module/BackendModuleRepository.php @@ -18,6 +18,7 @@ use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Core\Utility\PathUtility; /** * Repository for backend module menu @@ -353,47 +354,11 @@ class BackendModuleRepository implements \TYPO3\CMS\Core\SingletonInterface if (!empty($moduleData['iconIdentifier'])) { $iconFactory = GeneralUtility::makeInstance(IconFactory::class); $icon = $iconFactory->getIcon($moduleData['iconIdentifier'])->render(); - } elseif (!empty($GLOBALS['LANG']->moduleLabels['tabs_images'][$moduleKey])) { - $imageReference = $GLOBALS['LANG']->moduleLabels['tabs_images'][$moduleKey]; - $iconFileRelative = $this->getModuleIconRelative($imageReference); - if (!empty($iconFileRelative)) { - $iconTitle = $GLOBALS['LANG']->moduleLabels['tabs'][$moduleKey]; - $iconSizes = @getimagesize($this->getModuleIconAbsolute($imageReference)); - $icon = '<img src="' . $iconFileRelative . '" ' . $iconSizes[3] . ' title="' . htmlspecialchars($iconTitle) . '" alt="' . htmlspecialchars($iconTitle) . '" />'; - } + } elseif (isset($moduleData['icon']) && is_file($moduleData['icon'])) { + $iconTitle = $GLOBALS['LANG']->moduleLabels['tabs'][$moduleKey]; + $iconSizes = @getimagesize($moduleData['icon']); + $icon = '<img src="' . PathUtility::getAbsoluteWebPath($moduleData['icon']) . '" ' . $iconSizes[3] . ' title="' . htmlspecialchars($iconTitle) . '" alt="' . htmlspecialchars($iconTitle) . '" />'; } return $icon; } - - /** - * Returns the filename readable for the script from PATH_typo3. - * That means absolute names are just returned while relative names are - * prepended with the path pointing back to typo3/ dir - * - * @param string $iconFilename Icon filename - * @return string Icon filename with absolute path - * @see getModuleIconRelative() - */ - protected function getModuleIconAbsolute($iconFilename) - { - if (!GeneralUtility::isAbsPath($iconFilename)) { - $iconFilename = PATH_typo3 . $iconFilename; - } - return $iconFilename; - } - - /** - * Returns relative path to the icon filename for use in img-tags - * - * @param string $iconFilename Icon filename - * @return string Icon filename with relative path - * @see getModuleIconAbsolute() - */ - protected function getModuleIconRelative($iconFilename) - { - if (GeneralUtility::isAbsPath($iconFilename)) { - $iconFilename = '../' . \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix($iconFilename); - } - return $iconFilename; - } } diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php index e682a6ed6e2a..47f0370c27e6 100644 --- a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php +++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php @@ -310,7 +310,12 @@ abstract class AbstractItemProvider if (is_array($modList)) { foreach ($modList as $theMod) { // Icon: - $icon = $languageService->moduleLabels['tabs_images'][$theMod . '_tab']; + if (strpos($theMod, '_') !== false) { + list($mainModule, $subModule) = explode('_', $theMod, 2); + $icon = $loadModules->modules[$mainModule]['sub'][$subModule]['icon']; + } else { + $icon = $loadModules->modules[$theMod]['icon']; + } if ($icon) { $icon = '../' . PathUtility::stripPathSitePrefix($icon); } diff --git a/typo3/sysext/backend/Classes/Module/ModuleLoader.php b/typo3/sysext/backend/Classes/Module/ModuleLoader.php index 7e9cfb6c97a7..c9d5e27e91e2 100644 --- a/typo3/sysext/backend/Classes/Module/ModuleLoader.php +++ b/typo3/sysext/backend/Classes/Module/ModuleLoader.php @@ -168,18 +168,8 @@ class ModuleLoader // Language processing. This will add module labels and image reference to the internal ->moduleLabels array of the LANG object. $lang = $this->getLanguageService(); if (is_object($lang)) { - // $setupInformation['labels']['default']['tabs_images']['tab'] is for modules the reference - // to the module icon. $defaultLabels = $setupInformation['labels']['default']; - // Here the path is transformed to an absolute reference. - if ($defaultLabels['tabs_images']['tab']) { - if (\TYPO3\CMS\Core\Utility\StringUtility::beginsWith($defaultLabels['tabs_images']['tab'], 'EXT:')) { - list($extensionKey, $relativePath) = explode('/', substr($defaultLabels['tabs_images']['tab'], 4), 2); - $defaultLabels['tabs_images']['tab'] = ExtensionManagementUtility::extPath($extensionKey) . $relativePath; - } - } - // If LOCAL_LANG references are used for labels of the module: if ($defaultLabels['ll_ref']) { // Now the 'default' key is loaded with the CURRENT language - not the english translation... diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php index e17996df76e5..8bc4ce2b5676 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php @@ -1059,9 +1059,6 @@ class TcaSelectItemsTest extends UnitTestCase $GLOBALS['LANG'] = $languageService->reveal(); $languageService->sL(Argument::cetera())->willReturnArgument(0); $languageService->moduleLabels = [ - 'tabs_images' => [ - 'aModule_tab' => PATH_site . 'aModuleTabIcon.gif', - ], 'labels' => [ 'aModule_tablabel' => 'aModuleTabLabel', 'aModule_tabdescr' => 'aModuleTabDescription', @@ -1078,6 +1075,11 @@ class TcaSelectItemsTest extends UnitTestCase $moduleLoaderProphecy->modListGroup = [ 'aModule', ]; + $moduleLoaderProphecy->modules = [ + 'aModule' => [ + 'icon' => PATH_site . 'aModuleTabIcon.gif' + ] + ]; $expectedItems = [ 0 => [ diff --git a/typo3/sysext/backend/ext_tables.php b/typo3/sysext/backend/ext_tables.php index 630652a3ab0a..87d03b3f6779 100644 --- a/typo3/sysext/backend/ext_tables.php +++ b/typo3/sysext/backend/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Backend\Controller\PageLayoutController::class . '::mainAction', 'access' => 'user,group', 'name' => 'web_layout', + 'icon' => 'EXT:backend/Resources/Public/Icons/module-page.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:backend/Resources/Public/Icons/module-page.svg', - ), 'll_ref' => 'LLL:EXT:backend/Resources/Private/Language/locallang_mod.xlf', ), ) diff --git a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php index e3d0aa45c690..5e6208b4d581 100644 --- a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php +++ b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php @@ -865,15 +865,17 @@ class ExtensionManagementUtility public static function configureModule($moduleSignature) { $moduleConfiguration = $GLOBALS['TBE_MODULES']['_configuration'][$moduleSignature]; - $iconPathAndFilename = $moduleConfiguration['icon']; - if (substr($iconPathAndFilename, 0, 4) === 'EXT:') { - list($extensionKey, $relativePath) = explode('/', substr($iconPathAndFilename, 4), 2); - $iconPathAndFilename = self::extPath($extensionKey) . $relativePath; + if (!empty($moduleConfiguration['labels']['tabs_images']['tab'])) { + GeneralUtility::deprecationLog('Module registration for backend module "' . $moduleSignature . '" uses old referencing for the icon. Use the configuration option "icon" directly instead of [labels][tabs_images][tab]. The old option is removed with TYPO3 v9.'); + $moduleConfiguration['icon'] = $moduleConfiguration['labels']['tabs_images']['tab']; + unset($moduleConfiguration['labels']['tabs_images']['tab']); } + + if (!empty($moduleConfiguration['icon'])) { + $moduleConfiguration['icon'] = GeneralUtility::getFileAbsFileName($moduleConfiguration['icon'], false, true); + } + $moduleLabels = array( - 'tabs_images' => array( - 'tab' => $iconPathAndFilename - ), 'labels' => array( 'tablabel' => $GLOBALS['LANG']->sL($moduleConfiguration['labels'] . ':mlang_labels_tablabel'), 'tabdescr' => $GLOBALS['LANG']->sL($moduleConfiguration['labels'] . ':mlang_labels_tabdescr') @@ -934,6 +936,17 @@ class ExtensionManagementUtility // add additional configuration if (is_array($moduleConfiguration) && !empty($moduleConfiguration)) { $fullModuleSignature = $main . ($sub ? '_' . $sub : ''); + + if (!empty($moduleConfiguration['labels']['tabs_images']['tab'])) { + GeneralUtility::deprecationLog('Module registration for module "' . $fullModuleSignature . '" uses old referencing for the icon. Use the configuration option "icon" directly instead of [labels][tabs_images][tab]. The old option is removed with TYPO3 v9.'); + $moduleConfiguration['icon'] = $moduleConfiguration['labels']['tabs_images']['tab']; + unset($moduleConfiguration['labels']['tabs_images']['tab']); + } + + if (!empty($moduleConfiguration['icon'])) { + $moduleConfiguration['icon'] = GeneralUtility::getFileAbsFileName($moduleConfiguration['icon'], false, true); + } + $GLOBALS['TBE_MODULES']['_configuration'][$fullModuleSignature] = $moduleConfiguration; } } diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-72827-ModuleIconConfigurationViaLabelstabs_imagestab.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-72827-ModuleIconConfigurationViaLabelstabs_imagestab.rst new file mode 100644 index 000000000000..5f2ac7e81308 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-72827-ModuleIconConfigurationViaLabelstabs_imagestab.rst @@ -0,0 +1,50 @@ +============================================================================== +Deprecation: #72827 - Module Icon configuration via [labels][tabs_images][tab] +============================================================================== + +Description +=========== + +When registering a non-extbase module, the option to configure the icon was previously done with the module +configuration option ``[labels][tabs_images][tab]``. To clarify the naming, the property "icon" is introduced which +expects a reference to the icon via the ``EXT:myextension/path/to/the/file.png`` syntax. + +The old option ``[labels][tabs_images][tab]`` was deprecated. + + +Impact +====== + +When using the old configuration property ``[labels][tabs_images][tab]``, a deprecation message is thrown. + + +Affected Installations +====================== + +Installations with custom backend non-extbase modules of third-party-extensions that still use the old configuration +property. + + +Migration +========= + +Replace the ``[labels][tabs_images][tab]`` with ``[icon]`` in ``ext_tables.php`` in your extension like this: + +.. code-block:: php + + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule( + 'system', + 'dbint', + '', + '', + array( + 'routeTarget' => \TYPO3\CMS\Lowlevel\View\DatabaseIntegrityView::class . '::mainAction', + 'access' => 'admin', + 'name' => 'system_dbint', + 'workspaces' => 'online', + 'icon' => 'EXT:lowlevel/Resources/Public/Icons/module-dbint.svg', + 'labels' => array( + 'll_ref' => 'LLL:EXT:lowlevel/Resources/Private/Language/locallang_mod.xlf', + ), + ) + ); \ No newline at end of file diff --git a/typo3/sysext/dbal/ext_tables.php b/typo3/sysext/dbal/ext_tables.php index a75e934f7a7e..880c6b402584 100644 --- a/typo3/sysext/dbal/ext_tables.php +++ b/typo3/sysext/dbal/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Dbal\Controller\ModuleController::class . '::mainAction', 'access' => 'admin', 'name' => 'tools_txdbalM1', + 'icon' => 'EXT:dbal/Resources/Public/Icons/module-dbal.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:dbal/Resources/Public/Icons/module-dbal.svg', - ), 'll_ref' => 'LLL:EXT:dbal/Resources/Private/Language/locallang_mod.xlf', ), ) diff --git a/typo3/sysext/func/ext_tables.php b/typo3/sysext/func/ext_tables.php index 2e8fa3cbe03a..a3ddb703fc8d 100644 --- a/typo3/sysext/func/ext_tables.php +++ b/typo3/sysext/func/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Func\Controller\PageFunctionsController::class . '::mainAction', 'access' => 'user,group', 'name' => 'web_func', + 'icon' => 'EXT:func/Resources/Public/Icons/module-func.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:func/Resources/Public/Icons/module-func.svg', - ), 'll_ref' => 'LLL:EXT:lang/locallang_mod_web_func.xlf', ), ) diff --git a/typo3/sysext/info/ext_tables.php b/typo3/sysext/info/ext_tables.php index 5abcacf6e902..1b83637f3dae 100644 --- a/typo3/sysext/info/ext_tables.php +++ b/typo3/sysext/info/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Info\Controller\InfoModuleController::class . '::mainAction', 'access' => 'user,group', 'name' => 'web_info', + 'icon' => 'EXT:info/Resources/Public/Icons/module-info.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:info/Resources/Public/Icons/module-info.svg', - ), 'll_ref' => 'LLL:EXT:lang/locallang_mod_web_info.xlf', ), ) diff --git a/typo3/sysext/install/ext_tables.php b/typo3/sysext/install/ext_tables.php index 945c7ddf764d..58fa1dbf38bf 100644 --- a/typo3/sysext/install/ext_tables.php +++ b/typo3/sysext/install/ext_tables.php @@ -20,10 +20,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Install\Controller\BackendModuleController::class . '::index', 'access' => 'admin', 'name' => 'system_extinstall', + 'icon' => 'EXT:install/Resources/Public/Icons/module-install.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:install/Resources/Public/Icons/module-install.svg', - ), 'll_ref' => 'LLL:EXT:install/Resources/Private/Language/BackendModule.xlf', ), ) diff --git a/typo3/sysext/lowlevel/ext_tables.php b/typo3/sysext/lowlevel/ext_tables.php index 697d5d5de3a0..73736a493379 100644 --- a/typo3/sysext/lowlevel/ext_tables.php +++ b/typo3/sysext/lowlevel/ext_tables.php @@ -12,10 +12,8 @@ if (TYPO3_MODE === 'BE') { 'access' => 'admin', 'name' => 'system_dbint', 'workspaces' => 'online', + 'icon' => 'EXT:lowlevel/Resources/Public/Icons/module-dbint.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:lowlevel/Resources/Public/Icons/module-dbint.svg', - ), 'll_ref' => 'LLL:EXT:lowlevel/Resources/Private/Language/locallang_mod.xlf', ), ) @@ -30,10 +28,8 @@ if (TYPO3_MODE === 'BE') { 'access' => 'admin', 'name' => 'system_config', 'workspaces' => 'online', + 'icon' => 'EXT:lowlevel/Resources/Public/Icons/module-config.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:lowlevel/Resources/Public/Icons/module-config.svg', - ), 'll_ref' => 'LLL:EXT:lowlevel/Resources/Private/Language/locallang_mod_configuration.xlf', ), ) diff --git a/typo3/sysext/recordlist/ext_tables.php b/typo3/sysext/recordlist/ext_tables.php index ab8384aafa2e..19dcd17fd9f1 100644 --- a/typo3/sysext/recordlist/ext_tables.php +++ b/typo3/sysext/recordlist/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Recordlist\RecordList::class . '::mainAction', 'access' => 'user,group', 'name' => 'web_list', + 'icon' => 'EXT:recordlist/Resources/Public/Icons/module-list.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:recordlist/Resources/Public/Icons/module-list.svg', - ), 'll_ref' => 'LLL:EXT:lang/locallang_mod_web_list.xlf', ), ) diff --git a/typo3/sysext/scheduler/ext_tables.php b/typo3/sysext/scheduler/ext_tables.php index c865657fb97f..9fa19841cef9 100644 --- a/typo3/sysext/scheduler/ext_tables.php +++ b/typo3/sysext/scheduler/ext_tables.php @@ -12,10 +12,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController::class . '::mainAction', 'access' => 'admin', 'name' => 'system_txschedulerM1', + 'icon' => 'EXT:scheduler/Resources/Public/Icons/module-scheduler.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:scheduler/Resources/Public/Icons/module-scheduler.svg', - ), 'll_ref' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_mod.xlf', ), ) diff --git a/typo3/sysext/setup/ext_tables.php b/typo3/sysext/setup/ext_tables.php index 1c2c5c0b7d4d..f24947b2fbf3 100644 --- a/typo3/sysext/setup/ext_tables.php +++ b/typo3/sysext/setup/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Setup\Controller\SetupModuleController::class . '::mainAction', 'access' => 'group,user', 'name' => 'user_setup', + 'icon' => 'EXT:setup/Resources/Public/Icons/module-setup.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:setup/Resources/Public/Icons/module-setup.svg', - ), 'll_ref' => 'LLL:EXT:setup/Resources/Private/Language/locallang_mod.xlf', ), ) diff --git a/typo3/sysext/taskcenter/ext_tables.php b/typo3/sysext/taskcenter/ext_tables.php index b7f2f81211d0..6ba59ccd03ec 100644 --- a/typo3/sysext/taskcenter/ext_tables.php +++ b/typo3/sysext/taskcenter/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Taskcenter\Controller\TaskModuleController::class . '::mainAction', 'access' => 'group,user', 'name' => 'user_task', + 'icon' => 'EXT:taskcenter/Resources/Public/Icons/module-taskcenter.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:taskcenter/Resources/Public/Icons/module-taskcenter.svg', - ), 'll_ref' => 'LLL:EXT:taskcenter/Resources/Private/Language/locallang_mod.xlf', ), ) diff --git a/typo3/sysext/tstemplate/ext_tables.php b/typo3/sysext/tstemplate/ext_tables.php index 40467d96a884..d12e8ede53a8 100644 --- a/typo3/sysext/tstemplate/ext_tables.php +++ b/typo3/sysext/tstemplate/ext_tables.php @@ -11,10 +11,8 @@ if (TYPO3_MODE === 'BE') { 'routeTarget' => \TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateModuleController::class . '::mainAction', 'access' => 'admin', 'name' => 'web_ts', + 'icon' => 'EXT:tstemplate/Resources/Public/Icons/module-tstemplate.svg', 'labels' => array( - 'tabs_images' => array( - 'tab' => 'EXT:tstemplate/Resources/Public/Icons/module-tstemplate.svg', - ), 'll_ref' => 'LLL:EXT:tstemplate/Resources/Private/Language/locallang_mod.xlf', ), ) -- GitLab