TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:09 +02:00
commit af8cc155b5
6818 changed files with 642608 additions and 0 deletions
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-75834:
=========================================================
Breaking: #75834 - Reorder processing of TCA Select items
=========================================================
See :issue:`75834`
Description
===========
It's now possible again to add and remove items via `pageTSconfig` after `itemsProcFunc` has been processed
for TCA select fields.
Impact
======
Items generated by `itemsProcFunc` no longer have the highest priority.
Affected Installations
======================
Any installation that relied on `itemsProcFunc` being the source of truth for a given field.
Migration
=========
Cross check if you added or removed items via `pageTSconfig`. These might be really gone now.
.. index:: Backend, NotScanned
@@ -0,0 +1,59 @@
.. include:: /Includes.rst.txt
.. _breaking-83475:
==================================================================
Breaking: #83475 - Aggregate validator information in class schema
==================================================================
See :issue:`83475`
Description
===========
It is no longer possible to use the following semantic sugar to define validators for properties of action parameters:
.. code-block:: php
/*
* @param Model $model
* @validate $model.property NotEmpty
*/
public function foo(Model $model){}
Mind the dot and the reference to the property. This will no longer work.
Of course, the regular validation of action parameters stays intact.
.. code-block:: php
/*
* @param Model $model
* @validate $model CustomValidator
*/
public function foo(Model $model){}
This will continue to work.
Impact
======
If you rely on that feature, you need to manually implement the validation in the future.
Affected Installations
======================
All installations that use that feature.
Migration
=========
If you used that feature for adding validators to models, you can define the validators inside the model instead or
inside a model validator, that is automatically registered and loaded if defined.
When using that feature with regular objects, you need to write custom validators and call the desired property
validators in there.
.. index:: ext:extbase, PHP-API, NotScanned
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _breaking-83889:
=============================================
Breaking: #83889 - E_NOTICE free unit testing
=============================================
See :issue:`83889`
Description
===========
Writing unit tests and executing them using the `typo3/testing-framework`
now requires the system under test to no longer raise PHP :php:`E_NOTICE`
level errors, or the test fails.
Impact
======
This is a first step towards a PHP notice free TYPO3 core.
Affected Installations
======================
Extensions that use the TYPO3 v9 compatible `typo3/testing-framework`
package in a version >= 3.0.0 may see failing unit tests if the tested
class raises `E_NOTICE` errors.
Migration
=========
The best solution is to fix the unit test and/or the system under test
to no longer raise `E_NOTICE` level PHP errors.
In a transition phase, a single unit test case file can set a
property to still suppress E_NOTICE warnings:
.. code-block:: php
class FooTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
{
/**
* Subject is not notice free, disable E_NOTICES
*/
protected static $suppressNotices = true;
}
Note that this property is deprecated and will be removed from
:php:`UnitTestCase` as soon as TYPO3 core does not need it
anymore.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-84055:
======================================================
Breaking: #84055 - Migrate sys_notes away from extbase
======================================================
See :issue:`84055`
Description
===========
To simplify the rendering of sys_note records and improve the performance, the usage of `extbase` has
been removed from the extension `sys_note`.
Impact
======
The model :php:`TYPO3\CMS\SysNote\Domain\Model\SysNote` has been removed,
the repository :php:`TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository` now
returns a plain result instead of objects.
It is not possible anymore more to change the template path of the extension.
Affected Installations
======================
Any installation which relies on the repository and model or changed the template by using TypoScript.
Migration
=========
To change the rendering of notes, override the hook and return a modified output.
.. index:: Backend, PartiallyScanned, ext:sys_note
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _breaking-84131:
========================================================
Breaking: #84131 - Removed classes of language extension
========================================================
See :issue:`84131`
Description
===========
The language pack update module - formerly known as "Admin Tools" -> "Language"
module has been moved to "Maintenance" -> "Manage language packs".
PHP classes implementing the old solution have been removed:
* :php:`TYPO3\CMS\Lang\Command\LanguageUpdateCommand`
* :php:`TYPO3\CMS\Lang\Controller\LanguageController`
* :php:`TYPO3\CMS\Lang\Domain\Model\Extension`
* :php:`TYPO3\CMS\Lang\Domain\Model\Language`
* :php:`TYPO3\CMS\Lang\Domain\Repository\ExtensionRepository`
* :php:`TYPO3\CMS\Lang\Domain\Repository\LanguageRepository`
* :php:`TYPO3\CMS\Lang\Exception`
* :php:`TYPO3\CMS\Lang\Exception\Language`
* :php:`TYPO3\CMS\Lang\Exception\Ter`
* :php:`TYPO3\CMS\Lang\Exception\XmlParser`
* :php:`TYPO3\CMS\Lang\Service\RegistryService`
* :php:`TYPO3\CMS\Lang\Service\TerService`
* :php:`TYPO3\CMS\Lang\Service\TranslationService`
* :php:`TYPO3\CMS\Lang\View\AbstractJsonView`
* :php:`TYPO3\CMS\Lang\View\Language\ActivateLanguageJson`
* :php:`TYPO3\CMS\Lang\View\Language\DeactivateLanguageJson`
* :php:`TYPO3\CMS\Lang\View\Language\GetTranslationsJson`
* :php:`TYPO3\CMS\Lang\View\Language\RemoveLanguageJson`
* :php:`TYPO3\CMS\Lang\View\Language\UpdateLanguageJson`
* :php:`TYPO3\CMS\Lang\View\Language\UpdateTranslationJson`
Impact
======
Using one of the mentioned classes will throw a fatal PHP error.
Affected Installations
======================
It is unlikely extensions used the mentioned classes, the extension scanner will find usages. The only well-known
usage of one of this classes is the signal/slot to override the base download url of language packs per extension
and the registration did not change and should still be done like this:
.. code-block:: php
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
'TYPO3\\CMS\\Lang\\Service\\TranslationService',
'postProcessMirrorUrl',
\Company\Extension\Slots\CustomMirror::class,
'postProcessMirrorUrl'
);
Migration
=========
No migration available.
.. index:: Backend, PHP-API, FullyScanned, ext:lang
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-84148:
=================================================================
Breaking: #84148 - RequireJS module for language handling removed
=================================================================
See :issue:`84148`
Description
===========
Since the removal of ExtJS, the JavaScript files that handled the localization of labels in backend modules became
obsolete and have been removed.
Impact
======
Depending on the RequireJS module :js:`TYPO3/CMS/Lang/Lang` will result in `404` errors, as the module has been removed.
Affected Installations
======================
Every 3rd party extension depending on :js:`TYPO3/CMS/Lang/Lang` is affected.
Migration
=========
Remove the module from the affected RequireJS modules. The labels are now prepared by the PageRenderer and passed
to :js:`TYPO3.lang` without the need of additional JavaScript.
.. index:: Backend, JavaScript, NotScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-87081:
=================================================================================================
Breaking: #87081 - Language update (scheduler) task doesn't work after upgrading to TYPO3 >= v9.2
=================================================================================================
See :issue:`87081`
Description
===========
The language update command was moved away from ext:lang and was rewritten as a Symfony Console Commmand.
https://docs.typo3.org/typo3cms/extensions/core/latest/Changelog/9.2/Breaking-84131-RemovedClassesOfLanguageExtension.html
Impact
======
Running or editing this task is not possible anymore.
Affected Installations
======================
An installation is affected if a language update scheduler task was created and exists before an upgrade to TYPO3 >= 9.2.
Migration
=========
Delete all existing language update tasks within the scheduler or remove the corresponding record in the database directly.
Create a new scheduler task with selected class "Execute console commands" and select schedulable command "language:update".
.. index:: Backend, CLI, Frontend, NotScanned, ext:lang
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-81434:
======================================================
Deprecation: #81434 - String Cache Frontend Deprecated
======================================================
See :issue:`81434`
Description
===========
The `StringFrontend` cache frontend has been marked as deprecated in favor of `VariableFrontend`.
Impact
======
Using `TYPO3\CMS\Core\Cache\Frontend\StringFrontend` will trigger a deprecation warning.
Affected Installations
======================
Any TYPO3 installation which defines any custom cache using `StringFrontend`.
Migration
=========
Replace `TYPO3\CMS\Core\Cache\Frontend\StringFrontend` occurrences in cache configurations with `TYPO3\CMS\Core\Cache\Frontend\VariableFrontend`.
.. index:: PHP-API, NotScanned
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-83475:
=====================================================================
Deprecation: #83475 - Aggregate validator information in class schema
=====================================================================
See :issue:`83475`
Description
===========
The method `\TYPO3\CMS\Extbase\Mvc\Controller\ActionController::getActionMethodParameters` has been marked as deprecated
and will be removed in TYPO3 v10.0
Impact
======
The method was not considered public API and it is unlikely that the methods is used in the wild. If you rely on that
method, please migrate your code base.
Affected Installations
======================
All installations that use that method.
Migration
=========
Use the `ClassSchema` class and get all necessary information from it.
Example:
.. code-block:: php
$reflectionService = $objectManager->get(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class);
$methods = $reflectionService->getClassSchema($className)->getMethods();
$actions = array_filter($methods, function($method){
return $method['isAction'];
});
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-83475-1668719171:
=====================================================================
Deprecation: #83475 - Aggregate validator information in class schema
=====================================================================
See :issue:`83475`
Description
===========
The method `\TYPO3\CMS\Extbase\Validation\ValidatorResolver::buildMethodArgumentsValidatorConjunctions` has been marked
as deprecated and will be removed in TYPO3 v10.0
Impact
======
The method was not considered public API and it is unlikely that the methods is used in the wild. If you rely on that
method, you will need to implement the logic yourself.
Affected Installations
======================
All installations that use `\TYPO3\CMS\Extbase\Validation\ValidatorResolver::buildMethodArgumentsValidatorConjunctions`.
Migration
=========
There is no migration
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-83506:
===============================================================================
Deprecation: #83506 - Deprecated usage of TSFE:fe_user|sesData in TS conditions
===============================================================================
See :issue:`83506`
Description
===========
Since the session API has been adjusted it is no longer possible to access the (now protected) `sesData` property of
the `fe_user` object.
Impact
======
Using :typoscript:`[globalVar = TSFE:fe_user|sesData|foo|bar = 1234567]` will trigger a deprecation warning.
Affected Installations
======================
Any installation using the old value :typoscript:`TSFE:fe_user|sesData` in a TypoScript condition.
Migration
=========
Use :typoscript:`[globalVar = session:foo|bar = 1234567]` instead.
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-83740:
===============================================================
Deprecation: #83740 - Cleanup of AbstractRecordList breaks hook
===============================================================
See :issue:`83740`
Description
===========
The hook `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList']['buildQueryParameters']`
has been marked as deprecated. It was a hook to modify the current database query but used in multiple classes which
leads to some issues. For this reason, the old hook is now marked as deprecated and will be removed in v10.
Impact
======
Registering a hook in `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList']['buildQueryParameters']`
will trigger a deprecation warning.
Affected installations
======================
Instances with extensions using the hook `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList']['buildQueryParameters']`
Migration
=========
Two new hooks are available to achieve the same things.
Please see:
`Feature-83740-CleanupOfAbstractRecordListBreaksHook.rst <https://docs.typo3.org/typo3cms/extensions/core/Changelog/9.2/Feature-83740-CleanupOfAbstractRecordListBreaksHook.html>`_
.. index:: Backend, Database, PHP-API, FullyScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-83803:
=================================================
Deprecation: #83803 - Deprecate EidRequestHandler
=================================================
See :issue:`83803`
Description
===========
The class :php:`\TYPO3\CMS\Frontend\Http\EidRequestHandler` has been marked as deprecated and will be removed in CMS 10.
This class has been replaced by a PSR-15 middleware :php:`\TYPO3\CMS\Frontend\Middleware\EidHandler`.
The eID functionality itself is not deprecated and can be used as before.
Impact
======
Installations that use :php:`\TYPO3\CMS\Frontend\Http\EidRequestHandler` will trigger a deprecation warning.
Affected Installations
======================
All installations that use custom extensions that add classes derived from :php:`\TYPO3\CMS\Frontend\Http\EidRequestHandler`.
Migration
=========
Use :php:`\TYPO3\CMS\Frontend\Middleware\EidHandler` instead.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _deprecation-83806:
==================================================================================
Deprecation: #83806 - Deprecate page.javascriptLibs and page.javascriptLibs.jQuery
==================================================================================
See :issue:`83806`
Description
===========
The settings :typoscript:`page.javascriptLibs` and :typoscript:`page.javascriptLibs.jQuery` have been marked as
deprecated and will be removed in CMS 10.
Impact
======
Installations that use :typoscript:`page.javascriptLibs` or :typoscript:`page.javascriptLibs.jQuery` will trigger a
deprecation warning.
Affected Installations
======================
All installations that use one of the above settings.
Migration
=========
Use one of the following settings to add jQuery:
* :typoscript:`page.includeJSLibs`
* :typoscript:`page.includeJSFooterlibs`
* :typoscript:`page.includeJS`
* :typoscript:`page.includeJSFooter`
* :typoscript:`page.headerData`
* :typoscript:`page.footerData`
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-83844:
========================================================
Deprecation: #83844 - Deprecated usage of top.launchView
========================================================
See :issue:`83844`
Description
===========
The usage of :js:`top.launchView()`, that opens certain information in a popup window, has been marked as deprecated.
Impact
======
Calling :js:`top.launchView()` will trigger a deprecation warning in the browser console.
Affected Installations
======================
Every 3rd party extension that uses :js:`top.launchView` is affected.
Migration
=========
Either use :js:`top.TYPO3.InfoWindow.showItem()` directly or import the RequireJS module `TYPO3/CMS/Backend/InfoWindow`
and call :js:`showItem()`.
.. index:: Backend, JavaScript, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-83853:
================================================
Deprecation: #83853 - Backend AjaxRequestHandler
================================================
See :issue:`83853`
Description
===========
The class :php:`\TYPO3\CMS\Backend\Http\AjaxRequestHandler` has been marked as deprecated and will be removed in TYPO3 v10.
This functionality has been moved into the backend's generic Request Handler functionality.
The AJAX functionality itself is not deprecated and can be used as before.
Impact
======
Installations that use :php:`\TYPO3\CMS\Backend\Http\AjaxRequestHandler` will trigger a deprecation warning.
Affected Installations
======================
All installations that use custom extensions that add classes derived from :php:`\TYPO3\CMS\Backend\Http\AjaxRequestHandler`.
Migration
=========
Use a PSR-15 middleware for the Backend Middleware Stack or extend from the generic
:php:`\TYPO3\CMS\Backend\Http\RequestHandler` instead.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _deprecation-83883:
===================================================================
Deprecation: #83883 - Page Not Found And Error handling in Frontend
===================================================================
See :issue:`83883`
Description
===========
The following methods have been marked as deprecated:
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageUnavailableAndExit()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageNotFoundAndExit()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->checkPageUnavailableHandler()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageUnavailableHandler()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageNotFoundHandler()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->pageErrorHandler()`
These methods have been commonly used by third-party extensions to show that a page is not found,
a page is unavailable due to misconfiguration or the access to a page was denied.
Impact
======
Calling any of the methods above will trigger a deprecation warning.
Affected Installations
======================
Any installation with third-party PHP extension code calling these methods.
Migration
=========
Use the new :php:`ErrorController` with its custom actions :php:`unavailableAction()`, :php:`pageNotFoundAction()` and
:php:`accessDeniedAction()`.
Instead of exiting the currently running script, a proposed PSR-7-compliant response is returned which can be
handled by the third-party extension to enrich, return or customize exiting the script.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-83904:
========================================================
Deprecation: #83904 - Array handling in AbstractTreeView
========================================================
See :issue:`83904`
Description
===========
Handling arrays instead of database relations in class :php:`TYPO3\CMS\Backend\Tree\View\AbstractTreeView`
has been marked as deprecated.
Impact
======
Calling the following methods will throw deprecation warnings and will be removed with core version 10:
* [scanned] :php:`AbstractTreeView->setDataFromArray`
* [scanned] :php:`AbstractTreeView->setDataFromTreeArray`
The following class properties should not be used any longer and will be removed with core version 10:
* [not scanned] :php:`AbstractTreeView->data`
* [scanned] :php:`AbstractTreeView->dataLookup`
* [scanned] :php:`AbstractTreeView->subLevelID`
Affected Installations
======================
This feature was rarely used, it is pretty unlikely an instance is affected by a consuming extension.
The extension scanner will report most use cases.
Migration
=========
No migration available.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-83905:
===================================================================
Deprecation: #83905 - TypoScriptFrontendController->page_cache_reg1
===================================================================
See :issue:`83905`
Description
===========
Property :php:`TypoScriptFrontendController->page_cache_reg1` has been marked as deprecated.
Impact
======
Setting this property triggers a deprecation warning.
Affected Installations
======================
This property was of very little use ever since, it is unlikely an instance runs an extension consuming it.
The extension scanner will find usages.
Migration
=========
Use method :php:`TypoScriptFrontendController->addCacheTags()` to influence page cache tagging.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-83942:
====================================================
Deprecation: #83942 - Deprecated FileFacade::getIcon
====================================================
See :issue:`83942`
Description
===========
The method :php:`\TYPO3\CMS\Filelist\FileFacade::getIcon` has been marked as deprecated.
Impact
======
Calling the method :php:`\TYPO3\CMS\Filelist\FileFacade::getIcon` will trigger a deprecation warning.
Affected Installations
======================
Instances with extensions using the method :php:`\TYPO3\CMS\Filelist\FileFacade::getIcon`
Migration
=========
Either use the ViewHelper :html:`<core:iconForResource resource="{file}" />` or
:php:`GeneralUtility::makeInstance(IconFactory::class)->getIconForResource($resource)` to render a resource-based icon.
.. index:: FAL, FullyScanned
@@ -0,0 +1,100 @@
.. include:: /Includes.rst.txt
.. _deprecation-83964:
==========================================================
Deprecation: #83964 - EXT:form - streamline usage of icons
==========================================================
See :issue:`83964`
Description
===========
With issue #82348 EXT:form icons have been cloned into :file:`EXT:core/Resources/Public/Icons/T3Icons/form`.
Icons are now available with the identifier prefix `form-` (previously `t3-form-icon-`).
For this reason, the old icon identifiers with `t3-form-icon-` prefix have been marked as deprecated and will be
removed in TYPO3v10.
Impact
======
Usage of the following icon identifiers will trigger a deprecation warning:
* `t3-form-icon-advanced-password`
* `t3-form-icon-checkbox`
* `t3-form-icon-content-element`
* `t3-form-icon-date-picker`
* `t3-form-icon-duplicate`
* `t3-form-icon-email`
* `t3-form-icon-fieldset`
* `t3-form-icon-file-upload`
* `t3-form-icon-finisher`
* `t3-form-icon-form-element-selector`
* `t3-form-icon-gridcontainer`
* `t3-form-icon-gridrow`
* `t3-form-icon-hidden`
* `t3-form-icon-image-upload`
* `t3-form-icon-insert-after`
* `t3-form-icon-insert-in`
* `t3-form-icon-multi-checkbox`
* `t3-form-icon-multi-select`
* `t3-form-icon-number`
* `t3-form-icon-page`
* `t3-form-icon-password`
* `t3-form-icon-radio-button`
* `t3-form-icon-single-select`
* `t3-form-icon-static-text`
* `t3-form-icon-summary-page`
* `t3-form-icon-telephone`
* `t3-form-icon-text`
* `t3-form-icon-textarea`
* `t3-form-icon-url`
* `t3-form-icon-validator`
Affected installations
======================
All instances are affected which register one of the icon identifiers listed above through the
:php:`IconRegistry`.
Migration
=========
Use one of the following icon identifier replacements ('deprecated-icon-identifier' => 'new-icon-identifier')
* `t3-form-icon-advanced-password` => `form-advanced-password`
* `t3-form-icon-checkbox` => `form-checkbox`
* `t3-form-icon-content-element` => `form-content-element`
* `t3-form-icon-date-picker` => `form-date-picker`
* `t3-form-icon-duplicate` => `actions-duplicate`
* `t3-form-icon-email` => `form-email`
* `t3-form-icon-fieldset` => `form-fieldset`
* `t3-form-icon-file-upload` => `form-file-upload`
* `t3-form-icon-finisher` => `form-finisher`
* `t3-form-icon-form-element-selector` => `actions-variable-select`
* `t3-form-icon-gridcontainer` => `form-gridcontainer`
* `t3-form-icon-gridrow` => `form-gridrow`
* `t3-form-icon-hidden` => `form-hidden`
* `t3-form-icon-image-upload` => `form-image-upload`
* `t3-form-icon-insert-after` => `form-insert-after`
* `t3-form-icon-insert-in` => `form-insert-in`
* `t3-form-icon-multi-checkbox` => `form-multi-checkbox`
* `t3-form-icon-multi-select` => `form-multi-select`
* `t3-form-icon-number` => `form-number`
* `t3-form-icon-page` => `form-page`
* `t3-form-icon-password` => `form-password`
* `t3-form-icon-radio-button` => `form-radio-button`
* `t3-form-icon-single-select` => `form-single-select`
* `t3-form-icon-static-text` => `form-static-text`
* `t3-form-icon-summary-page` => `form-summary-page`
* `t3-form-icon-telephone` => `form-telephone`
* `t3-form-icon-text` => `form-text`
* `t3-form-icon-textarea` => `form-textarea`
* `t3-form-icon-url` => `form-url`
* `t3-form-icon-validator` => `form-validator`
.. index:: Backend, ext:form, NotScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-84045:
================================================
Deprecation: #84045 - AdminPanel Hook deprecated
================================================
See :issue:`84045`
Description
===========
The hook `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_adminpanel.php']['extendAdminPanel']` has been
marked as deprecated along with the corresponding interface `\TYPO3\CMS\Frontend\View\AdminPanelViewHookInterface`.
Impact
======
Using either the interface or registering the hook will result in a deprecation warning and will stop working in future
TYPO3 versions.
Affected Installations
======================
Installations using the `\TYPO3\CMS\Frontend\View\AdminPanelViewHookInterface`.
Migration
=========
Use the new admin panel module API starting with TYPO3 v9.2.
.. index:: Frontend, FullyScanned, ext:frontend
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-84109:
==================================================
Deprecation: #84109 - Deprecate DependencyResolver
==================================================
See :issue:`84109`
Description
===========
The class :php:`\TYPO3\CMS\Core\Package\DependencyResolver` has been marked as deprecated as the code as been merged
into :php:`\TYPO3\CMS\Core\Package\PackageManager`.
Additionally the :php:`\TYPO3\CMS\Core\Package\PackageManager` method :php:`injectDependencyResolver` has been marked as
deprecated and the :php:`\TYPO3\CMS\Core\Package\PackageManager` triggers a deprecation warning when
:php:`\TYPO3\CMS\Core\Service\DependencyOrderingService` is not injected through the constructor.
Impact
======
Installations that use :php:`\TYPO3\CMS\Core\Package\DependencyResolver` or create an own
:php:`\TYPO3\CMS\Core\Package\PackageManager` instance will trigger a deprecation warning.
Affected Installations
======================
All installations that use custom extensions that use the :php:`\TYPO3\CMS\Core\Package\DependencyResolver` class or
create an own :php:`\TYPO3\CMS\Core\Package\PackageManager` instance.
Migration
=========
Use :php:`\TYPO3\CMS\Core\Service\DependencyOrderingService` to manually sort packages.
Pass :php:`\TYPO3\CMS\Core\Service\DependencyOrderingService` to the :php:`\TYPO3\CMS\Core\Package\PackageManager`
constructor if a new instance is created.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-84118:
=========================================================================
Deprecation: #84118 - Various public methods of AdminPanelView deprecated
=========================================================================
See :issue:`84118`
Description
===========
To clean up the admin panel and provide a new API various functions of the main class `AdminPanelView` have been marked
as deprecated:
* `getAdminPanelHeaderData`
* `isAdminModuleEnabled`
* `saveConfigOptions`
* `extGetFeAdminValue`
* `forcePreview`
* `isAdminModuleOpen`
* `extGetHead`
* `linkSectionHeader`
* `extGetItem`
Impact
======
Calling any of the mentioned methods triggers an `E_USER_DEPRECATED` PHP error.
Affected Installations
======================
Any installation that calls one of the above methods.
Migration
=========
Implement your own AdminPanel module by using the new API (see `AdminPanelModuleInterface`).
.. index:: Frontend, FullyScanned, ext:frontend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-84145:
==============================================
Deprecation: #84145 - Deprecate ext_isLinkable
==============================================
See :issue:`84145`
Description
===========
The method :php:`TYPO3\CMS\Backend\Tree\View\ElementBrowserFolderTreeView->ext_isLinkable()` has been marked as
deprecated. It always returned true and still does it until removed.
Impact
======
Little to no impact in extensions, the method behavior usually does not change.
Affected Installations
======================
Extensions extending the folder tree of the element browser may be affected but still should not change their behavior.
Extension scanner may find usages and marks them as weak match since the methods appears in other classes as well.
Migration
=========
Don't call :php:`ext_isLinkable()` anymore and assume :php:`true` as return value.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-84171:
==========================================================================================================
Deprecation: #84171 - Adding GeneralUtility::getUrl RequestHeaders as non-associative array are deprecated
==========================================================================================================
See :issue:`84171`
Description
===========
RequestHeaders passed to `getUrl()` as string (format `Header:Value`) have been marked as deprecated.
Associative arrays should be used instead.
Impact
======
Using `GeneralUtility::getUrl()` request headers in a non-associative way will trigger an `E_USER_DEPRECATED` PHP error.
Affected Installations
======================
All using request headers for `GeneralUtility::getUrl()` in a non-associative way.
Migration
=========
Use associative arrays, for example:
.. code-block:: php
$headers = ['Content-Language: de-DE'];
will become
.. code-block:: php
$headers = ['Content-Language' => 'de-DE'];
.. index:: PHP-API, NotScanned
@@ -0,0 +1,130 @@
.. include:: /Includes.rst.txt
.. _deprecation-84195:
================================================================================
Deprecation: #84195 - Protected methods and properties in EditDocumentController
================================================================================
See :issue:`84195`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\EditDocumentController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`$editconf`
* :php:`$defVals`
* :php:`$overrideVals`
* :php:`$columnsOnly`
* :php:`$returnUrl`
* :php:`$closeDoc`
* :php:`$doSave`
* :php:`$returnEditConf`
* [not scanned] :php:`$uc`
* :php:`$retUrl`
* :php:`$R_URL_parts`
* :php:`$R_URL_getvars`
* :php:`$storeArray`
* :php:`$storeUrl`
* :php:`$storeUrlMd5`
* :php:`$docDat`
* :php:`$docHandler`
* [not scanned] :php:`$cmd`
* [not scanned] :php:`$mirror`
* :php:`$cacheCmd`
* :php:`$redirect`
* :php:`$returnNewPageId`
* :php:`$popViewId`
* :php:`$popViewId_addParams`
* :php:`$viewUrl`
* :php:`$recTitle`
* :php:`$noView`
* :php:`$MCONF`
* [not scanned] :php:`$doc`
* :php:`$perms_clause`
* [not scanned] :php:`$template`
* :php:`$content`
* :php:`$R_URI`
* :php:`$pageinfo`
* :php:`$storeTitle`
* :php:`$firstEl`
* :php:`$errorC`
* :php:`$newC`
* :php:`$viewId`
* :php:`$viewId_addParams`
* :php:`$modTSconfig`
* :php:`$dontStoreDocumentRef`
Some properties are set to :php:`@internal` and may vanish or be set to protected in v10 without further notice:
* [not scanned] :php:`$data`
* :php:`$elementsData`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* :php:`preInit()`
* :php:`doProcessData()`
* :php:`processData()`
* [not scanned] :php:`init()`
* [note scanned] :php:`main()`
* :php:`makeEditForm()`
* :php:`compileForm()`
* :php:`shortCutLink()`
* :php:`openInNewWindowLink()`
* :php:`languageSwitch()`
* :php:`localizationRedirect()`
* :php:`getLanguages()`
* :php:`fixWSversioningInEditConf()`
* :php:`getRecordForEdit()`
* :php:`compileStoreDat()`
* :php:`getNewIconMode()`
* :php:`closeDocument()`
* :php:`setDocument()`
Two slots retrieve a parent object that will throw deprecation warnings if properties are read or
methods are called. They receive a :php:`ServerRequestInterface $request` argument as second
argument instead:
* :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInitAfter`
* :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInit`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`EditDocumentController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$data` are not registered and will not be found
if an extension uses that on an instance of :php:`EditDocumenController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Installations may alse be affected, if the two signals
:php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInitAfter` and
:php:`TYPO3\CMS\Backend\Controller\EditDocumentController::InitAfter`
are used and the slot write to or reads from first argument "parent object".
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
Registered slots for the two signals :php:`preInitAfter` and :php:`initAfter` should read
(not write!) from new second argument :php:`$request` instead.
Slots that currently write to "parent object" should instead be turned into a PSR-15 middleware
to manipulate :php:`$request` before :php:`EditDocumentController` is called.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,90 @@
.. include:: /Includes.rst.txt
.. _deprecation-84222:
========================================================
Deprecation: #84222- Usage of GridContainer form element
========================================================
See :issue:`84222`
Description
===========
The form element `GridContainer` is useless, buggy and will be removed in v10.
Impact
======
Usage of the form element `GridContainer` will trigger a deprecation warning:
Affected installations
======================
All instances who make usage of the form element `GridContainer`.
Migration
=========
Remove the `GridContainer` form elements from your form definition and use `GridRow` child elements only.
Change
.. code-block:: yaml
type: Form
identifier: test
label: test
prototypeName: standard
renderables:
-
type: Page
identifier: page-1
label: Step
renderables:
-
type: GridContainer
identifier: gridcontainer-1
label: 'Grid: Container'
renderables:
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
defaultValue: ''
type: Text
identifier: text-1
label: Text
to
.. code-block:: yaml
type: Form
identifier: test
label: test
prototypeName: standard
renderables:
-
type: Page
identifier: page-1
label: Step
renderables:
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
defaultValue: ''
type: Text
identifier: text-1
label: Text
.. index:: Frontend, ext:form, NotScanned
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _deprecation-84273:
=============================================================================================
Deprecation: #84273 - Protected methods and properties in FileSystemNavigationFrameController
=============================================================================================
See :issue:`84273`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\FileSystemNavigationFrameController`.
A series of class properties have been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`$content`
* :php:`$foldertree`
* :php:`$currentSubScript`
* :php:`$cMR`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* :php:`initPage()`
* [not scanned] :php:`main()`
* [not scanned] :php:`init()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`FileSystemNavigationFrameController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`FileSystemNavigationFrameController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-84274:
================================================================================
Deprecation: #84274 - Protected methods and properties in LoginController
================================================================================
See :issue:`84274`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\LoginController`.
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php:`makeInterfaceSelectorBox()`
Impact
======
Calling above method on an instance of
:php:`LoginController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find all usages, but may also find some false positives. In general all extensions
that set properties or call methods except :php:`formAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-84275:
==========================================================================
Deprecation: #84275 - Protected methods and properties in LogoutController
==========================================================================
See :issue:`84275`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\LogoutController`.
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* :php:`logout()`
Impact
======
Calling above method on an instance of
:php:`LogoutController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find all usages, but may also find some false positives.
In general all extensions that call :php:`logout()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _deprecation-84284:
=====================================================================================================
Deprecation: #84284 - Protected methods and properties in ContentElement/ElementInformationController
=====================================================================================================
See :issue:`84284`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\ContentElement\ElementInformationController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`table`
* [not scanned] :php:`uid`
* :php:`access`
* [not scanned] :php:`type`
* :php:`pageInfo`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`init()`
* [not scanned] :php:`main()`
* :php:`getLabelForTableColumn()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`ElementInformationController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
Since some of the deprecated methods and properties have quite common names and would produce false positives, their
usage is not detected by the extension scanner.
.. index:: Backend, PHP-API, PartiallyScanned, ext:backend
@@ -0,0 +1,60 @@
.. include:: /Includes.rst.txt
.. _deprecation-84285:
===============================================================================
Deprecation: #84285 - Protected methods and properties in MoveElementController
===============================================================================
See :issue:`84285`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\ContentElement\MoveElementController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`sys_language`
* :php:`page_id`
* [not scanned] :php:`table`
* :php:`R_URI`
* :php:`input_moveUid`
* :php:`moveUid`
* :php:`makeCopy`
* :php:`perms_clause`
* [not scanned] :php:`content`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`init()`
* [not scanned] :php:`main()`
Additionally :php:`$GLOBALS['SOBE']` is not set by the :php:`MoveElementController` constructor anymore.
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`MoveElementController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`MoveElementController`.
In general all extensions that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _deprecation-84289:
===============================================================================
Deprecation: #84289 - Use ServerRequestInterface in File/CreateFolderController
===============================================================================
See :issue:`84289`
Description
===========
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`$number`
* :php:`$folderNumber`
* :php:`$target`
* [not scanned] :php:`$title`
* [not scanned] :php:`$returnUrl`
* :php:`$content`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`CreateFolderController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$title` are not registered and will not be found
if an extension uses that on an instance of :php:`CreateFolderController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned, ext:backend
@@ -0,0 +1,53 @@
.. include:: /Includes.rst.txt
.. _deprecation-84295:
===========================================================================
Deprecation: #84295 - Use ServerRequestInterface in File/EditFileController
===========================================================================
See :issue:`84295`
Description
===========
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`$origTarget`
* :php:`$target`
* :php:`$doc`
* [not scanned] :php:`$returnUrl`
* [not scanned] :php:`$content`
* [not scanned] :php:`$title`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php: `getButtons()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`FileEditController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$title` are not registered and will not be found
if an extension uses that on an instance of :php:`FileEditController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,60 @@
.. include:: /Includes.rst.txt
.. _deprecation-84307:
=====================================================================================
Deprecation: #84307 - Protected methods and properties in NewContentElementController
=====================================================================================
See :issue:`84307`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`id`
* :php:`sys_language`
* :php:`R_URI`
* :php:`colPos`
* :php:`uid_pid`
* [not scanned] :php:`modTSconfig`
* [not scanned] :php:`doc`
* [not scanned] :php:`content`
* :php:`access`
* [not scanned] :php:`config`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`init()`
* [not scanned] :php:`main()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`NewContentElementController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`NewContentElementController`.
In general all extensions that set properties or call methods except :php:`mainAction()` or :php:`wizardAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,64 @@
.. include:: /Includes.rst.txt
.. _deprecation-84321:
================================================================================
Deprecation: #84321 - Protected methods and properties in AddController
================================================================================
See :issue:`84321`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\Wizard\AddController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`$content`
* :php:`$processDataFlag`
* [not scanned] :php:`$pid`
* [not scanned] :php:`$table`
* [not scanned] :php:`$id`
* :php:`$P`
* :php:`$returnEditConf`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`init()`
* [not scanned] :php:`main()`
Due to refactoring the :php:`init()` method does not perform a redirect anymore in case no ``pid``
was set by GET params. This redirect has been moved and will be performed for legacy code by the
deprecated :php:`main()` method now.
Additionally :php:`$GLOBALS['SOBE']` is not set by the :php:`AddController` constructor anymore.
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`AddController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`AddController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _deprecation-84324:
=======================================================================
Deprecation: #84324 - Use ServerRequestInterface in File/FileController
=======================================================================
See :issue:`84324`
Description
===========
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php: `initClipboard()`
* :php: `finish()`
Impact
======
Calling one of the above methods on an instance of
:php:`FileController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. In general all extensions
that call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _deprecation-84326:
==============================================================================
Deprecation: #84326 - Protected methods and properties in FileUploadController
==============================================================================
See :issue:`84326`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\File\FileUploadController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`title`
* :php:`target`
* :php:`returnUrl`
* [not scanned] :php:`content`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php:`renderUploadForm()`
Additionally :php:`$GLOBALS['SOBE']` is not set by the :php:`FileUploadController` constructor anymore.
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`FileUploadController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`FileUploadController`.
In general all extensions that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _deprecation-84327:
=======================================================================================
Deprecation: #84327 - Deprecated public methods and properties in Wizard/EditController
=======================================================================================
See :issue:`84327`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\Wizard\EditController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`$P`
* :php:`$doClose`
The following method will be refactored/set to protected in v10 and should no longer be used:
* [not scanned] :php:`main()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`Wizard/EditController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will detect only detect usage of :php:`$doClose`, other calls are not scanned to prevent false positives.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned, ext:backend
@@ -0,0 +1,55 @@
.. include:: /Includes.rst.txt
.. _deprecation-84332:
==============================================================================
Deprecation: #84332 - Protected methods and properties in RenameFileController
==============================================================================
See :issue:`84332`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\File\RenameFileController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`title`
* :php:`target`
* :php:`returnUrl`
* [not scanned] :php:`content`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
Additionally :php:`$GLOBALS['SOBE']` is not set by the :php:`RenameFileController` constructor anymore.
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`RenameFileController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`RenameFileController`.
In general all extensions that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,54 @@
.. include:: /Includes.rst.txt
.. _deprecation-84334:
===============================================================================
Deprecation: #84334 - Protected methods and properties in ReplaceFileController
===============================================================================
See :issue:`84334`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\File\RenameFileController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`doc`
* :php:`title`
* :php:`uid`
* :php:`returnUrl`
* [not scanned] :php:`content`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`ReplaceFileController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`ReplaceFileController`.
In general all extensions that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _deprecation-84337:
================================================================================
Deprecation: #84337 - Protected methods and properties in ListController
================================================================================
See :issue:`84337`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\Wizard\ListController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`pid`
* [not scanned] :php:`P`
* [not scanned] :php:`table`
* [not scanned] :php:`id`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
Impact
======
Calling above method on an instance of
:php:`ListController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find all usages, but may also find some false positives. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _deprecation-84338:
================================================================================
Deprecation: #84338 - Protected methods and properties in TableController
================================================================================
See :issue:`84388`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\Wizard\TableController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`$content`
* :php:`$inputStyle`
* :php:`$xmlStorage`
* :php:`$columnsOnly`
* :php:`$numNewRows`
* :php:`$colsFieldsName`
* [not scanned] :php:`$P`
* :php:`$TABLECFG`
* :php:`$tableParsing_quote`
* :php:`$tableParsing_delimiter`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [note scanned] :php:`main()`
* :php:`tableWizard()`
* :php:`getConfigCode()`
* :php:`getTableHTML()`
* :php:`changeFunc()`
* :php:`cfgArray2CfgString()`
* :php:`cfgString2CfgArray()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`TableController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`TableController`. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _deprecation-84341:
=============================================================================
Deprecation: #84341 - Protected methods and properties in NewRecordController
=============================================================================
See :issue:`84341`
Description
===========
This file is about third party usage of :php:`TYPO3\CMS\Backend\Controller\NewRecordController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* [not scanned] :php:`pageinfo`
* :php:`pidInfo`
* :php:`newPagesInto`
* :php:`newContentInto`
* :php:`newPagesAfter`
* :php:`web_list_modTSconfig`
* :php:`allowedNewTables`
* :php:`deniedNewTables`
* :php:`web_list_modTSconfig_pid`
* :php:`allowedNewTables_pid`
* :php:`deniedNewTables_pid`
* :php:`code`
* :php:`R_URI`
* [not scanned] :php:`id`
* :php:`returnUrl`
* :php:`pagesOnly`
* [not scanned] :php:`perms_clause`
* [not scanned] :php:`content`
* :php:`tRows`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php:`pagesOnly()`
* :php:`regularNew()`
* :php:`sortNewRecordsByConfig()`
* :php:`linkWrap()`
Impact
======
Calling one of the above methods or accessing one of the above properties on an instance of
:php:`NewRecordController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like :php:`$content` are not registered and will not be found
if an extension uses that on an instance of :php:`NewRecordController`.
In general all extensions that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-84369:
=================================================================================
Deprecation: #84369 - Protected methods and properties in UserSettingsController
=================================================================================
See :issue:`84369`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\UserSettingsController`.
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`process()`
Impact
======
Calling above method on an instance of :php:`UserSettingsController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find all usages, but may also find some false positives.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _deprecation-84374:
======================================================================================
Deprecation: #84374 - Protected methods and properties in SimpleDataHandlerController
======================================================================================
See :issue:`84374`
Description
===========
This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\SimpleDataHandlerController`.
A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:
* :php:`flags`
* [not scanned] :php:`data`
* [not scanned] :php:`cmd`
* :php:`mirror`
* :php:`cacheCmd`
* [not scanned] :php:`redirect`
* :php:`CB`
* [not scanned] :php:`tce`
All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:
* [not scanned] :php:`main()`
* :php:`initClipboard()`
Impact
======
Calling above method on an instance of
:php:`SimpleDataHandlerController` will throw a deprecation warning in v9 and a PHP fatal in v10.
Affected Installations
======================
The extension scanner will find all usages, but may also find some false positives. In general all extensions
that set properties or call methods except :php:`mainAction()` are affected.
Migration
=========
In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _deprecation-84399:
======================================================================
Deprecation: #84399 - Class RecordList renamed to RecordListController
======================================================================
See :issue:`84399`
Description
===========
The PHP class :php:`TYPO3\CMS\Recordlist\RecordList` has been renamed to
:php:`TYPO3\CMS\Recordlist\Controller\RecordListController`
Impact
======
The old class name has been registered as class alias and will still work.
Old class name usage however is discouraged and should be avoided, the
alias will vanish with core version 10.
Affected Installations
======================
Extensions that hook into the list module may be affected if type hinting
with the old classes as :php:`$parentObject`.
The extension scanner will find affected extensions using the old class name.
Migration
=========
Use new class name instead.
.. index:: Backend, PHP-API, FullyScanned, ext:recordlist
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-84407:
==================================================================
Deprecation: #84407 - AJAX request methods in RsaEncryptionEncoder
==================================================================
See :issue:`84407`
Description
===========
All methods related to AJAX requests in :php:`\TYPO3\CMS\Rsaauth\RsaEncryptionEncoder` have been marked as deprecated:
* :php:`getRsaPublicKeyAjaxHandler()`
The `rsa_publickey` AJAX route has been adapted to use the
:php:`\TYPO3\CMS\Rsaauth\Controller\RsaPublicKeyGenerationController` which was already used for RSA key retrieval via
eID in the frontend.
Impact
======
Calling the above method on an instance of :php:`RsaEncryptionEncoder` will throw a deprecation warning in v9 and a
PHP fatal in v10.
Affected Installations
======================
All extensions that call the deprecated method are affected.
Migration
=========
Extensions should use the AJAX route `rsa_publickey` instead of the deprecated method.
.. index:: Backend, Frontend, PHP-API, FullyScanned
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _deprecation-84407-1668719171:
========================================================================================
Deprecation: #84407 - RSA public key generation without "Content-Type: application/json"
========================================================================================
See :issue:`84407`
Description
===========
The default response of the :php:`RsaPublicKeyGenerationController` eID script was broken since it
claimed to return a JSON response but in fact returned a simple string containing a concatenation of
public key modulus and exponent.
The eID script now returns a proper JSON response if requested with the
`Content-Type: application/json` HTTP header:
.. code-block:: javascript
{
"publicKeyModulus": "ABC...",
"exponent": "10..."
}
Impact
======
Extensions performing custom AJAX requests against the :php:`RsaPublicKeyGenerationController`
eID script without the `Content-Type: application/json` HTTP header will trigger a deprecation
warning in v9 and an error response in v10.
Affected Installations
======================
Sites which do not use the default RSA encryption JavaScript to handle form value encryption.
Migration
=========
The default RSA encryption JavaScript has been migrated, custom implementations must add the
`Content-Type: application/json` HTTP header to AJAX requests and parse the JSON response
accordingly.
.. index:: Backend, Frontend, JavaScript, PHP-API, FullyScanned, ext:rsaauth
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-84409:
====================================================================================
Deprecation: #84409 - ImageManipulationWizard renamed to ImageManipulationController
====================================================================================
See :issue:`84409`
Description
===========
The PHP class :php:`TYPO3\CMS\Backend\Form\Wizard\ImageManipulationWizard` has been renamed to
:php:`TYPO3\CMS\Backend\Controller\Wizard\ImageManipulationController`.
Impact
======
The old class name has been registered as class alias and will still work.
Old class name usage however is discouraged and should be avoided, the
alias will vanish with core version 10.
Affected Installations
======================
Extensions which use the old class name are affected. The extension scanner will find affected extensions using the old
class name.
Migration
=========
Use new class name instead.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-84410:
========================================================================
Deprecation: #84410 - CodeCompletion renamed to CodeCompletionController
========================================================================
See :issue:`84410`
Description
===========
The PHP class :php:`TYPO3\CMS\T3editor\CodeCompletion` has been renamed to
:php:`TYPO3\CMS\T3editor\Controller\CodeCompletionController`.
Impact
======
The old class name has been registered as class alias and will still work.
Old class name usage however is discouraged and should be avoided, the alias will vanish with core version 10.
Affected Installations
======================
Extensions which use the old class name are affected. The extension scanner will find affected extensions using the old
class name.
Migration
=========
Use new class name instead.
.. index:: Backend, PHP-API, FullyScanned, ext:t3editor
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-84411:
========================================================================================
Deprecation: #84411 - TypoScriptReferenceLoader renamed to TypoScriptReferenceController
========================================================================================
See :issue:`84411`
Description
===========
The PHP class :php:`TYPO3\CMS\T3editor\TypoScriptReferenceLoader` has been renamed to
:php:`TYPO3\CMS\T3editor\Controller\TypoScriptReferenceController`.
Impact
======
The old class name has been registered as class alias and will still work.
Old class name usage however is discouraged and should be avoided, the alias will vanish with core version 10.
Affected Installations
======================
Extensions which use the old class name are affected. The extension scanner will find affected extensions using the old
class name.
Migration
=========
Use new class name instead.
.. index:: Backend, PHP-API, FullyScanned, ext:t3editor
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _deprecation-84463:
=========================================================================
Deprecation: #84463 - PageTsConfig option mod.web_list.newWizards dropped
=========================================================================
See :issue:`84463`
Description
===========
The widely unknown PageTsConfig option :typoscript:`mod.web_list.newWizards` has been enabled by default and dropped.
PHP property :php:`newWizards` of class :php:`TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList` has been deprecated
along the way.
Impact
======
The "+" sign in the list module of `pages` table now by default links to the wizard to select the new page position.
The "+" sign in the list module of `tt_content` table now by default links to the new content element wizard in a modal.
Affected Installations
======================
Most installations should not be affected by the code change, the extension scanner will find extensions using the
mentioned class property.
Migration
=========
Do not use property :php:`newWizards` anymore, drop the PageTsConfig option if used.
.. index:: Backend, PHP-API, TSConfig, PartiallyScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-84530:
==========================================================================
Deprecation: #84530 - Default values from globals deprecated in FormEngine
==========================================================================
See :issue:`84530`
Description
===========
Setting default values for new database records from GET/POST `defVals` parameter has been marked as deprecated in 9.2
and will be removed in version 10.
Impact
======
If not already provided within the new configuration setting `$result['defaultValues']`, the default values are applied
from GET/POST `defVals` configuration, but will trigger a deprecation warning.
Affected Installations
======================
Installations that use the FormEngine within extensions might need to be changed.
Migration
=========
Use the `defaultValues` configuration to set default values for new database rows
in the \TYPO3\CMS\Backend\Form\FormDataCompiler::compile call.
.. index:: Backend, PHP-API, NotScanned
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _deprecation-84549:
=============================================================
Deprecation: #84549 - Deprecate methods in CoreVersionService
=============================================================
See :issue:`84549`
Description
===========
The core version service has been refactored to make use of the new REST API available via
`https://get.typo3.org/v1/api/doc <https://get.typo3.org/v1/api/doc>`_.
Due to that refactoring multiple methods in class :php:`CoreVersionService` have been marked as deprecated:
* :php:`getDownloadBaseUrl()`
* :php:`isYoungerPatchDevelopmentReleaseAvailable()`
* :php:`getYoungestPatchDevelopmentRelease()`
* :php:`updateVersionMatrix()`
Impact
======
Usage of any of these methods will trigger a PHP :php:`E_USER_DEPRECATED` error.
Affected Installations
======================
Any that use the mentioned methods.
Migration
=========
* For :php:`getDownloadBaseUrl()` use `https://get.typo3.org` directly
* For :php:`isYoungerPatchDevelopmentReleaseAvailable()` use :php:`isYoungerPatchReleaseAvailable()`
as the current releases do not make use of development suffixes (like alpha or rc) anymore
* For :php:`getYoungestPatchDevelopmentRelease()` use :php:`getYoungestPatchRelease()`
* :php:`updateVersionMatrix()` needs no replacement method - instead the necessary information can be
fetched directly via the REST API
.. index:: Backend, PHP-API, PartiallyScanned, ext:install
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-84637:
========================================================================================
Deprecation: #84637 - TemplateService->linkData() functionality moved in PageLinkBuilder
========================================================================================
See :issue:`84637`
Description
===========
In the process of streamlining the link generation to pages in the Frontend, the master method
:php:`TemplateService->linkData` and all functionality regarding resolving of the according Mount Point parameters
have been migrated into the TypoLink PageLinkBuilder class.
The following methods have been marked as deprecated:
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->linkData`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->getFromMPmap`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->initMPmap_create`
Impact
======
Calling any of the methods above will trigger a PHP deprecation warning.
Affected Installations
======================
Any TYPO3 installations with third-party extensions calling the methods directly, extensions using the
existing hook :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['linkData-PostProc']`
will work the same way.
Migration
=========
Access the corresponding new methods within :php:`PageLinkBuilder` instead of the TemplateService-related
methods, or use the existing hook to modify parameters for a URL.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _deprecation-84641:
===============================================================================================================
Deprecation: #84641 - Deprecated AdminPanel related methods and properties in FrontendBackendUserAuthentication
===============================================================================================================
See :issue:`84641`
Description
===========
The admin panel has been extracted into an own extension. To enable users to de-activate the admin panel completely,
the hard coupling between the extension and other parts of the core had to be resolved. The admin panel now takes care
of its own initialization and provides API methods related to its functionality.
The following API methods and properties located in `FrontendBackendUserAuthentication` have been marked as deprecated:
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$adminPanel`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$extAdminConfig`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$extAdmEnabled`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::initializeAdminPanel()`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::initializeFrontendEdit()`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::isFrontendEditingActive()`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::displayAdminPanel()`
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::isAdminPanelVisible()`
Impact
======
Using any of the methods will trigger a deprecation warning.
Affected Installations
======================
Any installation directly calling one of the mentioned methods or properties.
Migration
=========
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$adminPanel` - use `MainController` of EXT:adminpanel instead
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$extAdminConfig` - load directly from TSConfig if needed
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::$extAdmEnabled` - check directly against TSConfig if necessary
Both initialization methods `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::initializeAdminPanel` and
`\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::initializeFrontendEdit` were rewritten as PSR-15 middlewares,
remove any calls as they are not necessary anymore.
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::isFrontendEditingActive` and `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::isAdminPanelVisible` - check against TSFE directly
* `\TYPO3\CMS\Backend\FrontendBackendUserAuthentication::displayAdminPanel` - use `MainController::render()` instead
.. index:: Frontend, PHP-API, PartiallyScanned
@@ -0,0 +1,26 @@
.. include:: /Includes.rst.txt
.. _feature-48013:
====================================================
Feature: #48013 - Add support for progressive images
====================================================
See :issue:`48013`
Description
===========
It is now possible to generate progressive images by setting `$GLOBALS['TYPO3_CONF_VARS'][GFX][processor_interlace]` in
the Settings Module.
The possible values to set are identical to the ones in defined in the GM / IM manuals.
Possible values by the time of writing are:
* None
* Line
* Plane
* Partition
.. index:: Frontend, Backend
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-61981:
=====================================================
Feature: #61981 - Search all fields in Suggest Wizard
=====================================================
See :issue:`61981`
Description
===========
Suggest Wizard search terms are split by `+`.
This allows to search for a combination of strings in any given field.
Impact
======
Searching for the term "elements+basic" will find the following results:
* elements basic
* elements rte basic
* basic rte elements
.. index:: Backend, TCA
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-69187:
==========================================================================
Feature: #69187 - EXT:Scheduler: Create task group from add/edit task form
==========================================================================
See :issue:`69187`
Description
===========
It is now possible to create a new scheduler task group while editing or creating a task.
Impact
======
It is no longer needed to switch to the list module and create a new task group on page 0 before editing or creating a
scheduler task.
.. index:: Backend, ext:scheduler
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _feature-71911:
==============================================================================
Feature: #71911 - Add constraint hook in DatabaseRecordList->makeSearchString
==============================================================================
See :issue:`71911`
Description
===========
A newly introduced hook in `DatabaseRecordList->makeSearchString` allows to modify the constraints which are applied to
the search string.
Example
=======
An example implementation could look like this:
:file:`EXT:my_site/ext_localconf.php`
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['makeSearchStringConstraints'][1313131313] =
\MyVendor\MySite\Hooks\DatabaseRecordListHook::class;
:file:`EXT:my_site/Classes/Hooks/DatabaseRecordListHook.php`
.. code-block:: php
namespace MyVendor\MySite\Hooks;
class DatabaseRecordListHook
{
public function makeSearchStringConstraints(
\TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder
array $constraints,
string $searchString,
string $table,
int $currentPid,
) {
return $constraints;
}
}
.. index:: Backend, Database, PHP-API
@@ -0,0 +1,79 @@
.. include:: /Includes.rst.txt
.. _feature-76349:
=====================================================================
Feature: #76349 - Integrate Swift Mailer's spool transport into TYPO3
=====================================================================
See :issue:`76349`
Description
===========
The default behavior of the TYPO3 mailer is to send the email messages immediately. You may, however, want to avoid
the performance hit of the communication to the email server, which could cause the user to wait for the next page to
load while the email is being sent. This can be avoided by choosing to "spool" the emails instead of sending them directly.
This makes the mailer not attempt to send the email message but instead save it somewhere such as a file. Another
process can then read from the spool and take care of sending the emails in the spool. Currently only spooling to file
or memory is supported.
.. note::
If you are running a multi-head environment consider using a different solution for mail spooling
than the options presented here.
Spool Using Memory
==================
When you use spooling to store the emails to memory, they will get sent right before the kernel terminates. This means
the email only gets sent if the whole request got executed without any unhandled exception or any errors. To configure
this spool, use the following configuration:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_type'] = 'memory';
Spool Using Files
=================
When using the filesystem for spooling, you need to define in which folder TYPO3 stores the spooled files.
This folder will contain files for each email in the spool. So make sure this directory is writable by TYPO3 and not
accessible to the world (outside of the webroot).
In order to use the spool with files, use the following configuration:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_type'] = 'file';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_filepath'] = '/folder/of/choice';
Now, when TYPO3 is instructed to send an email, it will not actually be sent but instead added to the spool. Sending the
messages from the spool is done separately. There is a console command to send the messages in the spool:
.. code-block:: php
./typo3/sysext/core/bin/typo3 swiftmailer:spool:send
It has an option to limit the number of messages to be sent:
.. code-block:: php
./typo3/sysext/core/bin/typo3 swiftmailer:spool:send --message-limit=10
You can also set the time limit in seconds:
.. code-block:: php
./typo3/sysext/core/bin/typo3 swiftmailer:spool:send --time-limit=10
Of course you will not want to run this manually in reality. Instead, the console command should be triggered by a cron
job or scheduled task and run at a regular interval.
.. index:: PHP-API
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _feature-77685:
==================================================================================
Feature: #77685 - Create a save and open copy button when saving a content element
==================================================================================
See :issue:`77685`
Description
===========
Editors can no clone a new record by using the new button "clone" in the edit record form for already persisted records.
If there are not persisted changes when pressing the button a modal appears, providing the following 3 options:
* abort
* clone the content element without saving the current changes
* save the changes and clones the record afterwards.
The copy of the record will by put right below the record itself.
After saving, the edit record form opens for the cloned element.
Impact
======
Editors are able to make a duplicate of a record with just a single click. They don't have to copy & paste.
.. index:: Backend
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _feature-78332:
======================================================================================
Feature: #78332 - Allow setting a default replyTo-email-address for notification-mails
======================================================================================
See :issue:`78332`
Description
===========
Two new LocalConfiguration settings have been introduced:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailReplyToAddress']
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailReplyToName']
Also a new function to build a mail address for SwiftMailer from these settings is introduced:
.. code-block:: php
MailUtility::getSystemReplyTo()
If no default reply-to address is set this function will return an empty array.
This function is used in :php:`ContentObjectRenderer::sendNotifyEmail()` to set a ReplyTo address in case no address is
supplied in the function parameters.
In other places where notifications are sent for e.g. (failed) login attempts, reports and where the notification uses
the system from address this function is also used.
Impact
======
It's now possible to set a reply-to address for notification mails from TYPO3. Extensions can also use this system
reply-to address by calling :php:`MailUtility::getSystemReplyTo()`.
.. index:: LocalConfiguration, PHP-API
@@ -0,0 +1,17 @@
.. include:: /Includes.rst.txt
.. _feature-80124:
================================================================================
Feature: #80124 - EXT:form - allow setting of validation messages in form editor
================================================================================
See :issue:`80124`
Description
===========
A new form element property "validationErrorMessages" has been introduced. It allows the definition of custom validation
error messages. Within the form editor, one can set those error messages for all existing validators.
.. index:: Backend, Frontend, ext:form, NotScanned
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _feature-80263:
=======================================================
Feature: #80263 - Add a new signal slot for user switch
=======================================================
See :issue:`80263`
Description
===========
A new signal is emitted once an admin user switches into another user via the Switch-To functionality within TYPO3 core.
Use the following code to use the signal
.. code-block:: php
$dispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$dispatcher->connect(
\TYPO3\CMS\Beuser\Controller\BackendUserController::class,
'switchUser',
\MyVendor\MyExtension\Slots\BackendUserController::class,
'switchUser'
);
.. index:: Backend, PHP-API, ext:beuser
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _feature-82704:
============================================================================
Feature: #82704 - Add readonly and required attributes to TextareaViewHelper
============================================================================
See :issue:`82704`
Description
===========
The view helper `f:form.textarea` now supports the attributes `readonly` and `required`.
Impact
======
The attributes `readonly` and `required` may be set by using the `f:form.textarea` view helper.
Example:
.. code-block:: html
<!-- Set required attribute -->
<f:form.textarea name="foobar" required="1" />
<!-- Set readonly attribute -->
<f:form.textarea name="foobar" readonly="1" />
.. index:: Fluid
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _feature-83460:
========================================================
Feature: #83460 - Hide restricted columns in page module
========================================================
See :issue:`83460`
Description
===========
In order to get a cleaner page layout view for backend users, an option to hide the restricted columns in page module
has been introduced.
When restricting a list of columns to the user, the restricted columns are rendered with a message that the user has no
access to these columns which might be undesired in certain cases (imagine a user having access to only one of 20
columns total).
With assigning the following setting to the UserTS, these columns are hidden and the user will only see the columns they
are allowed to edit or add content to:
`mod.web_layout.hideRestrictedCols = 1`
If you use backend layouts to provide an abstract view of the frontend, hiding the columns with this setting **will**
break your layout, so handle it with care.
.. index:: Backend
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-83506:
========================================================
Feature: #83506 - Retrieve session data in TS conditions
========================================================
See :issue:`83506`
Description
===========
As the session API has been modified, it is no longer possible to access session data in TypoScript conditions by using
the formerly public property `sesData` of the frontend user object.
So now there is a more direct way using the keyword `session` with the same function:
.. code-block:: typoscript
[globalVar = session:foo|bar = 1234567]
.. index:: Frontend, TypoScript
@@ -0,0 +1,65 @@
.. include:: /Includes.rst.txt
.. _feature-83556:
===================================================
Feature: #83556 - Add toggle switches to FormEngine
===================================================
See :issue:`83556`
Description
===========
In order to give FormEngine a fresher look we add the following `renderTypes` to `type=check`.
renderType checkboxToggle
=========================
A pure toggle switch. No additional configuration is necessary.
Its state can be inverted via `invertStateDisplay`.
renderType checkboxLabeledToggle
================================
A toggle switch where both states can be labelled (ON/OFF, Visible / Hidden or alike).
Its state can be inverted via `invertStateDisplay`
.. code-block:: php
'items' => [
[
0 => 'foo',
1 => '',
'labelChecked' => 'Enabled',
'labelUnchecked' => 'Disabled',
'invertStateDisplay' => false
]
]
renderType default
=============================
A toggle that toggles between two icon identifiers.
By default the toggle icons are visually designed to mimic a checkbox.
Its state can be inverted via `invertStateDisplay`.
.. code-block:: php
'items' => [
[
0 => 'foo',
1 => '',
'iconIdentifierChecked' => 'styleguide-icon-toggle-checked',
'iconIdentifierUnchecked' => 'styleguide-icon-toggle-checked',
'invertStateDisplay' => false
]
]
.. index:: Backend, PHP-API, TCA
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-83711:
=============================================================
Feature: #83711 - FeatureFlag: unifiedPageTranslationHandling
=============================================================
See :issue:`83711`
Description
===========
The feature switch `unifiedPageTranslationHandling` is active for all new installations, but not active for existing
installations.
It does the following when active:
* All DB schema migrations decide to drop `pages_language_overlay`
* TCA migration no longer throws a deprecation info (but still unsets `pages_language_overlay`)
Once the Update Wizard for migrating `pages_language_overlay` records is done, the feature is enabled.
.. index:: Backend, Frontend
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _feature-83725:
=====================================================
Feature: #83725 - Support for PSR-15 HTTP middlewares
=====================================================
See :issue:`83725`
Description
===========
Support for PSR-15 style HTTP middlewares has been added for frontend and backend requests.
PSR-15 style middlewares are intended to be used to move common request and response processing away from
the application layer into (possibly reusable) components.
Middlewares are concentric layers surrounding other middlewares (so called inner middlewares) or request handlers;
that means they can perform pre- and postprocessing of request and response objects (PSR-7). They allow to enrich or
exchange PSR-7 objects in order to add functionality or to perform early returns (without invoking the core application).
Common middleware usecases are layers for authentication, authorization, security enforcement, or the conversion of
exceptions (like TYPO3's `PageNotFoundException`) into HTTP response objects.
Adding PSR-15 to TYPO3 allows to restructure TYPO3's existing PHP classes into smaller chunks, while giving developers
the possibility to add own middlewares at a specific position in the middleware chain (via TYPO3's dependency ordering).
Middlewares in TYPO3 are added into middleware stacks; not every middleware needs to be called for every HTTP request.
Currently TYPO3 supports a generic "frontend" and a "backend" stack; they're run for any TYPO3 Frontend or TYPO3 Backend
request respectively. These stacks are processed before the actual Request Handler (which implements the PSR-15
RequestHandlerInterface) handles the application logic. The Request Handler produces a PSR-7 Response object which is
propagated back through all middlewares of the stack.
Impact
======
To add a middleware to the "frontend" or "backend" middleware stack, create the
:file:`Configuration/RequestMiddlewares.php` in the respective extension:
.. code-block:: php
return [
// stack name: currently 'frontend' or 'backend'
'frontend' => [
'middleware-identifier' => [
'target' => \ACME\Ext\Middleware::class,
'description' => '',
'before' => [
'another-middleware-identifier',
],
'after' => [
'yet-another-middleware-identifier',
],
]
]
];
If extensions need to shut down or substitute existing middlewares with an own solution, they can
disable an existing middleware by adding the following code in :file:`Configuration/RequestMiddlewares.php`: of their
extension.
.. code-block:: php
return [
'frontend' => [
'middleware-identifier' => [
'disabled' => true,
],
],
];
.. index:: Backend, Frontend, PHP-API
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _feature-83736:
=================================================================================
Feature: #83736 - Extended PSR-7 requests with TYPO3 normalized server parameters
=================================================================================
See :issue:`83736`
Description
===========
The PSR-7 based `ServerRequest` objects created by TYPO3 now contain a TYPO3-specific attribute object for normalized
server parameters that for instance resolves variables if the instance is behind a reverse proxy. This substitutes
:php:`GeneralUtility::getIndpEnv()`.
The object is **for now** available from :php:`ServerRequestInterface $request` objects as attribute. The request object
is given to controllers, example:
.. code-block:: php
$normalizedParams = $request->getAttribute('normalizedParams');
$requestPort = $normalizedParams->getRequestPort();
The request object is also available as a global variable in :php:`$GLOBALS['TYPO3_REQUEST']`. This is a workaround for
the core which has to access the server parameters at places where $request is not available. So, while this object is
globally available during any HTTP request, it is considered bad practice to use it. The global object will vanish
later if the core code has been refactored enough to not rely on it anymore.
For now, class :php:`NormalizedParams` is a one-to-one transition of :php:`GeneralUtility::getIndpEnv()`, the old
arguments can be substituted with these calls:
- :php:`SCRIPT_NAME` is now :php:`->getScriptName()`
- :php:`SCRIPT_FILENAME` is now :php:`->getScriptFilename()`
- :php:`REQUEST_URI` is now :php:`->getRequestUri()`
- :php:`TYPO3_REV_PROXY` is now :php:`->isBehindReverseProxy()`
- :php:`REMOTE_ADDR` is now :php:`->getRemoteAddress()`
- :php:`HTTP_HOST` is now :php:`->getHttpHost()`
- :php:`TYPO3_DOCUMENT_ROOT` is now :php:`->getDocumentRoot()`
- :php:`TYPO3_HOST_ONLY` is now :php:`->getRequestHostOnly()`
- :php:`TYPO3_PORT` is now :php:`->getRequestPort()`
- :php:`TYPO3_REQUEST_HOST` is now :php:`->getRequestHost()`
- :php:`TYPO3_REQUEST_URL` is now :php:`->getRequestUrl()`
- :php:`TYPO3_REQUEST_SCRIPT` is now :php:`->getRequestScript()`
- :php:`TYPO3_REQUEST_DIR` is now :php:`->getRequestDir()`
- :php:`TYPO3_SITE_URL` is now :php:`->getSiteUrl()`
- :php:`TYPO3_SITE_PATH` is now :php:`->getSitePath()`
- :php:`TYPO3_SITE_SCRIPT` is now :php:`->getSiteScript()`
- :php:`TYPO3_SSL` is now :php:`->isHttps()`
Some further old :php:`getIndpEnv()` arguments directly access :php:`$request->serverParams()` and do not apply any
normalization. These have been transferred to the new class, too, but will be deprecated later if the core does not use
these anymore:
- :php:`PATH_INFO` is now :php:`->getPathInfo()`, but better use :php:`->getScriptName()` instead
- :php:`HTTP_REFERER` is now :php:`->getHttpReferer()`, but better use :php:`$request->getServerParams()['HTTP_REFERER']` instead
- :php:`HTTP_USER_AGENT` is now :php:`->getHttpUserAgent()`, but better use :php:`$request->getServerParams()['HTTP_USER_AGENT']` instead
- :php:`HTTP_ACCEPT_ENCODING` is now :php:`->getHttpAcceptEncoding()`, but better use :php:`$request->getServerParams()['HTTP_ACCEPT_ENCODING']` instead
- :php:`HTTP_ACCEPT_LANGUAGE` is now :php:`->getHttpAcceptLanguage()`, but better use :php:`$request->getServerParams()['HTTP_ACCEPT_LANGUAGE']` instead
- :php:`REMOTE_HOST` is now :php:`->getRemoteHost()`, but better use :php:`$request->getServerParams()['REMOTE_HOST']` instead
- :php:`QUERY_STRING` is now :php:`->getQueryString()`, but better use :php:`$request->getServerParams()['QUERY_STRING']` instead
Impact
======
The PSR-7 request objects created by TYPO3 now contain an instance of :php:`NormalizedParams` which can
be used instead of :php:`GeneralUtility::getIndpEnv()` to access normalized server params.
.. index:: PHP-API
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _feature-83740:
===========================================================
Feature: #83740 - Cleanup of AbstractRecordList breaks hook
===========================================================
See :issue:`83740`
Description
===========
A new hook in :php:`DatabaseRecordList` and :php:`PageLayoutView` allows modify the current database query.
Register the hook via
* php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['modifyQuery']`
* php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Backend\View\PageLayoutView::class]['modifyQuery']`
in the extensions :file:`ext_localconf.php` file.
Example
=======
An example implementation could look like this:
:file:`EXT:my_site/ext_localconf.php`
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['modifyQuery'][1313131313] =
\MyVendor\MySite\Hooks\DatabaseRecordListHook::class . '->modifyQuery';
:file:`EXT:my_site/Classes/Hooks/DatabaseRecordListHook.php`
.. code-block:: php
namespace MyVendor\MySite\Hooks;
class DatabaseRecordListHook
{
public function modifyQuery(
array $parameters,
string $table,
int $pageId,
array $additionalConstraints,
array $fieldList,
\TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder
) {
// modify $queryBuilder
}
}
.. index:: Backend, Database, PHP-API
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _feature-83748:
====================================================
Feature: #83748 - Show value of fields in debug mode
====================================================
See :issue:`83748`
Description
===========
If the configuration :php:`$GLOBALS['TYPO3_CONF_VARS']['BE']['debug']` is enabled and the current user is an
administrator, the value of select, radio and checkbox fields which are generated by the :php:`FormEngine` is appended
to its label.
Impact
======
The correct name of a field is important to know for developers and integrators. Examples are setting up access
permissions or configuration using TsConfig.
Instead of looking into the source code of the browser, it is now possible to display those name by enabling the debug
mode for the backend.
.. index:: Backend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _feature-83906:
=========================================================
Feature: #83906 - Disable single FormEngine data provider
=========================================================
See :issue:`83906`
Description
===========
Single data providers used in the FormEngine data compilation step can be disabled.
As an example, if editing a full database record, the default TcaCheckboxItems could be shut down by setting
:php:`disabled` in the :php:`tcaDatabaseRecord` group in an extensions :file:`ext_localconf.php` file:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord']
[\TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class]['disabled'] = true;
Extension authors can then add an own data provider which :php:`depends` on the disabled one and is :php:`before` of the
next one to effectively substitute single providers with own solutions if needed.
Impact
======
The disable feature allows extension authors to easily substitute existing data providers with own solutions and avoids
nasty array- and dependency munging by extension authors.
.. index:: Backend, PHP-API
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _feature-83942:
=================================================================
Feature: #83942 - Provide ViewHelper to render icon for resources
=================================================================
See :issue:`83942`
Description
===========
A new ViewHelper to render the icon markup based on a FAL resource has been introduced.
Example:
.. code-block:: html
<core:iconForResource resource="{file}" />
.. index:: Backend, Fluid, ext:core
@@ -0,0 +1,17 @@
.. include:: /Includes.rst.txt
.. _feature-83965:
=========================================================
Feature: #83965 - Make position of sys notes configurable
=========================================================
See :issue:`83965`
Description
===========
sys_note records can now be rendered either in the top or bottom of the page and list module by defining the position in
the record itself.
.. index:: Backend, ext:sys_note
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-84045:
===========================================
Feature: #84045 - new AdminPanel module API
===========================================
See :issue:`84045`
Description
===========
Extending the Admin Panel was only partially possible in earlier TYPO3 versions by using a hook that provided the
possibility to add pure content (no new modules) as plain HTML.
A new API has been introduced, providing more flexible options to add custom modules to the admin panel or replace and
deactivate existing ones.
Impact
======
Custom admin panel modules can now be registered via `$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']`.
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']['yourmodulename'] = [
'module' => \Vendor\Package\AdminPanel\YourModule::class,
'after' => ['preview']
]
To implement a custom module your module class has to implement the `\TYPO3\CMS\Adminpanel\Modules\AdminPanelModuleInterface`.
Be aware that the `\TYPO3\CMS\Adminpanel\Modules\AdminPanelModuleInterface` is not final yet and may change until v9 LTS.
.. index:: Frontend, PHP-API, ext:frontend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _feature-84120:
========================================================
Feature: #84120 - Absolute URLs for typolink ViewHelpers
========================================================
See :issue:`84120`
Description
===========
The new parameter `absolute` has been added to the Fluid ViewHelpers `<f:uri.typolink>` and `<f:link.typolink>`,
allowing to generate absolute links, like other ViewHelpers used for linking handle it already.
Impact
======
It is now possible to add the `absolute` parameter to the ViewHelpers above.
.. code-block:: html
<f:link.typolink parameter="23" absolute="true">Link To My Page</f:link.typolink>
<f:uri.typolink parameter="23" absolute="true" />
generates
.. code-block:: html
<a href="https://www.mydomain.com/index.php?id=23">Link to My Page</a>
https://www.mydomain.com/index.php?id=23
.. index:: Fluid, ext:fluid
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _feature-84153:
=======================================================
Feature: #84153 - Introduce a generic Environment class
=======================================================
See :issue:`84153`
Description
===========
A new base API class :php:`TYPO3\CMS\Core\Core\Environment` has been added. This class contains application-wide
information related to paths and PHP internals, which were previously exposed via PHP constants.
This Environment class comes with a new possibility, to have a `config` and `var` folder outside of the document root
(known as `PATH_site`). When the environment variable :php:`TYPO3_PATH_APP` is set, which defines the project root
folder, the new `config` and `var` folders outside of the document root are used for installation-wide configuration and
volatile files.
The following static API methods are exposed within the Environment class:
* `Environment::isCli()` - defines whether TYPO3 runs on a CLI context or HTTP context
* `Environment::getApplicationContext()` - returns the ApplicationContext object that encapsulates `TYPO3_CONTEXT`
* `Environment::isComposerMode()` - defines whether TYPO3 was installed via composer
* `Environment::getProjectPath()` - returns the absolute path to the root-level folder without the trailing slash
* `Environment::getPublicPath()` - returns the absolute path to the publicly accessible folder (previously known as PATH_site) without the trailing slash
* `Environment::getVarPath()` - returns the absolute path to the folder where non-public semi-persistent files can be stored. For regular projects, this is known as PATH_site/typo3temp/var
* `Environment::getConfigPath()` - returns the absolute path to the folder where (writeable) configuration is stored. For regular projects, this is known as PATH_site/typo3conf
* `Environment::getCurrentScript()` - the absolute path and filename to the currently executed PHP script
* `Environment::isWindows()` - whether TYPO3 runs on a windows server
* `Environment::isUnix()` - whether TYPO3 runs on a unix server
Impact
======
You should not rely on the PHP constants anymore, but rather use the Environment class to resolve paths:
* :php:`PATH_site`
* :php:`PATH_typo3conf`
* :php:`PATH_site . 'typo3temp/var/'`
* :php:`TYPO3_OS`
* :php:`TYPO3_REQUESTTYPE_CLI`
* :php:`PATH_thisScript`
.. index:: PHP-API
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _feature-84159:
======================================================
Feature: #84159 - Extract admin panel to own extension
======================================================
See :issue:`84159`
Description
===========
The admin panel has been extracted to a standalone extension. All admin panel specific code will be moved to the
extension removing cross-dependencies and enabling better scoping.
Impact
======
The admin panel can be completely uninstalled by deactivating the extension. To use the admin panel functionality the
extension has to be activated. Classes have been moved to the new extension and a class alias map for migration of
legacy code has been provided.
.. index:: Frontend, PHP-API, ext:frontend
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-84216:
===========================================================
Feature: #84216 - New attribute "debug" in RenderViewHelper
===========================================================
See :issue:`84216`
Description
===========
The new attribute `debug` has been added to the RenderViewHelper which is `true` by default.
Setting this attribute to `false` disables the debug information rendered in the frontend if the fluid debug mode is
enabled in the admin panel.
Impact
======
It is now possible to disable the debug output in some specials cases like in the admin panel.
.. index:: Fluid, Frontend, ext:fluid
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _feature-84466:
===========================================================
Feature: #84466 - Request aware interfaces added to reports
===========================================================
See :issue:`84466`
Description
===========
Two new interfaces where added to mark reports and status providers as request aware:
* :php:`TYPO3\CMS\Reports\RequestAwareReportInterface` (extends :php:`TYPO3\CMS\Reports\ReportInterface`)
* :php:`TYPO3\CMS\Reports\RequestAwareStatusProviderInterface` (extends :php:`TYPO3\CMS\Reports\StatusProviderInterface`)
Both interfaces allow reports or status providers to receive an optional PSR-7 server request argument for their
respective interface methods:
* :php:`getReport()`
* :php:`getStatus()`
Impact
======
Reports and status providers can now cleanly access information from the current server request.
They only need to implement one of the interfaces to get the current server request injected.
.. index:: Backend, PHP-API, ext:reports
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _feature-84517:
==============================================================
Feature: #84517 - Recordlist - Make csv delimiter configurable
==============================================================
See :issue:`84517`
Description
===========
Two new PageTSconfig options were added for the DatabaseRecordList:
- `mod.web_list.csvDelimiter = ,` - defines the delimiter between csv values
- `mod.web_list.csvQuote = "` - defines the quote-character to wrap csv values
Impact
======
It is now possible to control the delimiter and quote-character of the recordlist csv export.
.. index:: Backend
@@ -0,0 +1,60 @@
.. include:: /Includes.rst.txt
.. _feature-84545:
==============================================================================
Feature: #84545 - Allow temporary files to be stored outside the document root
==============================================================================
See :issue:`84545`
Description
===========
The environment variable called :php:`TYPO3_PATH_APP`, which was previously introduced with the Environment API, is now used
to allow to store data outside of the document root.
All regular composer-based installations now benefit from this functionality directly, as data which was previously
stored and hard-coded within :file:`typo3temp/var/` is now stored within the **project root** folder :file:`var/`.
For non-composer installations, it is possible to set the environment variable to a folder usually one level
upwards than the regular **web root**. This increases security for any TYPO3 installation as files are not
publicly accessible (for example via web browser) anymore.
A typical example:
- :php:`TYPO3_PATH_APP` is set to :file:`/var/www/my-project`.
- The web folder is then set to :php:`TYPO3_PATH_ROOT` :file:`/var/www/my-project/public`.
Non-public files are then put to
- :file:`/var/www/my-project/var/session` (like Maintenance Tool Session files)
- :file:`/var/www/my-project/var/cache` (Caching Framework data)
- :file:`/var/www/my-project/var/lock` (Files related to locking)
- :file:`/var/www/my-project/var/log` (Files related to logging)
- :file:`/var/www/my-project/var/extensionmanager` (Files related to extension manager data)
- :file:`/var/www/my-project/var/transient` (Files related to import/export, core updater, FAL)
If the option is not set, the :file:`typo3temp/var/` folder is still used, but with some minor differences
regarding the naming scheme of the folders.
Impact
======
For installations having the environment variable set, the folder is now not within :file:`typo3temp/var/` anymore
but outside of the document root in a folder called :file:`var/`.
For installations without this setting in use, there are minor differences in the folder structure:
- :file:`typo3temp/var/cache` is now used instead of :file:`typo3temp/var/Cache`
- :file:`typo3temp/var/log` is now used instead of :file:`typo3temp/var/logs`
- :file:`typo3temp/var/lock` is now used instead of :file:`typo3temp/var/locks`
- :file:`typo3temp/var/session` is now used instead of :file:`typo3temp/var/InstallToolSessions`
- :file:`typo3temp/var/extensionmanager` is now used instead of :file:`typo3temp/var/ExtensionManager`
Although it is a most common understanding in the TYPO3 world that :file:`typo3temp/` can be removed at any time,
it is considered bad practice to remove the whole folder. Only folders relevant for the current development
changes should selectively be removed.
.. index:: CLI, PHP-API
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _feature-84549:
========================================================
Feature: #84549 - Usage of new REST API on get.typo3.org
========================================================
See :issue:`84549`
Description
===========
Instead of providing only a JSON file, the get.typo3.org website was refactored to provide a REST web API for
information on TYPO3 releases.
The core uses that information to check for available upgrades and download new versions.
With this change the information will be fetched via the new API.
Impact
======
* :php:`CoreVersionService` makes use of the REST API directly - no complete version listing
is stored in the registry anymore as the new API provides direct access to necessary information
* The reports module contains a message hinting at the availability of updates.
.. index:: Backend, PHP-API, ext:install
@@ -0,0 +1,208 @@
.. include:: /Includes.rst.txt
.. _feature-84581:
=========================================
Feature: #84581 - Introduce Site Handling
=========================================
See :issue:`84581`
Description
===========
Site Handling has been added to TYPO3.
Its goal is to make managing multiple sites easier to understand and faster to do. Sites bring a variety of new
concepts to TYPO3 which we will explain below.
Take your time and read through the entire document since some concepts rely on each other.
typo3conf/sites folder
----------------------
New sites will live in the folder `typo3conf/sites/`. In the first iteration this folder will contain a file called
`config.yaml` which holds all configuration for a given site.
Note that if you are using a composer based installation, then the file location is `<project-root>/config/sites/<identifier>/config.yaml`
In the future this folder can (and should) be used for more files like Fluid templates, and Backend layouts.
config.yaml
-----------
.. code-block:: yaml
# the rootPage Id (see below)
rootPageId: 12
# my base domain to run this site on. It either accepts a fully qualified URL or "/" to react to any domain name
base: 'https://www.example.com/'
# The language array
languages:
-
# the TYPO3 sys_language_uid as you know it since... ever
languageId: '0'
# The internal name for this language. Unused for now, but in the future this will affect display in the backend
title: English
# optional navigation title which is used in HMENU.special = language
navigationTitle: ''
# Language base. Accepts either a fully qualified URL or a path segment like "/en/".
base: /
# sets the locale during frontend rendering
locale: en_US.UTF-8
# two-letter code for the language according to ISO-639 nomenclature (see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
iso-639-1: en
# FE href language
hreflang: en-US
# FE text direction
direction: ltr
# Language Identifier to use in localLang XLIFF files
typo3Language: default
# Flag Identifier
flag: gb
-
languageId: '1'
title: 'danish'
navigationTitle: Dansk
base: /da/
locale: da_DK.UTF-8
iso-639-1: da
hreflang: da-DK
direction: ltr
typo3Language: default
flag: dk
fallbackType: strict
-
languageId: '2'
title: Deutsch
navigationTitle: ''
base: 'https://www.beispiel.de'
locale: de_DE.UTF-8
iso-639-1: de
hreflang: de-DE
direction: ltr
typo3Language: de
flag: de
# Enable content fallback
fallbackType: fallback
# Content fallback mode (order is important)
fallbacks: '2,1,0'
# Error Handling Array (order is important here)
# Error Handlers will check the given status code, but the special value "0" will react to any error not configured
# elsewhere in this configuration.
errorHandling:
-
# HTTP Status Code to react to
errorCode: '404'
# The used ErrorHandler. In this case, it's "Display content from Page". See examples below for available options.
errorHandler: Page
# href to the content source to display (accepts both fully qualified URLs as well as TYPO3 internal link syntax
errorContentSource: 't3://page?uid=8'
-
errorCode: '403'
errorHandler: Fluid
# Path to the Template File to show
errorFluidTemplate: 'EXT:my_extension/Resources/Private/Templates/ErrorPages/403.html'
# Optional Templates root path
errorFluidTemplatesRootPath: 'EXT:my_extension/Resources/Private/Templates/ErrorPages'
# Optional Layouts root path
errorFluidLayoutsRootPath: 'EXT:my_extension/Resources/Private/Layouts/ErrorPages'
# Optional Partials root path
errorFluidPartialsRootPath: 'EXT:my_extension/Resources/Private/Partials/ErrorPages'
-
errorCode: '0'
errorHandler: PHP
# Fully qualified class name to a class that implements PageErrorHandlerInterface
errorPhpClassFQCN: Vendor\ExtensionName\ErrorHandlers\GenericErrorhandler
All settings can also be edited via the backend module `Site Management > Configuration`.
Keep in mind that due to the nature of the module, comments or additional values in your :file:`config.yaml` file
**will** get deleted on saving.
site identifier
---------------
The site identifier is the name of the folder within `typo3conf/sites/` that will hold your configuration file(s). When
choosing an identifier make sure to stick to ASCII but you may also use `-`, `_` and `.` for convenience.
rootPageId
----------
Root pages are identified by one of these two properties:
* they are direct descendants of PID 0 (the root root page of TYPO3)
* they have the "Use as Root Page" property in `pages` set to true.
Configuration
=============
The new backend module relies on FormEngine to render the edit interface. Since the form data is not stored in
database records but in :file:`.yml` files, a couple of details have been extended of the default FormEngine code.
The render configuration is stored in :file:`typo3/sysext/backend/Configuration/SiteConfiguration/` in a format
syntactically identical to TCA. However, this is **not** loaded into :php:`$GLOBALS['TCA']` scope, and only a small
subset of TCA features is supported.
**Extending site configuration is experimental** and may change any time.
In practice the configuration can be extended, but only with very simple fields like the basic config type :php:`input`,
and even for this one not all features are possible, for example the :php:`eval` options are limited. The code throws
exceptions or just ignores settings it does not support. While some of the limits may be relaxed a bit over time, many
will be kept. The goal is to allow developers to extend the site configuration with a couple of simple things like
an input field for a Google API key. However it is **not possible to extend with complex TCA** like inline relations,
database driven select fields, Flex Form handling and similar.
The example below shows the experimental feature adding a field to site in an extensions file
:file:`Configuration/SiteConfiguration/Overrides/sites.php`. Note the helper methods of class
:php:`TYPO3\CMS\core\Utility\ExtensionManagementUtility` can not be used.
.. code-block:: php
<?php
// Experimental example to add a new field to the site configuration
// Configure a new simple required input field to site
$GLOBALS['SiteConfiguration']['site']['columns']['myNewField'] = [
'label' => 'A new custom field',
'config' => [
'type' => 'input',
'eval' => 'required',
],
];
// And add it to showitem
$GLOBALS['SiteConfiguration']['site']['types']['0']['showitem'] = str_replace(
'base,',
'base, myNewField, ',
$GLOBALS['SiteConfiguration']['site']['types']['0']['showitem']
);
The field will be shown in the edit form of the configuration module and it's value stored in the .yaml
file. Using the site object :php:`TYPO3\CMS\core\Site\Entity\Site`, the value can be fetched using
:php:`->getConfiguration()['myNewField']`.
Impact
======
The following TypoScript settings will be set based on `config.yaml` rather than needing to have them in your TypoScript
template:
* config.language
* config.htmlTag_dir
* config.htmlTag_langKey
* config.sys_language_uid
* config.sys_language_mode
* config.sys_language_isocode
* config.sys_language_isocode_default
Links to pages within a site can now be generated via **any** access of TYPO3, so in both BE and FE as well as CLI mode.
.. index:: Backend, Frontend, TypoScript
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _important-83724:
======================================================================
Important: #83724 - API and behavior change in request handler classes
======================================================================
See :issue:`83724`
Description
===========
In preparation for a better PSR-7 and a new PSR-15 integration the internal request handler classes have been changed:
* All methods gained strict argument type and return type declarations.
* Instead of calling :php:`HttpUtility::redirect()` a :php:`RedirectResponse` is returned.
* Instead of returning :php:`null` a :php:`NullResponse` is returned.
Impact
======
Extending one of the core request handlers without adding type declarations (to overloaded methods),
will trigger a PHP fatal error.
Affected Installations
======================
All 3rd party extensions extending one of the core request handlers.
.. index:: PHP-API, NotScanned
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _important-83869:
===================================================================
Important: #83869 - Removed request type specific code in Bootstrap
===================================================================
See :issue:`83869`
Description
===========
All methods and properties related to specific HTTP or CLI handling in
:php:`\TYPO3\CMS\Core\Core\Bootstrap` have been removed.
These methods and properties were either protected or marked `@internal`.
Methods:
* :php:`redirectToInstallTool()`
* :php:`registerRequestHandlerImplementation()`
* :php:`resolveRequestHandler()`
* :php:`handleRequest()`
* :php:`sendResponse()`
* :php:`checkLockedBackendAndRedirectOrDie()`
* :php:`checkBackendIpOrDie()`
* :php:`checkSslBackendAndRedirectIfNeeded()`
* :php:`initializeOutputCompression()`
* :php:`sendHttpHeaders()`
* :php:`shutdown()`
* :php:`initializeBackendTemplate()`
* :php:`endOutputBufferingAndCleanPreviousOutput()`
* :php:`getApplicationContext()`
* :php:`getRequestId()`
Properties:
* :php:`protected $installToolPath;`
* :php:`protected $availableRequestHandlers`
* :php:`protected $response;`
Affected Installations
======================
All installations that use custom extensions that use request method specific methods of
:php:`\TYPO3\CMS\Core\Core\Bootstrap`.
Migration
=========
Custom request handlers that are registered using the internal method :php:`registerRequestHandlerImplementation()`
should be converted to PSR-15 middlewares. TYPO3 9.2 gained an API :file:`Configuration/Configuration/RequestMiddlewares.php`
for registering PSR-15 middleware HTTP handlers. See :php:`\TYPO3\CMS\Frontend\Middleware\EidHandler` for an example.
.. index:: Backend, CLI, Frontend, PHP-API, FullyScanned
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _important-84420:
==========================================================
Important: #84420 - Properly escape reserved chars in YAML
==========================================================
See :issue:`84420`
Description
===========
If dealing with YAML files in the TYPO3 system - for instance to configure forms
using the `form` extension or if configuring `ckeditor` - integrators should properly
quote strings containing special characters like `@` or `%` to be upwards compatible
with the version 4 symfony YAML parser.
More information can be found in the Symfony_ docs.
.. _Symfony: http://symfony.com/doc/current/components/yaml/yaml_format.html#strings
.. index:: Backend, Frontend, ext:form, ext:rte_ckeditor
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _important-84658:
===========================================================
Important: #84658 - Keep sorting value for deleted records
===========================================================
See :issue:`84658`
Description
===========
Keep the value for the defined sorting field when a record is deleted.
Impact
======
Functional tests that are based on sorting value to be 1000000000 for deleted records will fail.
Affected Installations
======================
All third party extensions with functional tests using the sorting field for deleted records.
Migration
=========
Check your functional tests fixtures and set the expected sorting value for deleted records equal to
the starting value.
.. index:: PHP-API, Database
+52
View File
@@ -0,0 +1,52 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-9-2:
9.2 Changes
===========
**Table of contents**
.. contents::
:local:
:depth: 1
Breaking Changes
^^^^^^^^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Breaking-*
Features
^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Feature-*
Deprecation
^^^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Deprecation-*
Important
^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Important-*