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,53 @@
.. include:: /Includes.rst.txt
.. _breaking-38496:
===============================================================
Breaking: #38496 - Shortcut redirects append all URL parameters
===============================================================
See :issue:`38496`
Description
===========
When a user accesses a shortcut page, all provided URL parameters are appended to
the target URL.
**Example:**
Page with UID 2 is a shortcut to page with UID 1 and these `linksVars` are configured:
.. code-block:: typoscript
config.linkVars = L
..
Old behavior:
http://mydomain.tld?id=2&L=1&customparam=X will redirect to http://mydomain.tld?id=1&L=1
New behavior:
http://mydomain.tld?id=2&L=1&customparam=X will redirect to http://mydomain.tld?id=1&L=1&customparam=X
Impact
======
The target URL of a shortcut may change when additional parameters are provided in the URL.
Affected Installations
======================
All installations using shortcut pages are affected.
Migration
=========
There is no migration available.
.. index:: Frontend, TypoScript
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-52877:
========================================
Breaking: #52877 - Remove ExtJS Viewport
========================================
See :issue:`52877`
Description
===========
The ExtJS component `TYPO3.Viewport` has been removed from the TYPO3 Core, `Ext.layout` and `Ext.Viewport` are no longer
used in the backend viewport.
Impact
======
- Calling the removed ExtJS components `TYPO3.Viewport` or `TYPO3.backendContentIframePanel` will result in an error
- The ability to stack content with cards with `TYPO3.Viewport.ContentCards` is no longer supported
Affected Installations
======================
Any TYPO3 installations using custom extensions based on ExtJS which rely on the above mentioned components.
Migration
=========
There is no migration available.
.. index:: Backend, JavaScript
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _breaking-66995:
=================================================
Breaking: #66995 - ObjectAccess behaviors changed
=================================================
See :issue:`66995`
Description
===========
The following changes have been implemented in ObjectAccess:
* Uses more native PHP methods where reasonable
* Uses fewer method calls where reasonable
* Gets rid of a variables passed by reference
* More cases return ``null`` rather than throw Exceptions
* Fastest decisions and access methods come first
* Reflection-based access isolated to edge cases and
access with the "force direct access" flag enabled.
* Sacrifices ability to read objects of types other
than persisted objects contained in an ObjectStorage
or subclass of ObjectStorage.
* Changes verdict from ``false`` to ``true`` when
determining if a dynamically added property exists on
an object (these are by definition publicly accessible).
Impact
======
* Performance improvement; optimising for most frequent case coming first, skipping expensive Reflection etc.
* Reflection based access only happens when "force" flag is set to true in getProperty / getPropertyPath
* Removes support for using objects of types other than persisted objects in any ObjectStorage implementation.
* Changes behavior when accessing dynamically added properties on objects from previously false to now true (by definition they are public). This
improves compatibility with JSON sources decoded to stdClass for example.
Affected Installations
======================
* Any code using `ObjectStorage` combined with objects that are not persistent objects (Extbase models)
* Any code passing `stdClass` with dynamic properties to ``ObjectAccess::getProperty()`` and expecting ``null`` (real value will now be returned)
Migration
=========
* If you have any `ObjectStorage` implementation containing other types than persisted objects, switch to any alternative (`Iterator`, `ArrayAccess`, etc.)
* If you have Extbase code or Fluid templates using `ObjectAccess` to read `stdClass` instances with dynamically added properties and your code expects a
false verdict for such properties (highly unlikely!) inverse any conditions depending on the resolved value being null or empty to expect the actual
value of the value you address.
.. index:: PHP-API, ext:extbase
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-75031:
==========================================================================================
Breaking: #75031 - Fluidification of TypoScriptTemplateInformationModuleFunctionController
==========================================================================================
See :issue:`75301`
Description
===========
:php:`TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateInformationModuleFunctionController->tableRow();` has been removed.
Impact
======
Calling this method will result in a fatal error.
Affected Installations
======================
Any installations calling :php:`TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateInformationModuleFunctionController->tableRow();`
Migration
=========
There is no migration available.
.. index:: PHP-API, Backend, ext:tstemplate
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-75032:
=============================================================================================
Breaking: #75032 - Fluidification of TypoScriptTemplateConstantEditorModuleFunctionController
=============================================================================================
See :issue:`75032`
Description
===========
:php:`TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateConstantEditorModuleFunctionController->displayExample();` has been removed.
Impact
======
Calling this method will result in a fatal error.
Affected Installations
======================
All installations using :php:`TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateConstantEditorModuleFunctionController->displayExample();`
Migration
=========
There is no migration available, pleas write your own function.
.. index:: PHP-API, Backend, ext:tstemplate
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77379:
===============================================
Breaking: #77379 - Doctrine: Typo3DbQueryParser
===============================================
See :issue:`77379`
Description
===========
While migrating the database endpoint for the persistence functionality of Extbase to Doctrine DBAL, the `Typo3DbQueryParser` class
has been completely rewritten to work on a `QueryBuilder` object instead of plain arrays and strings. The PHP method
:php:`Typo3DbQueryParser->parseQuery()` has been removed, instead the new equivalent
:php:`Typo3DbQueryParser->convertQueryToDoctrineQueryBuilder()` has been introduced.
Additionally, the PHP method :php:`Typo3DBBackend->injectQueryParser()` has been removed, as the `Typo3DbQueryParser` class is not a
singleton instance anymore but always rebuilt when needed.
Impact
======
Calling one of the methods above will result in a fatal PHP error.
Affected Installations
======================
TYPO3 instances with custom Extbase database backend and parsing functionality.
Migration
=========
Switch to Doctrine DBAL and :php:`Typo3DbQueryParser->convertQueryToDoctrineQueryBuilder()` which results in the same behaviour.
.. index:: PHP-API, Database
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-77547:
=============================================================================
Breaking: #77547 - Behaviour of RecordCollectionRepository::findByUid changed
=============================================================================
See :issue:`77547`
Description
===========
The behaviour of :php:`RecordCollectionRepository::findByUid()` has changed.
When TYPO3 is in Frontend mode, the method will now respect the configured enable fields.
Instead of returning an object that is supposed to be disabled due to being hidden or
having a start date in the future, or an end date in the past, it will now return :php:`null`.
Impact
======
Using the `RecordCollectionRepository` expecting to fetch disabled records while TYPO3 is
in Frontend mode will not yield the expected result.
Affected Installations
======================
Any installation that uses the :typoscript:`FILES` cObject, e.g. via the `uploads` CType, as well as
any installation with a 3rd party extension that uses the named method.
Migration
=========
If the previous behaviour is wanted, the TCA of the used collection table needs to
be overridden to not use the configured enable columns.
.. index:: PHP-API, Frontend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-77592:
=============================================================
Breaking: #77592 - Dropped TCA option showIfRTE in type=check
=============================================================
See :issue:`77592`
Description
===========
The TCA setting `showIfRTE` for type=check is not evaluated anymore and has been removed from the TCA on all fields.
Impact
======
All TCA columns having this option set will be shown at any time inside FormEngine. The option has been removed from the final TCA
used inside TYPO3.
The TCA migration will throw a deprecation message when building the final TCA.
Affected Installations
======================
TYPO3 instances using old extensions which provide custom TCA configurations having this option set.
Migration
=========
Remove the setting from the TCA, and if still needed, use a custom display condition to achieve the same functionality.
.. index:: TCA, Backend, RTE
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-77630:
======================================
Breaking: #77630 - Remove wizard icons
======================================
See :issue:`77630`
Description
===========
The following icons have been removed from :file:`typo3/sysext/backend/Resources/Public/Images/FormFieldWizard/`:
- :file:`wizard_add.gif`
- :file:`wizard_edit.gif`
- :file:`wizard_list.gif`
- :file:`wizard_table.gif`
- :file:`wizard_link.gif`
- :file:`wizard_rte.gif`
Impact
======
The mentioned icons can not be used anymore.
Affected Installations
======================
Any installation using those icons.
Migration
=========
The TCA migration migrates the icon calls to the new output if used as wizard icon.
- :file:`wizard_add.gif` => `actions-add`
- :file:`wizard_edit.gif` => `actions-open`
- :file:`wizard_list.gif` => `actions-system-list-open`
- :file:`wizard_table.gif` => `content-table`
- :file:`wizard_link.gif` => `actions-wizard-link`
- :file:`wizard_rte.gif` => `actions-wizard-rte`
.. index:: Backend
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _breaking-77693:
=========================================
Breaking: #77693 - Move icons from t3skin
=========================================
See :issue:`77693`
Description
===========
Icons from :file:`EXT:t3skin/` have been removed or moved to different locations.
Impact
======
References of the following images of EXT:t3skin will throw a 404 not found:
* :file:`typo3/sysext/t3skin/icons/gfx/error.png`
* :file:`typo3/sysext/t3skin/icons/gfx/i/_icon_ftp.gif`
* :file:`typo3/sysext/t3skin/icons/gfx/information.png`
* :file:`typo3/sysext/t3skin/icons/gfx/notice.png`
* :file:`typo3/sysext/t3skin/icons/gfx/warning.png`
References of the following images of EXT:t3skin/icons/gfx/i have been moved:
* :file:`typo3/sysext/t3skin/icons/gfx/icon_fatalerror.gif` => :file:`typo3/sysext/backend/Resources/Public/Icons/icon_fatalerror.gif`
* :file:`typo3/sysext/t3skin/images/icons/status/status-edit-read-only.png` => :file:`typo3/sysext/backend/Resources/Public/Icons/status-edit-read-only.png`
* :file:`typo3/sysext/t3skin/images/icons/status/warning-in-use.png` => :file:`typo3/sysext/backend/Resources/Public/Icons/warning-in-use.png`
* :file:`typo3/sysext/t3skin/images/icons/status/warning-lock.png` => :file:`typo3/sysext/backend/Resources/Public/Icons/warning-lock.png`
* :file:`typo3/sysext/t3skin/images/icons/status/status-reference-hard.png` => :file:`typo3/sysext/impexp/Resources/Public/Icons/status-reference-hard.png`
* :file:`typo3/sysext/t3skin/images/icons/status/status-reference-soft.png` => :file:`typo3/sysext/impexp/Resources/Public/Icons/status-reference-soft.png`
Affected Installations
======================
Installations or extensions which have references to icons in :file:`EXT:t3skin/icons/`.
Migration
=========
No migration
.. index:: Backend, ext:t3skin
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77700:
============================================================================
Breaking: #77700 - Extension indexed_search_mysql merged into indexed_search
============================================================================
See :issue:`77700`
Description
===========
The extension `indexed_search_mysql` has been removed and its functionality was merged into
EXT:`indexed_search`. The `MySQL` specific search based on fulltext indexes can
be enabled with a feature flag within the extension configuration of the extension manager.
Impact
======
If extension `indexed_search_mysql` has been loaded, the feature flag `useMysqlFulltext`
within the extension configuration of the ExtensionManager `indexed_search` has to be
set, otherwise `indexed_search` falls back to the potentially slower non-fulltext based
default search algorithm.
Affected Installations
======================
Instances with extension `indexed_search_mysql` loaded.
Migration
=========
Full functionality can be kept by enabling the feature toggle `useMysqlFulltext` within
the extension configuration of `indexed_search`.
.. index:: LocalConfiguration, ext:indexed_search, ext:indexed_search_mysql
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-77728:
====================================================================
Breaking: #77728 - Remove obsolete page tree and click menu settings
====================================================================
See :issue:`77728`
Description
===========
The following obsolete properties have been removed:
- :php:`FileSystemNavigationFrameController->doHighlight`
- :php:`ClickMenu->leftIcons`
The following user TS settings have been removed:
- :typoscript:`options.pageTree.disableTitleHighlight`
- :typoscript:`options.contextMenu.options.leftIcons`
Impact
======
Extensions which use one of the public properties above will throw a fatal error.
Setting above options in UserTSconfig will not impact the tree behaviour.
Affected Installations
======================
All installations with a 3rd party extension using one of the classes above.
All installations using one of the UserTSconfig settings above.
Migration
=========
No migration available.
.. index:: PHP-API, TSConfig, Backend
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-77750:
============================================================================
Breaking: #77750 - Return value of ContentObjectRenderer::exec_Query changed
============================================================================
See :issue:`77750`
Description
===========
The return type of :php:`ContentObjectRenderer::exec_getQuery()` has changed.
Instead of returning either :php:`bool`, :php:`\mysqli_result`
or :php:`object` the return value always is a :php:`\Doctrine\DBAL\Driver\Statement`.
Impact
======
Using the mentioned method will no longer yield the expected result type.
Affected Installations
======================
Any installation with a 3rd party extension that uses the named method.
Migration
=========
Change the way the result is being used to conform to the Doctrine API:
.. code-block:: php
$result = $this->cObj->exec_getQuery(...);
while ($row = $result->fetch()) {
// Do something here
}
.. index:: PHP-API, Frontend, Database
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-77762:
=========================================================
Breaking: #77762 - Extensions dbal and adodb moved to TER
=========================================================
See :issue:`77762`
Description
===========
The legacy extensions `dbal` and `adodb` have been removed from the TYPO3 CMS core and are only available as TER extensions.
Impact
======
Tables located on non-MySQL databases stop working until `EXT:adodb` and `EXT:dbal` have been installed from TER if a third party extensions uses the old `TYPO3_DB` API to query those tables.
Affected Installations
======================
Most installations are not affected. Instances are only affected if a loaded extension
uses the old `TYPO3_DB` database API, `dbal` and `adodb` have been loaded and if an
active table mapping to non-MySQL databases is configured.
Migration
=========
Use the upgrade wizard provided by the install tool to fetch and load the extensions from TER.
.. index:: Database, ext:dbal, ext:adodb
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-77765:
==========================================================
Breaking: #77765 - ExtJS notifications and dialogs removed
==========================================================
See :issue:`77765`
Description
===========
ExtJS notifications with the ExtJS components `TYPO3.Window` and `TYPO3.Dialog` have been removed from the TYPO3 Core.
Impact
======
Calling any of the JavaScript components above will result in a JavaScript error.
Affected Installations
======================
Any TYPO3 installations using custom extensions based on ExtJS.
Migration
=========
Use the JavaScript-based Modal and Dialog functionality that are part of the TYPO3 Core since v7.
For migration details `see the docs`_
.. _see the docs: https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.2/Feature-66047-IntroduceJavascriptNotificationApi.html
.. index:: Backend, JavaScript
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77783:
============================================================
Breaking: #77783 - Removed unused ExtJS JavaScript libraries
============================================================
See :issue:`77783`
Description
===========
The ExtJS libraries `app.SearchField`, `grid.RowExpander`, `ux.FitToParent` have been removed from the TYPO3 core
after all usages of them have been removed from the TYPO3 core with Feature #74359.
Impact
======
Including or calling any of the named JavaScript libraries will result in an error.
Affected Installations
======================
Any TYPO3 installations using custom extensions based on ExtJS which rely on the named libraries.
Migration
=========
There is no migration available, consider migrating to a supported modern framework.
.. index:: Backend, JavaScript
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77814:
===============================================================
Breaking: #77814 - Remove feature subsearch from indexed search
===============================================================
See :issue:`77814`
Description
===========
The feature subsearch which enabled the possibility to append previously searched words to the current
query was removed.
The option TypoScript :typoscript:`plugin.tx_indexedsearch.clearSearchBox` has been removed.
Impact
======
Frontend output of search results may change.
Setting the TypoScript option has no effect anymore.
Affected Installations
======================
Any installation using this option or using custom indexed search plugin templates.
Migration
=========
Remove the option in your custom TypoScript and remove the functionality in the Fluid plugin
template.
.. index:: Frontend, TypoScript, Fluid, ext:indexed_search
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _breaking-77826:
=======================================================
Breaking: #77826 - RTEHtmlArea Spellchecker eID removed
=======================================================
See :issue:`77826`
Description
===========
The RTEHtmlArea eID (`rtehtmlarea_spellchecker`) for using dynamic spellchecking has been removed.
RTEhtmlarea uses the Backend Routing API for Backend and Frontend Editing.
Impact
======
Calling the eID script will result in a 404 error.
Affected Installations
======================
Installations which use the eID `rtehtmlarea_spellchecker` in a custom extension.
.. index:: Backend, Frontend, RTE
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _breaking-77919:
==============================================================
Breaking: #77919 - Changed DateTime::ISO8601 to DateTime::ATOM
==============================================================
See :issue:`77919`
Description
===========
The format `DateTime::ISO8601` is not compatible with ISO-8601, but is left this way for
backward compatibility reasons. The constant `DateTime::ATOM` or `DATE_ATOM` is used
instead when rendering JsonViews via Extbase.
See https://php.net/manual/en/class.datetime.php#datetime.constants.iso8601 for more information
.. index:: PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-77987:
============================================================
Breaking: #77987 - Removal fe_users rendering in page module
============================================================
See :issue:`77987`
Description
===========
Because of the deprecation of :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']`,
the records of the table `fe_users` are no longer rendered in the page module.
Affected Installations
======================
All installations.
Migration
=========
By using the following code in the :php:`ext_localconf.php` file, the records can be shown again:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']['fe_users'] =
array (0 => array(
'MENU' => '',
'fList' => 'username,usergroup,name,email,telephone,address,zip,city',
'icon' => true
)
);
.. index:: LocalConfiguration, Backend
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-78222:
==============================================================================
Breaking: #78222 - Extension autoload information is now in typo3conf/autoload
==============================================================================
See :issue:`78222`
Description
===========
To make clear that autoload information is not a cache,
the files have been moved from :file:`typo3temp` to :file:`typo3conf`.
Impact
======
TYPO3 deployments which do not take advantage of composer, might need some adaption
to also include the new location in :file:`typo3conf` in the list of to be synced files.
Affected Installations
======================
TYPO3 installation in non composer mode.
Migration
=========
Class loading information can be re-dumped by
* Activating or deactivating an extension
* Running the dump command from the command line
* In install tool (important actions)
The autoload files should never be deleted, but always only be re-dumped.
.. index:: PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-75363:
===========================================================
Deprecation: #75363 - Deprecate FormResultCompiler->JStop()
===========================================================
See :issue:`75363`
Description
===========
The method `JStop()` has been renamed to `addCssFiles()`. The old method name is
still present as a deprecated alias, which will be removed in TYPO3 v9.
Keep in mind that the method reads "JS top", not "J Stop".
Impact
======
Calling `JStop()` method will trigger a deprecation log entry.
Affected Installations
======================
Any extensions calling `JStop()`.
Migration
=========
Instead of :php:`JStop()` use :php:`addCssFiles()`.
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-75637:
=======================================================================================
Deprecation: #75637 - Deprecate optional parameters of RecyclerUtility::getRecordPath()
=======================================================================================
See :issue:`75637`
Description
===========
The following arguments of the method :php:`RecyclerUtility::getRecordPath` have been marked as deprecated:
- :php:`$clause`
- :php:`$titleLimit`
- :php:`$fullTitleLimit`
Impact
======
Using any of the arguments above will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using custom calls to :php:`RecyclerUtility::getRecordPath` using the mentioned arguments.
Migration
=========
No migration available.
.. index:: PHP-API, Backend, ext:recycler
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-77763:
=========================================================================
Deprecation: #77763 - Deprecate method ClickMenu::DB_editPageProperties()
=========================================================================
See :issue:`77763`
Description
===========
Method :php:`ClickMenu::DB_editPageProperties` has been marked as deprecated.
Impact
======
Using the method will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using custom calls to :php:`ClickMenu::DB_editPageProperties`
Migration
=========
No migration available.
.. index:: PHP-API, Backend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-77826:
=========================================================
Deprecation: #77826 - RTEHtmlArea Spellchecker entrypoint
=========================================================
See :issue:`77826`
Description
===========
The entry point for HTTP Requests `SpellCheckingController->main` within RTEHtmlArea has been marked as deprecated.
Impact
======
Calling the PHP method above will trigger a deprecation log entry.
Affected Installations
======================
All TYPO3 instances calling this PHP method.
Migration
=========
Use `SpellCheckingController->processRequest` instead.
.. index:: PHP-API, RTE, Backend
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _deprecation-77839:
=======================================================================================================
Deprecation: #77839 - Move TYPO3/CMS/Core/QueryGenerator into EXT:lowlevel and deprecate the old module
=======================================================================================================
See :issue:`77839`
Description
===========
The AMD module :js:`TYPO3/CMS/Core/QueryGenerator` have been deprecated.
The module have been renamed to :js:`TYPO3/CMS/Lowlevel/QueryGenerator` and moved into EXT:lowlevel.
Impact
======
Using the module will trigger a deprecation log message in the browser console.
Affected Installations
======================
Any TYPO3 installation using custom calls to :js:`TYPO3/CMS/Core/QueryGenerator`
Migration
=========
Use AMD module :js:`TYPO3/CMS/Lowlevel/QueryGenerator` instead.
.. index:: JavaScript, ext:lowlevel
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _deprecation-77987:
==============================================================
Deprecation: #77987 - Deprecated record listing in page module
==============================================================
See :issue:`77987`
Description
===========
The usage of :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']` to render
records in the page module has been marked as deprecated.
Accessing property :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->externalTables` has
been deprecated.
Affected Installations
======================
Instances using :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['cms']['db_layout']['addTables']`
or accessing property :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->externalTables`.
Migration
=========
No migration available.
.. index:: LocalConfiguration, Backend, PHP-API
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _deprecation-78096:
=====================================================================================
Deprecation: #78096 - Deprecated PageLayoutView::getResult with mysqli_result objects
=====================================================================================
See :issue:`78096`
Description
===========
The method :php:`PageLayoutView::getResult` has been marked as deprecated with the usage of mysqli_result objects as first parameter.
Impact
======
Using the mentioned method with a mysqli_result object will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using extensions which call :php:`PageLayoutView::getResult` with mysqli_result objects.
Migration
=========
The extension should migrate to use the Doctrine API for database queries.
.. index:: Backend, Database, PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _deprecation-78193:
==============================================================
Deprecation: #78193 - ExtensionManagementUtility::extRelPath()
==============================================================
See :issue:`78193`
Description
===========
The method :php:`ExtensionManagementUtility::extRelPath()` for resolving paths relative to the current script has been marked as deprecated.
Impact
======
Calling :php:`ExtensionManagementUtility::extRelPath()` will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instance with extensions or third-party scripts resolving paths with the method above.
Migration
=========
Use alternatives for resolving paths. There are the following methods available:
* :php:`ExtensionManagementUtility::extPath()` - to resolve the full path of an extension
* :php:`ExtensionManagementUtility::siteRelPath()` - to resolve the location of an extension relative to `PATH_site`
* :php:`GeneralUtility::getFileAbsFileName()` - to resolve a file/path prefixed with `EXT:myext`
* :php:`PathUtility::getAbsoluteWebPath()` - used for output a file location (previously resolved with :php:`GeneralUtility::getFileAbsFileName()`) that is absolutely prefixed for the web folder
.. index:: PHP-API
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-78222:
===========================================================================
Deprecation: #78222 - Late generation of autoload information is deprecated
===========================================================================
See :issue:`78222`
Description
===========
If TYPO3 is in non-composer mode, it used to automatically dump extension class
loading information late during the bootstrap. This behavior is now deprecated.
Impact
======
TYPO3 installations in non-composer mode, now trigger a deprecation log entry
in case extension autoload information is missing late in the bootstrap.
Affected Installations
======================
TYPO3 installations in non-composer mode with deleted extension autoload information.
Migration
=========
Class loading information can be re-dumped by
* Activating or deactivating an extension
* Running the dump command from the command line
* In install tool (important actions)
The autoload files should never be deleted, but always only be re-dumped.
.. index:: PHP-API
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-78224:
==========================================
Deprecation: #78224 - TYPO3_DB occurrences
==========================================
See :issue:`78224`
Description
===========
The TYPO3_DB shorthand functionality has been removed for most of the TYPO3 Core PHP classes, excepted for the following locations:
* AbstractPlugin->databaseConnection (protected property)
* AbstractFunctionModule::getDatabaseConnection()
* BaseScriptClass::getDatabaseConnection()
For these occurrences extensions might extend the base functionality (e.g. for plugins or modules) and the call to the property and
protected methods still work.
Calling `$GLOBALS[TYPO3_DB]` is still possible but discouraged.
Impact
======
Calling any of the methods above will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instances with references to TYPO3_DB or references to the occurrences mentioned above.
Migration
=========
Use the ConnectionPool and the QueryBuilder classes to achieve future-proof and proper database abstraction for future TYPO3
versions.
.. index:: PHP-API
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _feature-17309:
==============================================
Feature: #17309 - Access flexform value via TS
==============================================
See :issue:`17309`
Description
===========
It is now possible to access properties of a flexform field by using TypoScript.
.. code-block:: typoscript
lib.flexformContent = CONTENT
lib.flexformContent {
table = tt_content
select {
pidInList = this
}
renderObj = COA
renderObj {
10 = TEXT
10 {
data = flexform: pi_flexform:settings.categories
}
}
}
The key `flexform` is followed by the field which holds the flexform data and the name of the property whose content should be retrieved.
.. index:: TypoScript, FlexForm
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _feature-75691:
===========================================================================
Feature: #75691 - Upgrade Analysis - Provide listing of documentation files
===========================================================================
See :issue:`75691`
Description
===========
The install tool now shows all the documentation files that were delivered with the core
in the section `Upgrade analysis`. All files can be read inline, but there is no
parsing, plain `.rst` is shown to the user.
Impact
======
The install tool features a new main entry point that lists the documentation files shipped with
the core. Filtering by tags provided in the documentation files helps to find interesting changes.
.. index:: Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-76748:
==================================================================
Feature: #76748 - Configure the availability of the elementbrowser
==================================================================
See :issue:`76748`
Description
===========
The button to open the elementBrowser can be configured to be enabled/disabled for the user.
The button can be disabled by the following TCA setting:
:php:`[table_name]['columns'][field_name]['config']['appearance']['elementBrowserEnabled'] = false;`
The button can be disabled by the following pageTs setting:
:typoscript:`TCEFORM.table_name.field_name.config.appearance.elementBrowserEnabled = 0`
The button can be disabled by the following userTs setting:
:typoscript:`page.TCEFORM.table_name.field_name.config.appearance.elementBrowserEnabled = 0`
Impact
======
Default behavior is that the button stays visible, to disable/hide this button the TCA/pageTs/userTs needs to be explicit changed.
.. index:: TCA, TSConfig, Backend
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _feature-77589:
============================================================
Feature: #77589 - EXT: syntax in PageRenderer and Compressor
============================================================
See :issue:`77589`
Description
===========
It is now possible to use the `EXT:` prefix for referencing files inside extensions within the `PageRenderer` and `ResourceCompressor`
PHP classes for adding JavaSyntax or StyleSheet files.
So you can streamline your code from
.. code-block:: php
$this->pageRenderer->addJsFile(ExtensionManagementUtility::extRelPath('core') . 'Resources/Public/JavaScript/Contrib/bootstrap/bootstrap.js');
to
.. code-block:: php
$this->pageRenderer->addJsFile('EXT:core/Resources/Public/JavaScript/Contrib/bootstrap/bootstrap.js');
.. index:: PHP-API
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _feature-77643:
====================================================================================
Feature: #77643 - Reimplement SqlSchemaMigrationService using Doctrine SchemaManager
====================================================================================
See :issue:`77643`
Description
===========
The SqlSchemaMigrationService has been reimplemented using a LL(*) Parser for CREATE TABLE
statements. The new parser supports MySQL syntax for CREATE TABLE statements. Based on the
abstract syntax tree produced by this parser Doctrine Table objects are created that
implement a DBMS independent representation of the schema and are used with the Doctrine
SchemaManager to handle the schema migrations needs of the TYPO3 core.
Impact
======
Update suggestions from the new SchemaMigrator are per connection, on all additional
connections only explicitly mapped tables are managed. MySQL specific data types are being
mapped to the closest matching standard type, for example TINYINT to SMALLINT. The support
for foreign keys has been enhanced as a result of the additional capabilities of the
Doctrine SchemaManager.
.. index:: Database, PHP-API
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _feature-77652:
====================================================
Feature: #77652 - Make sys_language records sortable
====================================================
See :issue:`77652`
Description
===========
To improve the usability, the sys_language records are now sortable.
Impact
======
The languages can now be manually sorted instead of an ordering by its name.
.. index:: Backend
@@ -0,0 +1,18 @@
.. include:: /Includes.rst.txt
.. _feature-77668:
========================================================
Feature: #77668 - Hide table listing below group element
========================================================
See :issue:`77668`
Description
===========
The TCA configuration option `disable_controls` of the type "group" now has a new
setting `allowedTables` which can be added to the configuration in order to hide the
information which tables are allowed to be referenced in the group field.
.. index:: TCA, Backend
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _feature-77799:
================================================================
Feature: #77799 - Display TCA migration messages in Install Tool
================================================================
See :issue:`77799`
Description
===========
Display the TCA migration message(s) in the Install Tool.
Impact
======
You are now able to show all TCA migration messages from within the Install Tool.
.. index:: TCA, Backend
@@ -0,0 +1,96 @@
.. include:: /Includes.rst.txt
.. _feature-77900:
===================================================
Feature: #77900 - Introduce TypeScript for the core
===================================================
See :issue:`77900`
Description
===========
The TYPO3 core has introduced TypeScript for the internal JavaScript handling.
Why we use TypeScript in the core?
==================================
TypeScript is a free and open source programming language developed and maintained by Microsoft. It is a strict superset of JavaScript, and adds optional static typing and class-based object-oriented programming to the language.
With TypeScript it is possible to compile JavaScript. TypeScript supports definition files which can contain type information of existing JavaScript libraries.
At the moment the core uses AMD modules for any JavaScript logic in the backend, but what is in 5 years? maybe we want switch to CommonJS, with TypeScript we can recompile all modules with a simple change in a configuration file.
But the main reason to switch to TypeScript is the strict typing and oop structure of the language. We can make use of Interfaces, which is still a missing feature in JavaScript.
Coding Guidelines & Best practice
=================================
:js:`/// <amd-dependency path="x" />` informs the compiler about a non-TS module dependency that needs to be injected in the resulting module's require call.
The amd-dependency has a property name which allows passing an optional name for an amd-dependency: :js:`/// <amd-dependency path="x" name="fooBar" />`
An example:
:js:`/// <amd-dependency path="TYPO3/CMS/Core/Contrib/jquery.minicolors" name="minicolors">`
will be compiled to:
:js:`define(["require", "exports", "TYPO3/CMS/Core/Contrib/jquery.minicolors"], function (require, exports, minicolors) {`
A very simple example is the `EXT:backend/Resources/Private/TypeScript/ColorPicker.ts` file.
TypeScript Linter
=================
The most rules for TypeScript are defined in the rulesets which are checked by the TypeScript Linter.
The core provides a configuration file and grunt tasks to ensure a better code quality. For this reason we introduce a new grunt task, which first run the Linter on each TypeScript file before starting the compiler.
So if your TypeScript does not follow the rules, the task will fail. The idea is to write clean code, else it will not be compiled.
Additional Rules
================
For the core we have defined some additional rules which you should know, because not all of them can be checked by the Linter yet:
#. Always define types and return types, also if TypeScript provides a default type. [checked by Linter]
#. Variable scoping: Prefer :js:`let` instead of :js:`var`. [checked by Linter]
#. Optional properties in interfaces are possible but a bad style, this is not allowed for the core. [NOT checked by Linter]
#. An interface will never extend a class. [NOT checked by Linter]
#. Iterables: Use :js:`for (i of list)` if possible instead of :typoscript:`for (i in list)` [NOT checked by Linter]
#. The :js:`implements` keyword is required for any usage, also if TypeScript does not require it. [NOT checked by Linter]
#. Any class or interface must be declared with "export" to ensure re-use or export an instance of the object for existing code which can't be updated now. [NOT checked by Linter]
Contribution workflow
=====================
.. code-block:: shell
# Change to Build directory
cd Build
# Install dependencies
npm install
# Install typings for the core
grunt typings
# Check with Linter and compile ts files from sysext/*/Resources/Private/TypeScript/*.ts
grunt scripts
# File watcher, the watch task also check for *.ts files
grunt watch
The grunt task compiles each TypeScript file (*.ts) to a JavaScript file (*.js) and produces an AMD module.
Impact
======
All AMD modules must be ported to TypeScript to ensure a future proof concept of JavaScript handling.
The goal is to migrate all AMD modules to a TypeScript file until CMS 8 LTS is released.
.. index:: Backend, JavaScript
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-78222:
===================================================================
Feature: #78222 - Dump Class Loading Information UI in Install Tool
===================================================================
See :issue:`78222`
Description
===========
It is now possible to dump class loading information in the install tool.
Impact
======
Users who are not familiar with the command line can now trigger a dump of class
loading information in install tool.
.. index:: PHP-API, Backend
+42
View File
@@ -0,0 +1,42 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-8-4:
8.4 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-*