Deprecation: #96524 - Deprecate inline JavaScript in Dashboard¶
See Issue #96524
Description¶
Using inline JavaScript when initializing RequireJS modules in individual dashboard widgets has been deprecated. Widget implementations have to be adjusted accordingly.
Impact¶
Deprecation errors will be logged.
Affected Installations¶
Installations having individual widget implementations which are
- implementing
\TYPO3\CMS\Dashboard\Widgets\RequireJsModuleInterface
- invoking
\TYPO3\CMS\Dashboard\DashboardInitializationService->getRequireJsModules
Migration¶
Affected widget have to implement \TYPO3\CMS\Dashboard\Widgets\JavaScriptInterface
instead of deprecated \TYPO3\CMS\Dashboard\Widgets\RequireJsModuleInterface
.
Instead of using inline JavaScript for initializing RequireJS modules,
\TYPO3\CMS\Core\Page\JavaScriptModuleInstruction
have to be declared.
class ExampleChartWidget implements RequireJsModuleInterface
{
// ...
public function getJavaScriptModuleInstructions(): array
{
return [
'TYPO3/CMS/Dashboard/ChartInitializer' =>
'function(ChartInitializer) { ChartInitializer.initialize(); }',
];
}
}
Deprecated example widget above would look like the following when using
JavaScriptInterface
and JavaScriptModuleInstruction
:
class ExampleChartWidget implements JavaScriptInterface
{
// ...
public function getJavaScriptModuleInstructions(): array
{
return [
JavaScriptModuleInstruction::forRequireJS(
'TYPO3/CMS/Dashboard/ChartInitializer'
)->invoke('initialize'),
];
}
}