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,38 @@
.. include:: /Includes.rst.txt
.. _breaking-73016:
==================================================================================
Breaking: #73016 - Renaming of Clipboard->printContentFromTab to getContentFromTab
==================================================================================
See :issue:`73016`
Description
===========
During the fluidification of the clipboard, it became obvious that the method
:php:`printContentFromTab()` doesn't describe the method correctly anymore. So it has been
renamed to :php:`getContentFromTab()`.
Impact
======
This is a public method, so it could be that some unknown extension calls the old
function. But as no TER extension or the core itself calls the method, no deprecation
is needed.
Affected Installations
======================
Every extension that calls :php:`Clipboard->printContentFromTab()`.
Migration
=========
Change the call from :php:`Clipboard->printContentFromTab()` to :php:`Clipboard->getContentFromTab()`.
.. index:: Backend, PHP-API
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _breaking-78002:
=============================================================
Breaking: #78002 - Enforce cHash argument for Extbase actions
=============================================================
See :issue:`78002`
Description
===========
URIs to Extbase actions now need a valid cHash per default. This is required for
both cached and uncached actions. The behavior can be disabled for all actions
using the feature switch `requireCHashArgumentForActionArguments`.
Impact
======
All generated links to Extbase actions without having a valid cHash will fail.
Affected Installations
======================
All generated links to Extbase actions that explicitly disabled the cHash are
affected - like :html:`<f:link.action action="..." noCacheHash="1"/>`
Migration
=========
Either one of the following:
+ ensure to use a valid cHash, e.g. by removing the
:html:`noCacheHash="1"` argument from link view-helpers
+ disable the :typoscript:`requireCHashArgumentForActionArguments` feature, e.g. for EXT:indexed_search:
.. code-block:: typoscript
plugin {
tx_indexedsearch {
features {
requireCHashArgumentForActionArguments = 0
}
}
}
.. index:: Frontend, PHP-API, ext:extbase
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _breaking-78191:
==============================================================
Breaking: #78191 - Remove support for transForeignTable in TCA
==============================================================
See :issue:`78191`
Description
===========
TCA allowed the definition of separate tables to hold localized and translated records.
The property names used for that were `transForeignTable` (basically pointed to
table `pages_language_overlay`) and `transOrigPointerTable` (basically
pointed back to table `pages`). The mentioned two pages tables are the only
tables that make use of this feature in the TYPO3 core.
To overcome special handling and to combine `pages_language_overlay` with
`pages` at a later step, the configured table names have been replaced with
hardcoded table names.
Impact
======
Modifications concerning the following two TCA control properties won't have
any effect anymore:
* :php:`$GLOBALS[TCA][<tableName>]['ctrl']['transForeignTable']`
* :php:`$GLOBALS[TCA][<tableName>]['ctrl']['transOrigPointerTable']`
Affected Installations
======================
All sites using localizations and translations for page hierarchies.
Migration
=========
No special actions are required if just the core defaults are used. Special
adjustments concerning the mentioned TCA properties should be verified and
hard-coded for the time being.
* :php:`$GLOBALS[TCA]['pages']['ctrl']['transForeignTable']`, use value `pages_language_overlay` directly
* :php:`$GLOBALS[TCA]['pages_language_overlay']['ctrl']['transOrigPointerTable']`, use value `pages` directly
.. index:: TCA, Backend
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-78383:
=======================================================================================================
Breaking: #78383 - pages, tt_content, sys_file_metadata have been removed from defaultCategorizedTables
=======================================================================================================
See :issue:`78383`
Description
===========
The tables `pages`, `tt_content` and `sys_file_metadata` have been removed from `defaultCategorizedTables`.
For these tables the core API :php:`\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable` would be
executed to define a common position of the categories field.
Impact
======
It is no longer possible to remove the category field for these tables by reset the configuration.
Affected Installations
======================
Any TYPO3 instance that reset the configuration value.
Migration
=========
None.
Use PageTSConfig to disable the field:
.. code-block:: typoscript
TCEFORM.pages.categories.disabled = 1
TCEFORM.tt_content.categories.disabled = 1
TCEFORM.sys_file_metadata.categories.disabled = 1
.. index:: LocalConfiguration, TSConfig, PHP-API
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _breaking-78384:
=========================================================
Breaking: #78384 - Frontend ignores TCA in ext_tables.php
=========================================================
See :issue:`78384`
Description
===========
Frontend requests no longer load :file:`ext_tables.php` in requests. The only exception is if a backend user is
logged in to the backend at the same time to initialize the admin panel or frontend editing.
Impact
======
Since especially a not yet cached frontend call relies on initialized :php:`$GLOBALS['TCA']`, changes to `TCA` done
within :file:`ext_tables.php` are now ignored and may fail.
Affected Installations
======================
Extensions that still set, add or remove settings in :php:`$GLOBALS['TCA']` need to be adapted. The install tool
provides test "TCA ext_tables check" to find such extensions.
Migration
=========
In :file:`ext_tables.php` neither writing directly to :php:`$GLOBALS['TCA']` and `$TCA` is allowed, nor writing indirectly
via `ExtensionManagementUtility` methods. An example list of calls and their new positions:
* :php:`$GLOBALS['TCA']['someTable'] = `: A full table `TCA` is added. This must be moved
to :file:`Configuration/TCA/someTable.php`, see `ext:sys_note` as example.
* :php:`ExtensionManagementUtility::addStaticFile()`: A static file is registered
in `sys_template`. Add this to :file:`Configuration/TCA/Overrides/sys_template.php`, see `ext:rtehtmlarea` as example.
* :php:`ExtensionManagementUtility::addTCAcolumns()`: Columns are added to a table. Add this
to :file:`Configuration/TCA/Overrides/<table>.php`, see `ext:felogin` as example.
* :php:`ExtensionManagementUtility::addToAllTCAtypes()`: Fields are added to types. Add this
to :file:`Configuration/TCA/Overrides/<table>.php`, see `ext:felogin` as example.
* :php:`ExtensionManagementUtility::addPiFlexFormValue()`: A new flex from in `tt_content` is registered. Add
this to :file:`Configuration/TCA/Overrides/tt_content.php`, see `ext:felogin` as example.
* :php:`ExtensionUtility::registerPlugin()` and :php:`ExtensionManagementUtility::addPlugin`: A new type item
is added to the `tt_content` table. Add this to :file:`Configuration/TCA/Overrides/tt_content.php`.
.. index:: Frontend, TCA, PHP-API
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _breaking-78417:
====================================================================
Breaking: #78417 - Lowlevel DeletedRecordsCommand parameters changed
====================================================================
See :issue:`78417`
Description
===========
The DeletedRecordsCommand is now using Symfony Console. The new command behaves like the old one, but allows using certain
parameters and is located under the following path now:
`./typo3/sysext/core/bin/typo3 cleanup:deletedrecords`
The following options can be set
`--dry-run` to only show the deleted records
`-v` and `-vv` to show additional information
`--pid=23` or `-p=23` to only find and delete records below page ID 23 (otherwise "0" is taken)
`--depth=4` or `-d=4` to only delete recursively until a certain page tree level.
The PHP class `TYPO3\CMS\Lowlevel\DeletedRecordsCommand` has been removed.
Impact
======
Calling `typo3/cli_dispatch lowlevel cleaner deleted` will not work anymore.
Calling the PHP class results in a fatal PHP error.
Affected Installations
======================
Any TYPO3 installation using the old CLI command or the related PHP class.
Migration
=========
Use the new CLI command as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-78439:
================================================================
Breaking: #78439 - Lowlevel FlexForm Cleaning parameters changed
================================================================
See :issue:`78439`
Description
===========
The CleanFlexFormsRecordsCommand is now using Symfony Console. The new command behaves like the old functionality,
but uses certain different parameters. It can now be called with the following CLI command:
`./typo3/sysext/core/bin/typo3 cleanup:flexforms`
The following options can be set
`--dry-run` to only show the deleted records
`-v` and `-vv` to show additional information
`--pid=23` or `-p=23` to only find and clean up records with FlexForm XMLs below page ID 23 (otherwise "0" is taken)
`--depth=4` or `-d=4` to only clean recursively until a certain page tree level.
The PHP class `TYPO3\CMS\Lowlevel\CleanFlexformCommand` has been removed.
Impact
======
Calling `typo3/cli_dispatch.phpsh lowlevel cleaner cleanflexform` will not work anymore.
Calling the PHP class results in a fatal PHP error.
Affected Installations
======================
Any TYPO3 installation using the previously command callable via `cli_dispatch.phpsh` or the related PHP class.
Migration
=========
Use the new CLI command as shown above.
.. index:: CLI, FlexForm, ext:lowlevel
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-78468:
=======================================================
Breaking: #78468 - Remove ExtDirect from EXT:workspaces
=======================================================
See :issue:`78468`
Description
===========
To remove ExtJS the ExtDirect component has been removed too.
A new class :php:`TYPO3\CMS\Workspaces\Controller\AjaxDispatcher` has been added to implement the ExtDirect router functionality.
This class is callable by a new AJAX route with the name `workspace_dispatch`.
Impact
======
The following classes have been moved:
* :file:`EXT:workspaces/Classes/ExtDirect/AbstractHandler.php`
=> :file:`EXT:workspaces/Classes/Controller/Remote/AbstractHandler.php`
* :file:`EXT:workspaces/Classes/ExtDirect/ActionHandler.php`
=> :file:`EXT:workspaces/Classes/Controller/Remote/ActionHandler.php`
* :file:`EXT:workspaces/Classes/ExtDirect/MassActionHandler.php`
=> :file:`EXT:workspaces/Classes/Controller/Remote/MassActionHandler.php`
* :file:`EXT:workspaces/Classes/ExtDirect/ExtDirectServer.php`
=> :file:`EXT:workspaces/Classes/Controller/Remote/RemoteServer.php`
Affected Installations
======================
Any TYPO3 installation using the previously classes.
Migration
=========
Use the new classes as mentioned above.
.. index:: Backend, JavaScript, ext:workspaces
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _breaking-78520:
======================================================================
Breaking: #78520 - Lowlevel Orphan Records Cleaning parameters changed
======================================================================
See :issue:`78520`
Description
===========
The OrphanRecordsCommand is now using Symfony Console. The new command behaves like the old functionality,
but uses certain different parameters. It can now be called with the following CLI command:
`./typo3/sysext/core/bin/typo3 cleanup:orphanrecords`
The following options can be set
`--dry-run` to only show the orphaned records
`-v` and `-vv` to show additional information
The PHP class `TYPO3\CMS\Lowlevel\OrphanRecordsCommand` has been removed.
Impact
======
Calling `typo3/cli_dispatch.phpsh lowlevel cleaner orphan_records` will not work anymore.
Calling the PHP class results in a fatal PHP error.
Affected Installations
======================
Any TYPO3 installation using the previously command callable via `cli_dispatch.phpsh` or the related PHP class.
Migration
=========
Use the new CLI command as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-78521:
=========================================================
Breaking: #78521 - Drop unused JavaScript from backend.js
=========================================================
See :issue:`78521`
Description
===========
The following JavaScript methods related to ExtJS have been removed from the Backend main frame
as defined in the main :file:`backend.js` file.
* :js:`TYPO3._instances`
* :js:`TYPO3.addInstance`
* :js:`TYPO3.getInstance`
* :js:`TYPO3.helpers.split`
Impact
======
Any call to one of the above mentioned methods will result in a JavaScript error.
Affected Installations
======================
Any installation that uses one of the methods mentioned above.
.. index:: Backend, JavaScript
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _breaking-78522:
============================================================
Breaking: #78522 - Removed backend user option debugInWindow
============================================================
See :issue:`78522`
Description
===========
The backend user option `debugInWindow` was unused in the core and has been removed,
as the option of opening the debug information in a window was migrated already.
Impact
======
The setting is not available anymore in JavaScript under :js:`TYPO3.configuration`.
Affected Installations
======================
Any installation that uses the removed backend user option `debugInWindow`.
.. index:: Backend, JavaScript
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-78525:
======================================================================
Breaking: #78525 - Removed unused configuration options for JavaScript
======================================================================
See :issue:`78525`
Description
===========
Removed all options that are not used anymore from :js:`TYPO3.configuration` in JavaScript context.
* :js:`TYPO3.configuration.moduleMenuWidth`
* :js:`TYPO3.configuration.topBarHeight`
Impact
======
Both settings are not available anymore in JavaScript under :js:`TYPO3.configuration`.
Affected Installations
======================
Any installation that uses one of the mentioned options.
Migration
=========
No migration.
.. index:: Backend, JavaScript
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _breaking-78549:
======================================================================
Breaking: #78549 - Override New Page Creation Wizard via page TSconfig
======================================================================
See :issue:`78549`
Description
===========
In the past it was possible to override the "New Page Creation Wizard" via custom scripts
when using page TSconfig via :typoscript:`mod.web_list.newPageWiz.overrideWithExtension = myextension` to define an extension,
which then needed a file placed under :file:`mod1/index.php`. The script was then called with certain parameters instead
of the wizard.
The new way of handling entry-points and custom scripts is now built via modules and routes. The former option
:typoscript:`mod.web_list.newPageWiz.overrideWithExtension` has been removed and a new option
:typoscript:`mod.newPageWizard.override` has been introduced instead. Instead of setting the option to a certain extension key,
a custom module or route has to be specified.
Example:
.. code-block:: typoscript
mod.newPageWizard.override = my_custom_module
Impact
======
Using the old TSconfig option :typoscript:`mod.web_list.newPageWiz.overrideWithExtension` has no effect anymore and
will fallback to the regular new page creation wizard provided by the TYPO3 Core.
Affected Installations
======================
Any installation using this option with extensions providing custom New Page Wizards, e.g. EXT:templavoila.
Migration
=========
The extension providing the script must be changed to register a route or module and set the TSconfig option to the route identifier,
instead of a raw PHP script. Any usages in TSconfig need to be adapted to use the new TSconfig option.
.. index:: Backend, TSConfig
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-78552:
===============================================================
Breaking: #78552 - Lowlevel LostFilesCommand parameters changed
===============================================================
See :issue:`78552`
Description
===========
The existing CLI command within EXT:lowlevel for detecting and removing files within uploads/ which are not referenced by TYPO3
has been migrated to a Symfony Console command.
The command previously available via `./typo3/cli_dispatch.phpsh lowlevel_cleaner lost_files` is now available via
`./typo3/sysext/core/bin/typo3 cleanup:lostfiles` and allows the following CLI options to be set:
`--update-refindex` - updates the reference index before scanning for lost files. If not set, the user is asked if the task should be run
`--exclude=uploads/mypics/,uploads/psa` - a list of paths of files to exclude within uploads/
`--dry-run` - do not delete the files but only list the files that are not connected to the TYPO3 system anymore
The PHP class of the old CLI command `TYPO3\CMS\Lowlevel\LostFilesCommand` has been removed.
Impact
======
Calling the old CLI command `./typo3/cli_dispatch.phpsh lowlevel_cleaner lost_files` will result in an error message.
Affected Installations
======================
Any TYPO3 instances using the lowlevel cleaner for finding and deleting lost files.
Migration
=========
Update the CLI call on your servers to the new command line and available options as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-78577:
==================================================================
Breaking: #78577 - Lowlevel MissingFilesCommand parameters changed
==================================================================
See :issue:`78577`
Description
===========
The existing CLI command within EXT:lowlevel for showing missing files that are referenced by TYPO3 records
has been migrated to a Symfony Console command.
The command previously available via `./typo3/cli_dispatch.phpsh lowlevel_cleaner missing_files` is now available via
`./typo3/sysext/core/bin/typo3 cleanup:missingfiles` and allows the following CLI options to be set:
`--update-refindex` - updates the reference index before scanning for missing files. If not set, the user is asked if the task should be run
`--dry-run` - do not delete the references, files but only list the files that are missing but connected to the TYPO3 system
The PHP class of the old CLI command `TYPO3\CMS\Lowlevel\MissingFilesCommand` has been removed.
Impact
======
Calling the old CLI command `./typo3/cli_dispatch.phpsh lowlevel_cleaner missing_files` will result in an error message.
Affected Installations
======================
Any TYPO3 instances using the lowlevel cleaner for finding missing files in relations.
Migration
=========
Update the CLI call on your servers to the new command line and available options as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-78581-1668719184:
==========================================================
Breaking: #78581 - FlexFormTools public properties dropped
==========================================================
See :issue:`78581`
Description
===========
Two public properties have been dropped from PHP class :php:`FlexFormTools`:
* :php:`FlexFormTools->traverseFlexFormXMLData_DS`
* :php:`FlexFormTools->traverseFlexFormXMLData_Data`
Impact
======
Accessing those properties will throw a warning.
Affected Installations
======================
Extensions that access these properties. These two properties were of little use from an extensions point of view,
it is very unlikely this actually breaks an extension.
Migration
=========
No migration possible.
.. index:: PHP-API, FlexForm, Backend
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-78581:
================================================================
Breaking: #78581 - FormEngine TcaFlexFetch data provider removed
================================================================
See :issue:`78581`
Description
===========
The FormEngine data provider :php:`TcaFlexFetch` has been merged into data provider :php:`TcaFlexPrepare`.
Impact
======
If own registered data providers are declared to "depends" or "before" :php:`TcaFlexFetch`, the
:php:`DependencyResolver` will be unable to find it and throws an exception or sorts the own data
provider to an ambiguous place.
Affected Installations
======================
An installation is only affected in the relatively unlikely case that an own data provider declared a
dependency to :php:`TcaFlexFetch`.
Migration
=========
Move the dependency over to :php:`TcaFlexPrepare`: The two data providers have been merged into one, it
should be save for any data provider to hook in before or after :php:`TcaFlexPrepare` instead. There
is a little additional flex form processing in :php:`TcaFlexPrepare`, so the flex structure might be a
bit different. Have a look at methods :php:`removeTceFormsArrayKeyFromDataStructureElements()`
and :php:`migrateFlexformTcaDataStructureElements()` for details.
.. index:: PHP-API, FlexForm, Backend
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _breaking-78581-1668719172:
===========================================================
Breaking: #78581 - Hook getFlexFormDSClass no longer called
===========================================================
See :issue:`78581`
Description
===========
With the deprecation of :php:`BackendUtility::getFlexFormDS()` the hook :php:`getFlexFormDSClass` is
no longer called and there is no substitution available.
Impact
======
The hook is no longer called and flex form field manipulation by extensions does not happen anymore.
Affected Installations
======================
Extensions that extension flex form data structure definitions and use the hook :php:`getFlexFormDSClass`
for that purpose.
Migration
=========
Method :php:`BackendUtility::getFlexFormDS()` has been split into the methods
:php:`FlexFormTools->getDataStructureIdentifier()` and :php:`FlexFormTools->parseDataStructureByIdentifier()`.
Those two new methods now provide four hooks to allow manipulation of the flex form data structure
location and parsing. The methods and hooks are documented well, read their description for a deeper
insight on which combination is the correct one for a specific extension need.
The new hooks are very powerful and must be used with special care to be as future proof as possible.
Since the old hook is used by some widespread extensions, the core team prepared a transition for some
of them beforehand:
* EXT:news: The extension used the old hook to only remove a couple of fields from the flex
form definition. This has been moved over to a "FormEngine" data provider: news_
* EXT:flux: Flux implements a completely own way of locating and pointing to the flex form
data structure that is needed in a specific context. The default core resolving does not work
here. Flux now implements the hooks :php:`getDataStructureIdentifierPreProcess` and
:php:`parseDataStructureByIdentifierPreProcess` to specify an own "identifier" syntax
and to resolve that syntax to a data structure later: flux_
* EXT:gridelements: Similar to flux, gridelements has an own logic to choose which specific
data structure should be used. However, the data structures are located in database row fields,
so the "record" syntax of the core can be re-used to refer to those. gridelements uses the hook
:php:`getDataStructureIdentifierPreProcess` together with a small implementation in
:php:`parseDataStructureByIdentifierPreProcess` for a fallback scenario: gridelements_
* EXT:powermail: Powermail allows extending and changing existing flex form data structure
definition depending on page TS. To do that, it now implements hook
:php:`getDataStructureIdentifierPostProcess` to add the needed pid to the existing identifier,
and then implements hook :php:`parseDataStructureByIdentifierPostProcess` to manipulate the
resolved data structure: powermail_
.. _news: https://github.com/georgringer/news/pull/155
.. _flux: https://github.com/FluidTYPO3/flux/pull/1203
.. _gridelements: https://review.typo3.org/#/c/50513/
.. _powermail: https://github.com/einpraegsam/powermail/pull/6
.. index:: PHP-API, FlexForm, Backend
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-78623:
======================================================================
Breaking: #78623 - Lowlevel MissingRelationsCommand parameters changed
======================================================================
See :issue:`78623`
Description
===========
The existing CLI command within EXT:lowlevel for showing relations and soft-references to non-existing records,
offline versions and records marked as deleted has been migrated to a Symfony Console command.
The command previously available via `./typo3/cli_dispatch.phpsh lowlevel_cleaner missing_relations` is now available
via `./typo3/sysext/core/bin/typo3 cleanup:missingrelations` and allows the following CLI options to be set:
`--update-refindex` - updates the reference index before scanning for missing files. If not set, the user is asked if the task should be run
`--dry-run` - do not delete the references but only list the references that are missing but connected to the TYPO3 system
The PHP class of the old CLI command `TYPO3\CMS\Lowlevel\MissingRelationsCommand` has been removed.
Impact
======
Calling the old CLI command `./typo3/cli_dispatch.phpsh lowlevel_cleaner missing_relations` will result in an error message.
Affected Installations
======================
Any TYPO3 instances using the lowlevel cleaner for finding relations pointing to deleted, offline versions or
non-existing records.
Migration
=========
Update the CLI call on your servers to the new command line and available options as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-78627:
======================================================================
Breaking: #78627 - Lowlevel MissingRelationsCommand parameters changed
======================================================================
See :issue:`78627`
Description
===========
The existing CLI command within EXT:lowlevel for showing files within uploads/ that are used by records twice (non-FAL)
has been migrated to a Symfony Console command.
The command previously available via `./typo3/cli_dispatch.phpsh lowlevel_cleaner double_files` is now available
via `./typo3/sysext/core/bin/typo3 cleanup:multiplereferencedfiles` and allows the following CLI options to be set:
`--update-refindex` - updates the reference index before scanning for multiple-referenced files. If not set, the user is asked if the task should be run
`--dry-run` - do not copy the files to single-reference them, but only list the references and files.
The PHP class of the old CLI command `TYPO3\CMS\Lowlevel\DoubleFilesCommand` has been removed.
Impact
======
Calling the old CLI command `./typo3/cli_dispatch.phpsh lowlevel_cleaner double_files` will result in an error message.
Affected Installations
======================
Any TYPO3 instances using the lowlevel cleaner for finding files with two records pointing to them.
Migration
=========
Update the CLI call on your servers to the new command line and available options as shown above.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-78759:
=======================================================
Breaking: #78759 - Fluidification of EditFileController
=======================================================
See :issue:`78759`
Description
===========
While moving all HTML from PHP code to an own Fluid template the HTML string given to the hook after compiling the output is different now.
Impact
======
The HTML string given to the hook after compiling the output now contains the closing form tag :html:`</form>`.
Affected Installations
======================
All installations that append text to the HTML code in the hook after compiling the output.
Migration
=========
The hook code has to be changed to insert additional code before the closing form tag.
.. index:: Backend, Fluid
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _breaking-78855:
==========================================================
Breaking: #78855 - Remove obsolete sys_action translations
==========================================================
See :issue:`78855`
Description
===========
These translations have been removed from :file:`EXT:sys_action/Resources/Private/Language/locallang.xlf`:
* action_BEu_hidden
* action_BEu_username
* action_BEu_password
* action_BEu_realName
* action_BEu_email
* action_BEu_usergroups
These translations have been removed from :file:`EXT:sys_action/Resources/Private/Language/locallang_tca.xlf`:
* tx_sys_action
Impact
======
Integrations / third party Extensions using these translation-keys within the mentioned files will output empty strings.
Affected Installations
======================
Installations that use the removed translations in third party code.
Migration
=========
Create your own :file:`locallang.xlf` file and add the required translations.
.. index:: Backend, ext:sys_action
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-78895:
===============================================================
Breaking: #78895 - Lowlevel RteImagesCommand parameters changed
===============================================================
See :issue:`78895`
Description
===========
The existing CLI command within EXT:lowlevel for detecting and removing RTE files within uploads/ which are not referenced by TYPO3
has been migrated to a Symfony Console command. The same command is also used to copy RTE images which are used multiple
times on multiple references, to be only used once.
The command previously available via `./typo3/cli_dispatch.phpsh lowlevel_cleaner rte_images` is now available via
`./typo3/sysext/core/bin/typo3 cleanup:rteimages` and allows the following CLI options to be set:
`--update-refindex` - updates the reference index before scanning for lost files. If not set, the user is asked if the task should be run
`--dry-run` - do not copy / delete the files but only list the files that are not wrongly connected or not connected at all.
The PHP class of the old CLI command `TYPO3\CMS\Lowlevel\RteImagesCommand` has been removed.
Impact
======
Calling the old CLI command `./typo3/cli_dispatch.phpsh lowlevel_cleaner rte_images` will result in an error message.
Affected Installations
======================
Any TYPO3 instances using the lowlevel cleaner for finding RTE image files.
Migration
=========
Update the CLI call on your servers to the new command line and available options as shown above.
.. index:: CLI, ext:lowlevel, PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-57385:
==========================================================================================
Deprecation: #57385 - Deprecate parameter $caseSensitive of Extbase Query->like comparison
==========================================================================================
See :issue:`57385`
Description
===========
The argument :php:`$caseSensitive` of the method :php:`Query->like` has been marked as deprecated.
Impact
======
Using the argument will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using custom calls to :php:`Query->like` using the mentioned argument.
Migration
=========
For MySQL change the collation of the queried field to be stored in a case sensitive fashion.
This requires using a collation with a suffix of `_cs` for the field or table. Alternatively
a binary column type can be used. Both solutions will ensure the field will be queried in a
case sensitive fashion.
.. index:: Database, PHP-API, ext:extbase
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-77296:
========================================================================================
Deprecation: #77296 - Deprecate public member parentMenuArr in AbstractMenuContentObject
========================================================================================
See :issue:`77296`
Description
===========
The previously undefined member `parentMenuArr` has been added as public member and marked as deprecated.
Impact
======
The parentMenuArr will be publicly accessible until it is changed to protected in TYPO3 v9.
Affected Installations
======================
Instances that have menus with sublevels and using this member in the itemArrayProcFunc.
Migration
=========
Use the provided API function :php:`getParentMenuArr()` to get the parentMenuArr instead.
This method always returns an array.
If you need the direct parent menuitem of the current sublevel use :php:`getParentMenuItem()` method.
.. index:: Frontend, PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-77524:
=============================================================================
Deprecation: #77524 - Deprecated method fileResource of ContentObjectRenderer
=============================================================================
See :issue:`77524`
Description
===========
The method :php:`ContentObjectRenderer::fileResource()` has been marked as deprecated.
Impact
======
Using the mentioned method will trigger a deprecation log entry.
Affected Installations
======================
Instances that use the method.
Migration
=========
Migrate your code to use :php:`file_get_contents`. Use a call to :php:`$GLOBALS['TSFE']->tmpl->getFileName($fileName)`
for substituting strings like `EXT`.
.. index:: Frontend, PHP-API
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-77732:
=================================================================
Deprecation: #77732 - Deprecate methods of Extbase's ArrayUtility
=================================================================
See :issue:`77732`
Description
===========
The class :php:`\TYPO3\CMS\Extbase\Utility\ArrayUtility` has been marked as deprecated.
Impact
======
Calling any of the methods within the static class will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation calling the methods of that PHP class.
Migration
=========
A migration is available for the following methods:
- :php:`integerExplode`: Use :php:`GeneralUtility::intExplode`
- :php:`trimExplode`: Use :php:`GeneralUtility::trimExplode`
- :php:`arrayMergeRecursiveOverrule`: Use :php:`\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule` or :php:`array_replace_recursive`
- :php:`getValueByPath`: Use :php:`\TYPO3\CMS\Core\Utility\ArrayUtility::getValueByPath`
- :php:`setValueByPath`: Use :php:`\TYPO3\CMS\Core\Utility\ArrayUtility::setValueByPath`
- :php:`unsetValueByPath`: Use :php:`\TYPO3\CMS\Core\Utility\ArrayUtility::removeByPath`
- :php:`sortArrayWithIntegerKeys`: Use :php:`\TYPO3\CMS\Core\Utility\ArrayUtility::sortArrayWithIntegerKeys`
.. index:: Backend, ext:extbase, PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-78134:
==================================================================
Deprecation: #78134 - Deprecate TypoScript option config.noScaleUp
==================================================================
See :issue:`78317`
Description
===========
The TypoScript setting `config.noScaleUp` has been marked as deprecated.
Impact
======
Using this setting `config.noScaleUp` will trigger a deprecation log entry. It will work until it get's removed in TYPO3 v9.
Affected Installations
======================
Instances that use this TypoScript setting.
Migration
=========
Use the provided global TYPO3 configuration :php:`$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling'];` to allow
upscaling of images on a "per installation" basis.
.. index:: Frontend, TypoScript
@@ -0,0 +1,55 @@
.. include:: /Includes.rst.txt
.. _deprecation-78217:
========================================
Deprecation: #78217 - frameset and frame
========================================
See :issue:`78217`
Description
===========
Frameset and frame are not supported in HTML5_ anymore.
The browser support for framesets could be dropped in the future.
Creating a layout based on framesets has been marked deprecated:
* DocumentationFrame_
* DocumentationFrameset_
The following TypoScript has been marked as deprecated:
* :typoscript:`config.frameReloadIfNotInFrameset`
* :typoscript:`config.doctype = xhtml_frames`
* :typoscript:`config.xhtmlDoctype= xhtml_frames`
* :typoscript:`frameSet` and its options
* :typoscript:`FRAME` and its options
* :typoscript:`FRAMESET` and its options
Furthermore the class :php:`FramesetRenderer` has been marked as deprecated.
.. _HTML5: https://www.w3.org/TR/html5/obsolete.html#frames
.. _DocumentationFrame: https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Frame/Index.html
.. _DocumentationFrameset: https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Frameset/Index.html
Impact
======
Using framesets will trigger deprecation log entries.
Affected Installations
======================
All installations using framesets.
Migration
=========
None.
.. index:: Frontend, TypoScript
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-78244:
=====================================================================
Deprecation: #78244 - Deprecate TYPO3_DB and Prepared Statement class
=====================================================================
See :issue:`78244`
Description
===========
The classes `TYPO3\CMS\Core\Database\DatabaseConnection` and `TYPO3\CMS\Core\Database\PreparedStatement` have been marked as deprecated.
This classes have been succeeded by Doctrine DBAL in TYPO3 v8, and will be removed in TYPO3 v9.
Impact
======
Calling any methods of the classes above will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instances with references to `$GLOBALS['TYPO3_DB']` or use instances of the mentioned classes above.
Migration
=========
Use the `ConnectionPool` and the `QueryBuilder` classes to achieve future-proof and proper database abstraction for future TYPO3 versions.
.. index:: Database, PHP-API, Frontend, Backend, CLI
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-78279:
=========================================================================
Deprecation: #78279 - Deprecate top.TYPO3.Backend.ContentContainer.iframe
=========================================================================
See :issue:`78279`
Description
===========
The property :js:`top.TYPO3.Backend.ContentContainer.iframe` has been marked as deprecated.
Impact
======
Using this property will stop working in TYPO3 v9.
Affected Installations
======================
All installations using :js:`top.TYPO3.Backend.ContentContainer.iframe`.
Migration
=========
Use accessor method :js:`top.TYPO3.Backend.ContentContainer.get()` instead.
.. index:: Backend, JavaScript
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-78314:
=========================================================
Deprecation: #78314 - AbstractFunctionModule->getBackPath
=========================================================
See :issue:`78314`
Description
===========
The protected method :php:`AbstractFunctionModule->getBackPath()` has been marked as deprecated, as it is not needed anymore.
Impact
======
Calling the PHP method will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 extension with a PHP class extending the `AbstractFunctionModule` and calling the method above.
Migration
=========
As the method always returns an empty string (since the `backPath` functionality is not needed anymore) the PHP call can be removed.
.. index:: Backend, PHP-API
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-78524:
===============================================================
Deprecation: #78524 - TCA option versioning_followPages removed
===============================================================
See :issue:`78524`
Description
===========
The option `$TCA[$table][ctrl][versioning_followPages]` which was used for branch versioning has been removed.
Additionally the option `$TCA[$table][ctrl][versioningWS]` is now cast to boolean.
The branch / page versioning functionality was removed in TYPO3 v7, but the leftover functionality code has been
completely removed as well.
Impact
======
A deprecation message is thrown when scanning the TCA tree for these options not being properly set or removed.
Affected Installations
======================
Any TYPO3 installation with a TCA definition as mentioned above.
Migration
=========
Remove the setting `$TCA[$table][ctrl][versioning_followPages]` from any TCA definition.
If a TCA table has workspaces enabled, set the option `$TCA[$table][ctrl][versioningWS]` to a boolean (true/false) directly.
.. index:: TCA, ext:workspaces, Backend
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-78581:
===============================================
Deprecation: #78581 - Flex form related parsing
===============================================
See :issue:`78581`
Description
===========
Three flex form data structure related parsing methods have been deprecated:
* :php:`BackendUtility::getFlexFormDS()`
* :php:`GeneralUtility::resolveSheetDefInDS()`
* :php:`GeneralUtility::resolveAllSheetsInDS()`
Impact
======
Calling those PHP methods will trigger a deprecation log entry.
Affected Installations
======================
Extensions calling one of the above methods.
Migration
=========
:php:`BackendUtility::getFlexFormDS()` has been refactored to a combination of two methods
:php:`FlexFormTools->getDataStructureIdentifier()` and :php:`FlexFormTools->parseDataStructureByIdentifier()`.
The two methods are heavily documented and the combination works in many cases just as before. Read the method
comments for a detailed description of their purpose.
Warning: The hook :php:`getFlexFormDSClass` within :php:`BackendUtility::getFlexFormDS()` is no longer called
by the core. Please refer to the according "Breaking" document for details on this topic.
.. index:: PHP-API, FlexForm, Backend
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _deprecation-78628:
==============================================================
Deprecation: #78628 - TCA tree pageTsConfig addItems icon path
==============================================================
See :issue:`78628`
Description
===========
When adding items to `TCA` `type="select"` fields with `pageTSConfig`, the syntax for icons has been changed:
Example to add an item with icon in pages to field category before:
.. code-block:: typoscript
# Add an item with text "staticFromPageTs" to field category in pages
TCEFORM.pages.category.addItems.12345 = staticFromPageTs
# Assign icon to the element
TCEFORM.pages.category.addItems.12345.icon = EXT:any_extension/Resources/Public/Icons/Smiley.png
The path has been deprecated and now accepts icon identifiers from the icon registry only:
.. code-block:: typoscript
# Add an item with text "staticFromPageTs" to field category in pages
TCEFORM.pages.category.addItems.12345 = staticFromPageTs
# Assign icon to the element
TCEFORM.pages.category.addItems.12345.icon = my-registered-icon
Impact
======
Using a file path syntax will trigger a deprecation log entry, but will work until TYPO3 v9.
Affected Installations
======================
Instances that use this PageTSConfig setting with a file path instead of an icon identifier.
Migration
=========
Register the icon within the :php:`IconRegistry` and use an icon identifier instead of the file path.
.. index:: TSConfig, Backend, TCA
@@ -0,0 +1,73 @@
.. include:: /Includes.rst.txt
.. _deprecation-78647:
=================================================================================================
Deprecation: #78647 - Move language files from EXT:lang/locallang_* to Resources/Private/Language
=================================================================================================
See :issue:`78647`
Description
===========
Moved language files from `EXT:lang/locallang_*` to `EXT:lang/Resources/Private/Language`
Impact
======
Language files from `EXT:lang` have been moved to different places into the core.
Affected Installations
======================
All 3rd party extensions that are using language labels from `EXT:lang`
Migration
=========
Move the following references to the new location of the language file:
* lang/locallang_alt_doc.xlf -> lang/Resources/Private/Language/locallang_alt_doc.xlf
* lang/locallang_alt_intro.xlf -> lang/Resources/Private/Language/locallang_alt_intro.xlf
* lang/locallang_browse_links.xlf -> lang/Resources/Private/Language/locallang_browse_links.xlf
* lang/locallang_common.xlf -> lang/Resources/Private/Language/locallang_common.xlf
* lang/locallang_core.xlf -> lang/Resources/Private/Language/locallang_core.xlf
* lang/locallang_csh_be_groups.xlf -> lang/Resources/Private/Language/locallang_csh_be_groups.xlf
* lang/locallang_csh_be_users.xlf -> lang/Resources/Private/Language/locallang_csh_be_users.xlf
* lang/locallang_csh_corebe.xlf -> lang/Resources/Private/Language/locallang_csh_corebe.xlf
* lang/locallang_csh_pages.xlf -> lang/Resources/Private/Language/locallang_csh_pages.xlf
* lang/locallang_csh_sysfilem.xlf -> lang/Resources/Private/Language/locallang_csh_sysfilem.xlf
* lang/locallang_csh_syslang.xlf -> lang/Resources/Private/Language/locallang_csh_syslang.xlf
* lang/locallang_csh_sysnews.xlf -> lang/Resources/Private/Language/locallang_csh_sysnews.xlf
* lang/locallang_csh_web_func.xlf -> func/Resources/Private/Language/locallang_csh_web_func.xlf
* lang/locallang_csh_web_info.xlf -> lang/Resources/Private/Language/locallang_csh_web_info.xlf
* lang/locallang_general.xlf -> lang/Resources/Private/Language/locallang_general.xlf
* lang/locallang_login.xlf -> lang/Resources/Private/Language/locallang_login.xlf
* lang/locallang_misc.xlf -> lang/Resources/Private/Language/locallang_misc.xlf
* lang/locallang_mod_admintools.xlf -> lang/Resources/Private/Language/locallang_mod_admintools.xlf
* lang/locallang_mod_file_list.xlf -> lang/Resources/Private/Language/locallang_mod_file_list.xlf
* lang/locallang_mod_file.xlf -> lang/Resources/Private/Language/locallang_mod_file.xlf
* lang/locallang_mod_help_about.xlf -> lang/Resources/Private/Language/locallang_mod_help_about.xlf
* lang/locallang_mod_help_cshmanual.xlf -> lang/Resources/Private/Language/locallang_mod_help_cshmanual.xlf
* lang/locallang_mod_help.xlf -> lang/Resources/Private/Language/locallang_mod_help.xlf
* lang/locallang_mod_system.xlf -> lang/Resources/Private/Language/locallang_mod_system.xlf
* lang/locallang_mod_usertools.xlf -> lang/Resources/Private/Language/locallang_mod_usertools.xlf
* lang/locallang_mod_user_ws.xlf -> lang/Resources/Private/Language/locallang_mod_user_ws.xlf
* lang/locallang_mod_web_func.xlf -> func/Resources/Private/Language/locallang_mod_web_func.xlf
* lang/locallang_mod_web_info.xlf -> lang/Resources/Private/Language/locallang_mod_web_info.xlf
* lang/locallang_mod_web_list.xlf -> lang/Resources/Private/Language/locallang_mod_web_list.xlf
* lang/locallang_mod_web.xlf -> lang/Resources/Private/Language/locallang_mod_web.xlf
* lang/locallang_show_rechis.xlf -> lang/Resources/Private/Language/locallang_show_rechis.xlf
* lang/locallang_t3lib_fullsearch.xlf -> lang/Resources/Private/Language/locallang_t3lib_fullsearch.xlf
* lang/locallang_tca.xlf -> lang/Resources/Private/Language/locallang_tca.xlf
* lang/locallang_tcemain.xlf -> lang/Resources/Private/Language/locallang_tcemain.xlf
* lang/locallang_tsfe.xlf -> lang/Resources/Private/Language/locallang_tsfe.xlf
* lang/locallang_tsparser.xlf -> lang/Resources/Private/Language/locallang_tsparser.xlf
* lang/locallang_view_help.xlf -> lang/Resources/Private/Language/locallang_view_help.xlf
* lang/locallang_wizards.xlf -> lang/Resources/Private/Language/locallang_wizards.xlf
.. index:: ext:lang
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _deprecation-78668:
=========================================================
Deprecation: #78668 - TypoScript option config.mainScript
=========================================================
See :issue:`78668`
Description
===========
The TypoScript option `config.mainScript` allows to set the frontend entrypoint from "index.php" to something else, and is respected
when links are built, but not when e.g. previewing a page from the backend. This option has been marked as deprecated.
Impact
======
Setting this TypoScript option will trigger a deprecation log entry in the admin panel.
Affected Installations
======================
Any installation using this TypoScript option.
.. index:: TypoScript, Frontend
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _deprecation-78670:
=========================================================
Deprecation: #78670 - Deprecated CharsetConverter methods
=========================================================
See :issue:`78670`
Description
===========
The `symfony/polyfill-mbstring` package provides us with `mb_string` functionality in all installations.
Therefore some methods of :php:`CharsetConverter` have been marked as deprecated, since the equivalent `mb_string` functions can be used directly:
- :php:`strlen()`: use :php:`mb_strlen()` directly
- :php:`substr()`: use :php:`mb_substr()` directly
- :php:`strtrunc()`: use :php:`mb_strcut()` directly
- :php:`convCapitalize()`: use :php:`mb_convert_case()` directly
- :php:`conv_case()`: use :php:`mb_strtolower()` or :php:`mb_strtoupper()` directly
- :php:`utf8_substr()`: use :php:`mb_substr()` directly
- :php:`utf8_strlen()`: use :php:`mb_strlen()` directly
- :php:`utf8_strtrunc()`: use :php:`mb_strcut()` directly
- :php:`utf8_strpos()`: use :php:`mb_strpos()` directly
- :php:`utf8_strrpos()`: use :php:`mb_strrpos()` directly
- :php:`utf8_byte2char_pos()`: no replacement
- :php:`euc_strtrunc()`: use :php:`mb_strcut()` directly
- :php:`euc_substr()`: use :php:`mb_substr()` directly
- :php:`euc_strlen()`: use :php:`mb_strlen()` directly
- :php:`euc_char2byte_pos()`: no replacement
- :php:`$fourByteSets`: no replacement
Impact
======
Calling the deprecated :php:`CharsetConverter` methods will trigger a deprecation log entry.
Affected Installations
======================
Any installation using third party extensions leveraging the mentioned :php:`CharsetConverter` functionality.
Migration
=========
Use the equivalent mb_string methods directly as denoted above.
.. index:: PHP-API
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-78679:
==========================================================================
Deprecation: #78679 - Crawler inclusion via require_once in Indexed Search
==========================================================================
See :issue:`78679`
Description
===========
The system extension "Indexed Search" has support for `EXT:crawler`, by using the crawler library
to index a page.
This functionality is done under the hood via the Indexer class, which does a manual PHP call on
"require_once" - code which is not necessary anymore, since the TYPO3 Core class loader is in place. The public
PHP method `TYPO3\CMS\IndexedSearch\Indexer->includeCrawlerClass()` is therefore marked as
deprecated.
Impact
======
Calling the method `TYPO3\CMS\IndexedSearch\Indexer->includeCrawlerClass()` will trigger a
deprecation log entry.
Affected Installations
======================
Any TYPO3 installation with a custom indexer written in PHP, and Indexed Search and Crawler
installed, and the custom indexer using the method call above.
Migration
=========
Remove the function call, as TYPO3 includes the PHP class automatically.
.. index:: ext:indexed_search, PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _deprecation-78733:
======================================================================
Deprecation: #78733 - CallUserFunction "&" token for singleton objects
======================================================================
See :issue:`78733`
Description
===========
The method `GeneralUtility::callUserFunction()` allows to send the callee (the user-defined function)
to be prepended with a "&" before the method name to add the instantiated object to a "singleton" pool
during a single request. This functionality has been marked as deprecated as it can easily be solved by
implementing a class as singleton.
This way, the object is always a singleton, even when it is called via `GeneralUtility::makeInstance()`.
Impact
======
Calling `callUserFunction()` with a "&" symbol will trigger a deprecation log entry.
Affected Installations
======================
Any installation with a hook or user function which is registered with an ampersand "&" symbol.
Migration
=========
The class of the user function / method can implement the `SingletonInterface` to achieve the same behaviour.
.. index:: PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-78872:
==================================================================================
Deprecation: #78872 - Deprecate method LocalizationController::getRecordUidsToCopy
==================================================================================
See :issue:`78872`
Description
===========
The method :php:`\TYPO3\CMS\Backend\Controller\Page\LocalizationController::getRecordUidsToCopy()`
is not used at any place in the TYPO3 core.
Impact
======
Calling the deprecated :php:`getRecordUidsToCopy()` method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using the mentioned method :php:`getRecordUidsToCopy()`.
Migration
=========
No migration available.
.. index:: Backend, PHP-API
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _feature-29399:
=======================================================================================
Feature: #29399 - OptionViewHelper and OptgroupViewHelper for use with SelectViewHelper
=======================================================================================
See :issue:`29399`
Description
===========
Allows manually definition of all options and optgroups for
the `f:form.select` parent field as tag contents of the
select field. The added ViewHelpers are TagBasedViewHelpers
which means they support all standard HTML attributes.
Note that while tag content rendering is now supported,
it is **STILL** not possible to create :html:`<option>` tags
manually - you **HAVE** to use the form fields!
Example:
.. code-block:: html
<f:form.select name="myproperty">
<f:form.select.option value="1">Option one</f:form.select.option>
<f:form.select.option value="2">Option two</f:form.select.option>
<f:form.select.optgroup>
<f:form.select.option value="3">Grouped option one</f:form.select.option>
<f:form.select.option value="4">Grouped option twi</f:form.select.option>
</f:form.select.optgroup>
</f:form.select>
Impact
======
* Adds two new ViewHelpers
* Changes `SelectViewHelper` to allow tag content (but not manual options created without using `f:form.select.*`)
.. index:: Fluid
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-52286:
====================================================================================
Feature: #52286 - Add option to "system status updates" report-job to send all tests
====================================================================================
See :issue:`52286`
Description
===========
Sometimes it is useful to also get every test in the "System Status Updates (reports)" via email.
A checkbox was added to the job configuration for the decision to get a mail only if the
system has WARNING or ERROR events, or just get a mail for everything.
If the checkbox is not set (default) it works like before, including WARNING and ERROR events only.
Impact
======
If the checkbox `Notification for all type of status, not only warning and error` is checked,
then the `System Status Update (reports)` contains all type of notifications.
.. index:: Backend, ext:reports
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _feature-58637:
=========================================================
Feature: #58637 - Purge language packs in language module
=========================================================
See :issue:`58637`
Description
===========
The language module in the backend offers the possibility to activate and deactivate language packs.
If deactivating a language pack that previously had been loaded, the data stays in `<labels-path>/<locale>/`.
A remove button has been added to the actions. With the remove action the language is disabled and the data is removed
from the `<labels-path>/<locale>/` directory.
Impact
======
The language data can now be removed from the installation file system using the backend user interface.
.. index:: Backend
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _feature-67909:
=========================================================================
Feature: #67909 - Add hook to DataHandler - localize - translateToMessage
=========================================================================
See :issue:`67909`
Description
===========
By introducing a new hook to the `localize()` function (the `translateToMessage` part in particular) you are now able to
use external translation services and speed-up translation of the content and even add a custom
transliteration function that would handle various content transformations.
Impact
======
A new hook is available at:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processTranslateToClass']
Implement it for example as follows:
.. code-block:: php
class YourHookClass {
public function processTranslateTo_copyAction(&$content, $lang, $dataHandler, $fieldName) {
// Do something with content (translate, transliterate etc)
}
}
Note
======
Since Version 8.7.16 hooks now get a fourth parameter for the currently processed fieldname.
.. index:: PHP-API, Backend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _feature-73626:
============================================================================
Feature: #73626 - numberOfResults should be configurable and report overflow
============================================================================
See :issue:`73626`
Description
===========
Adds possibility to overwrite the maximum number of Indexed Search results with TypoScript
which previously was limited to 100.
The TypoScript setting `plugin.tx_indexedsearch.settings.blind.numberOfResults` now became
a list of values. If the number of results sent in the request does not match any value of
this list, the first value will be used to protect against DoS attacks.
Values from `plugin.tx_indexedsearch.settings.blind.numberOfResults` are used as the
options in the selectbox in advanced search mode. To keep backward compatibility the default
values are 10, 25, 50 and 100.
Impact
======
The TypoScript setting `plugin.tx_indexedsearch.settings.blind.numberOfResults` can be now
a list of available number of results. Because of that it is possible to overwrite the list
of values displayed in the advanced search mode. The first value from the list will be used
as default.
.. index:: ext:indexed_search, TypoScript, Frontend
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _feature-76085:
============================================================
Feature: #76085 - Add fluid debug information to admin panel
============================================================
See :issue:`76085`
Description
===========
A new setting in the admin panel (Preview > Show fluid debug output) enables showing fluid debug output.
If the checkbox is enabled, the path to the template file of a partial and the name of a section will be shown in the
frontend directly above the markup.
With this feature an integrator can easily find the correct template and section.
Impact
======
Activating this option can break the output in frontend or may result in unexpected behavior.
.. index:: Frontend
@@ -0,0 +1,19 @@
.. include:: /Includes.rst.txt
.. _feature-77757:
======================================================================
Feature: #77757 - Enable rechecking whether an UpdateWizard should run
======================================================================
See :issue:`77757`
Description
===========
It is now possible to reset the upgrade wizards marked as done. In Install Tool you
will find a list of wizards that have been marked as done, additionally with a
checkbox for each to reset their status. Then the wizard will test whether
it needs to be executed again.
.. index:: Backend
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _feature-77910:
=========================================================
Feature: #77910 - EXT:form - introduce new form framework
=========================================================
See :issue:`77910`
Description
===========
A flexible framework for building forms has been integrated. It replaces the legacy 'form wizard' based on ExtJS and the
depending frontend rendering system.
The new backend 'form editor' relies on vanilla JS and jQuery. Different JS patterns have been applied to ensure
a modern architecture, high flexibility and extensibility.
A new backend module lists all existing forms and allows the creation of new ones. The 'mailform' content element
has been reworked. It lists available forms and enables the backend editor to override certain settings, e.g. 'finisher'
settings (formerly known as 'postProcessors').
Until now it was not possible to customize and extend the 'form editor'. To allow the registration of new
finishers, validators and pre-defined form elements a lot of architectural changes would have been necessary. After a long
conceptional phase the team decided to remove the former code base, backport the 'form' package of the Flow
project and improve the given ideas and concepts. The result is a new form extension. A lot of code received
major improvements and tons of additional features have been integrated.
The list of features is long and impressive. The documentation will explain the ideas, concept and architecture
as well as the functionality in detail. The following list names some of them:
* YAML as configuration and description language including inheritances and overrides.
* File-based configuration.
* All JavaScript components of the form wizard (and the wizard itself) can be replaced or extended.
* Own PHP renderers for form and/or form elements are possible.
* Create entire forms via API.
* Create conditions for form elements and validators programmatically.
* Create 'prototypes' and use them as boilerplate.
* Create new form elements and use them in the wizard.
* Uploads are handled as FAL objects.
* Ships with a bunch of built-in finishers, like email, redirect, save to database.
* Create own finishers. Override those in the content element.
* Create and apply own validators.
* Multi language support.
* Multi step support.
* Multiple forms per page.
* Built-in spam protection (honeypot).
Impact
======
Happy little wizard.
.. index:: Frontend, PHP-API, JavaScript, ext:form, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-78002:
============================================================
Feature: #78002 - Enforce cHash argument for Extbase actions
============================================================
See :issue:`78002`
Description
===========
`TypoScriptFrontendController::reqCHash()` is now called for Extbase frontend
plugin actions just like they are usually called for AbstractPlugin.
This provides a more reliable page caching behavior by default and with zero
configuration for extension authors.
With the feature switch `requireCHashArgumentForActionArguments` this behavior
can be disabled, which could be useful, if all actions in a plugin are uncached
or one wants to manually control the cHash behavior.
Impact
======
The enforcing of a cHash results in a 404, if plugin arguments are present but
cHash is not, which would also happen if the plugin arguments were added to
`cHashRequiredParameters` configuration.
.. index:: Frontend, PHP-API, ext:extbase
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-78103:
=====================================================================
Feature: #78103 - Add missing information status for addSystemMessage
=====================================================================
See :issue:`78103`
Description
===========
Adds the possibility to pass and set status parameter `TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus`
through `addSystemInformation()` in `SystemInformationToolbarItem`.
Impact
======
All system information added by `addSystemInformation()` will now pass `InformationStatus::STATUS_NOTICE`
as default value.
.. index:: Backend, PHP-API
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _feature-78116:
=======================================================================================
Feature: #78116 - Extbase support for Doctrine's native DBAL Statement and QueryBuilder
=======================================================================================
See :issue:`78116`
Description
===========
With the change to Doctrine DBAL Extbase's direct query functionality also supports `QueryBuilder` objects and instances of
`\Doctrine\DBAL\Statement` as prepared statements instead of only `\TYPO3\CMS\Core\Database\PreparedStatement`.
The following example could happen inside any Extbase Repository using native Doctrine DBAL statements:
.. code-block:: php
$connection = $this->objectManager->get(ConnectionPool::class)->getConnectionForTable('mytable');
$statement = $this->objectManager->get(
\Doctrine\DBAL\Statement::class
'SELECT * FROM mytable WHERE uid=? OR title=?',
$connection
);
$query = $this->createQuery();
$query->statement($statement, [$uid, $title]);
The following example shows the usage with the QueryBuilder object:
.. code-block:: php
$queryBuilder = $this->objectManager->get(ConnectionPool::class)->getQueryBuilderForTable('mytable');
... do the SQL query with the query builder.
$query = $this->createQuery();
$query->statement($queryBuilder);
.. index:: Database, PHP-API, ext:extbase
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-78384:
==============================================================
Feature: #78384 - Check ext tables TCA changes in install tool
==============================================================
See :issue:`78384`
Description
===========
The install tool has a new feature to check extensions for :file:`ext_tables.php` files that still change the global `TCA` array.
Impact
======
Changing the global `TCA` array in :file:`ext_tables.php` is not allowed and can lead to failing or incomplete frontend requests.
The feature helps to find affected, loaded extensions.
.. index:: TCA, Backend
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _feature-78415:
=================================================================================
Feature: #78415 - Global Fluid ViewHelper namespaces moved to TYPO3 configuration
=================================================================================
See :issue:`78415`
Description
===========
By storing Fluid's namespaces in `$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']` we can allow adding or
extending the global namespaces from third party packages in for example :file:`ext_localconf.php` or by simply specifying
the namespace arrays in :file:`LocalConfiguration.php`.
In terms of performance there is nearly zero impact but in terms of flexibility this should provide the ultimate way
to manage global namespaces as configuration; something that currently is only possible by implementing custom
ViewHelperResolvers.
Impact
======
* Site administrators and third party ViewHelper packages will be able to manipulate the global
namespace `f:` in configuration
* Third party ViewHelper packages will be able to register new global namespaces
* Template developers can use such global namespaces without first importing them and can use them
in all Fluid templates regardless of context.
.. index:: Fluid, LocalConfiguration, PHP-API
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _feature-78523:
==============================================================================
Feature: #78523 - Suggest wizard provides option to define ordering of results
==============================================================================
See :issue:`78523`
Description
===========
It is now possible to set the ordering of results delivered by the suggest wizard.
The new option is called php:`orderBy => 'somefield ASC'` and can hold the usual SQL order-by definition.
Example TCA configuration for `EXT:news` suggest wizard returning the related articles sorted by datetime:
.. code-block:: php
'config' => [
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'tx_news_domain_model_news',
'foreign_table' => 'tx_news_domain_model_news',
'MM_opposite_field' => 'related_from',
'size' => 5,
'minitems' => 0,
'maxitems' => 100,
'MM' => 'tx_news_domain_model_news_related_mm',
'wizards' => [
'suggest' => [
'type' => 'suggest',
'default' => [
'searchWholePhrase' => true,
'addWhere' => ' AND tx_news_domain_model_news.uid != ###THIS_UID###',
'orderBy => 'datetime DESC',
]
],
],
]
.. index:: Backend, TCA
@@ -0,0 +1,26 @@
.. include:: /Includes.rst.txt
.. _feature-78575:
=================================================================
Feature: #78575 - Enumeration constants don't provide their names
=================================================================
See :issue:`78575`
Description
===========
Requesting the name of Enumeration constants has been introduced.
There are two methods you can use:
:php:`MyEnumerationClass::getName($value);` will return the name exactly as it is. Usually this will be all uppercase and underscores.
:php:`MyEnumerationClass::getHumanReadableName($value);` replaces underscores with spaces and turns all words into lowercase with the first letter uppercase.
Impact
======
You can use the constant names as part of your application more easily.
.. index:: PHP-API
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _feature-78672:
==========================================================
Feature: #78672 - Introduce fluid data processor for menus
==========================================================
See :issue:`78672`
Description
===========
This menu processor utilizes HMENU to generate a json encoded menu
string that will be decoded again and assigned to FLUIDTEMPLATE as a
variable. Additional DataProcessing is supported and will be applied
to each record.
Options:
`as` The variable to be used within the result
`levels` Number of levels of the menu
`expandAll` If false, submenus will only render if the parent page is active
`includeSpacer` If true, the doctype "Spacer" will be included in the menu
`titleField` Field that should be used for the title
See HMENU docs for more options.
https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Hmenu/Index.html
Example TypoScript configuration:
.. code-block:: typoscript
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = list
special.value.field = pages
levels = 7
as = menu
expandAll = 1
includeSpacer = 1
titleField = nav_title // title
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
.. index:: Fluid, TypoScript, Frontend
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _feature-78842:
=======================================================================
Feature: #78842 - Let FLUIDTEMPLATE mimic an actual extbase web request
=======================================================================
See :issue:`78842`
Description
===========
Adds the possibility to let the FLUIDTEMPLATE content element mimic an
actual extbase web request.
This makes it possible to access submitted data like in extbase with
`->controllerContext->getRequest()->getArguments()`
Impact
======
Data which was submitted through a `FLUIDTEMPLATE` content element are now
available within
.. code-block:: php
$view->getRenderingContext()
->getControllerContext()
->getRequest()
->getArguments()
Affected Installations
======================
Any installation which use the `FLUIDTEMPLATE` content element which are
initialized with the following settings:
.. code-block:: typoscript
extbase.pluginName
extbase.controllerExtensionName
extbase.controllerName
extbase.controllerActionName
.. index:: Frontend, TypoScript, PHP-API
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _important-17904-1668719172:
==============================================================================
Important: #17904 - showAccessRestrictedPages does not work with special menus
==============================================================================
See :issue:`17904`
Description
===========
HMENU setting :typoscript:`showAccessRestrictedPages = NONE` now acts as documented in
:confval:`TypoScript reference <t3tsref:menu-common-properties-showaccessrestrictedpages>`.
Before: using the option renders :html:`<a>Page title</a>` when page is inaccessible.
After: using the option renders :html:`<a href="index.php?id=123">Page title</a>`
when page is not accessible.
.. index:: Frontend, TypoScript
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _important-72050:
============================================================================
Important: #72050 - encapsLines does not render duplicate paragraphs anymore
============================================================================
See :issue:`72050`
Description
===========
In the past the `_encapsLines` TypoScript function rendered two paragraphs for one
empty trailing line-break in the content.
See :ref:`t3tsref:encapslines`
This behaviour is now fixed.
Your Frontend appearance might change if you had multiple empty trailing paragraphs
in your RTE content. The last paragraph is no longer rendered twice in the Frontend.
.. index:: Frontend, RTE, TypoScript
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _important-75232:
===================================================
Important: #75232 - Spread TypeConverter priorities
===================================================
See :issue:`75232`
Description
===========
The priorities of the "TypeConverter" classes were quite packed. To be able to
register own type converters between, before and after the core converters the
priorities were spread from 0, 1 and 2 to 10 and 20.
If you register your own TypeConverter(s) make sure they are using the right priority.
.. index:: PHP-API
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _important-77702:
======================================================================================
Important: #77702 - Custom render types for date and datetime fields must use ISO-8601
======================================================================================
See :issue:`77702`
Description
===========
Historically, TYPO3 used its own special, localized formats for passing date and
datetime values between server and client. To get rid of any possible problems with
that, we now use ISO-8601, a standard format for date/time representations.
Due to that, you need to adapt your **custom FormEngine render types** if you use
them for any date/datetime fields, even those stored as integers in the database
(eval=date/datetime).
.. index:: Backend, Database, TCA
@@ -0,0 +1,123 @@
.. include:: /Includes.rst.txt
.. _important-78383:
================================================================================
Important: #78383 - TCA: Streamline field positions in tabs for recurring fields
================================================================================
See :issue:`78383`
Description
===========
In TYPO3 there are some recurring field definitions shared by a lot of records.
These fields are mostly defined in :php:`$GLOBALS['TCA']['<mytable>']['ctrl']`.
Furthermore the generic categories are taken into account.
These fields are used by core records and third party extensions.
These fields should have a generic position in the edit form (`EditDocumentController` / `FormEngine`) to allow the
editor or integrator to have a valid guess where to look for a common option. Furthermore the fields should be placed
in the given order in the certain tab.
There should be no records not using tabs to group fields.
See the documentation for the definition of the recurring fields:
* ctrl_
* categories_
.. _ctrl: https://docs.typo3.org/typo3cms/TCAReference/Reference/Ctrl/Index.html
.. _categories: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html
**Legend**
For the fields name in "Generic fields" the actual value of
:php:`$GLOBALS['TCA']['<mytable>']['ctrl']['<generic field>']` should be set in
:php:`$GLOBALS['TCA']['<mytable>']['types'][<mytype>]['showitem']`.
General (first tab)
-------------------
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general`
Generic fields:
* `type` (if there is a field that is not set as type in ctrl, but has a similar meaning, set it to the first
position)
* `label`
* `label_alt` (if the fields are directly related to the label; especially if `label_alt_force` is set `true`)
Additional fields:
Fields that reflect the main focus of an editor or integrator working with the record.
Following tabs
--------------
The following tabs should be defined by the specific record. They should have speaking names. Avoid unspecific
labelling (for example options, settings, extended, miscellaneous) as those labels do not guide the editor.
Language
--------
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language`
Generic fields:
* `languageField`
* `transOrigPointerField`
Additional fields:
Other fields that affects the language or translation handling.
Access
------
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access`
Generic fields:
* `enablecolumns`
* `disabled`
* `starttime` (Use a palette for starttime and endtime)
* `endtime`
* `fe_group`
* `fe_admin_lock`
* `editlock`
Additional fields:
Other fields that affects the access handling in FE or BE.
Categories
----------
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories`
Generic fields:
Field that is defined by :php:`\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable`
It is not recommended to use the configuration option `defaultCategorizedTables` to make a table categorizable as
the tab position might not be consistent.
Additional fields:
Other fields that are category related (e.g. select main category)
Notes
-----
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes`
Generic fields:
`descriptionColumn`
Additional fields:
Other fields for internal remarks of editors or integrators.
These fields should not affect the website frontend.
Extended
--------
Label:
`LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended`
Generic fields:
No.
Additional fields:
No.
There should be no additional field in this tab as the labelling is too generic to provide a good UX.
It should be only added to prevent that accidentally added fields from third party extensions are placed in last
tab.
.. index:: TCA, Backend, LocalConfiguration
+52
View File
@@ -0,0 +1,52 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-8-5:
8.5 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-*