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,62 @@
.. include:: /Includes.rst.txt
.. _breaking-79615:
=====================================================================
Breaking: #79615 - QueryBuilder getQueriedTables result format change
=====================================================================
See :issue:`79615`
Description
===========
:php:`QueryBuilder::getQueriedTables` return value has been changed from array with key being table name and value being
table alias (or null) to array with a key being table alias and value being table name. Both keys and the value should
be filled.
This allows to return multiple entries for the same table (in case inner join is made).
Example for the :sql:`tt_content` table inner joined with self and joined with :sql:`sys_language`:
.. code-block:: php
[
'tt_content_alias' => 'tt_content',
'tt_content' => 'tt_content',
'sys_language' => 'sys_language'
]
Previously the array (for the same case) looked like:
.. code-block:: php
[
'tt_content' => 'tt_content_alias',
'sys_language' => null
]
Impact
======
All code which rely on the result format of the :php:`getQueriedTables` method needs to be adapted.
The first parameter of the :php:`QueryRestrictionInterface::buildExpression` (:php:`$queriedTables`)
expects a new array structure.
Affected Installations
======================
All installations with custom implementation of Query Restriction (classes implementing :php:`QueryRestrictionInterface`).
All installations where table array passed to :php:`buildExpression` method is created manually (without using :php:`QueryBuilder::getQueriedTables`).
Migration
=========
The code of the :php:`buildExpression` method in custom :php:`QueryRestrictionInterface`
implementations needs to adapted to be able to handle the new incoming array structure.
Format of the first parameter passed to :php:`buildExpression` needs to be adapted in case
a query restriction is used directly (without using :php:`QueryBuilder::getQueriedTables`).
.. index:: PHP-API, Database
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-80050:
==========================================================================
Breaking: #80050 - Remove option cHashIncludePageId from cHash calculation
==========================================================================
See :issue:`80050`
Description
===========
The global configuration option :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['cHashIncludePageId']`
has been removed, as the functionality is now always activated.
The option was introduced in 2016 as part of a security bugfix for existing releases to
allow the inclusion the cHash calculation (= caching identifier for pages with different GET variables)
and was active for new installations.
Impact
======
Setting the option has no effect anymore.
If the option was disabled before, all existing cached contents and existing cHash calculations for URL
rewrites (e.g. RealURL) of existing pages are invalidated and will throw a "page not found" exception
if called directly.
Affected Installations
======================
Any existing TYPO3 installation that did not have the option activated before.
.. index:: Frontend, LocalConfiguration
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-80149:
================================================================================
Breaking: #80149 - Remove $GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']
================================================================================
See :issue:`80149`
Description
===========
The configuration :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']` is
removed from the default configuration as well as from the overlay handling in
PageRepository and RootlineUtility.
This setting has been used to determine overlay fields in the table
:sql:`pages_language_overlay` at a time in the runtime processing when the
complete TCA was not fully available. Since the `allowLanguageSynchronization`
possibility has been integrated into TYPO3 CMS 8, `l10n_mode` was available
already and the TCA is loaded as well, the `pageOverlayFields` settings
are superfluous.
Impact
======
Since :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']` was used as a
filter for field names to be taken from :sql:`pages_language_overlay` and merged
onto those fields in :sql:`pages`, all fields are overlaid per default.
Affected Installations
======================
All installations having custom fields in table :sql:`pages_language_overlay` and
custom settings in :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']`.
Migration
=========
Check the TCA of :sql:`pages_language_overlay` and remove l10n_mode for those fields
that previously were not defined in :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']`
and thus should not be overlaid.
.. index:: Frontend, TCA, LocalConfiguration
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _breaking-80171:
====================================================================================
Breaking: #80171 - Remove lib.parseFunc_RTE inline styles from parsed blockquote tag
====================================================================================
See :issue:`80171`
Description
===========
With https://forge.typo3.org/issues/44879 the inline styles were removed from CSC.
However, the change was not applied to FSC.
Impact
======
:typoscript:`lib.parseFunc_RTE` doesn't overwrite the attributes of :html:`<blockquote/>`
and doesn't add the style attribute anymore.
Affected Installations
======================
All installations using the :typoscript:`lib.parseFunc_RTE` provided by
EXT:fluid_styled_content where
.. code-block:: typoscript
lib.parseFunc_RTE {
externalBlocks {
blockquote {
callRecursive {
tagStdWrap {
HTMLparser = 1
HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
}
}
}
}
}
was not overwritten manually.
Migration
=========
If your frontend relies on this inline CSS styles, make sure to add following CSS on
your own:
.. code-block:: css
blockquote {
margin-top: 0;
margin-bottom: 0;
}
Additionally you have to check if some other attributes are now added/preserved to
:html:`<blockquote/>` due the fact, that the former typoscript has removed all
attributes before adding the style attribute.
.. index:: Frontend, TypoScript, ext:fluid_styled_content, RTE
@@ -0,0 +1,59 @@
.. include:: /Includes.rst.txt
.. _breaking-80374:
=======================================================================================================
Breaking: #80374 - Default content element configuration for frontend login adapts fluid styled content
=======================================================================================================
See :issue:`80374`
Description
===========
Default configuration for the frontend login content element was adapted to match
fluid styled content instead of css styled content by default. Css styled content
was adapted and works there as before.
Rendering for css styled content
--------------------------------
.. code-block:: typoscript
tt_content.login = COA
tt_content.login {
10 =< lib.stdheader
20 =< plugin.tx_felogin_pi1
}
Rendering for fluid styled content
----------------------------------
.. code-block:: typoscript
tt_content.login =< lib.contentElement
tt_content.login {
templateName = Generic
variables {
content =< plugin.tx_felogin_pi1
}
}
Impact
======
Adjustments made manually to the TypoScript rendering definition of
:typoscript:`tt_content.login` might not work in fluid styled content as expected.
Affected Installations
======================
Installations that are using fluid styled content and directly modify
configuration of :typoscript:`tt_content.login`.
Migration
=========
Manual adaption is necessary.
.. index:: TypoScript, Frontend, ext:fluid_styled_content
@@ -0,0 +1,130 @@
.. include:: /Includes.rst.txt
.. _breaking-80412:
================================================================================================
Breaking: #80412 - New shared content element TypoScript library object for Fluid Styled Content
================================================================================================
See :issue:`80412`
Description
===========
To solve an inconsistency issue for API based content element registration between
CSS Styled Content (CSC) and Fluid Styled Content (FSC) through `Extbase` or
:php:`addPItoST43` we are now introducing a new shared content object for content elements
and drop the active usage of :typoscript:`lib.fluidContent`.
The generated code relied on the existence of the removed :typoscript:`lib.stdheader` and also
ignored layouts, frames, spacebefore, spaceafter in context of Fluid Styled Content.
For content element registration the TypoScript :typoscript:`lib.contentElement` is now used for `CSC` and `FSC`
and replaces the usage of :typoscript:`lib.fluidContent`. The generated code was slightly
adjusted to match the requirements of all content rendering definitions and can be
adapted to the specific needs of a content element rendering definition anytime
since a reference is used now instead of a hard definition.
Generated code before change
----------------------------
.. code-block:: typoscript
tt_content.myce = COA
tt_content.myce {
10 =< lib.stdheader
20 =< plugin.myContent
}
Generated code after change
---------------------------
.. code-block:: typoscript
tt_content.myce =< lib.contentElement
tt_content.myce {
templateName = Generic
20 =< plugin.myContent
}
CSS Styled Content
------------------
CSS Styled Content adds the missing :typoscript:`lib.stdheader` and everything works as
before, no migration or adjustments to your code necessary. Because :typoscript:`COA`
does not understand the option :typoscript:`templateName` it will simply be ignored.
.. code-block:: typoscript
lib.contentElement = COA
lib.contentElement {
10 =< lib.stdheader
}
Fluid Styled Content
--------------------
Fluid Styled Content adds the logic it needs through :typoscript:`lib.contentElement`.
All content elements registered through the TYPO3 APIs will now share a
multifunctional `Generic` template. That will provide the necessary layouts
and overriding options known from FSC.
.. code-block:: typoscript
lib.contentElement = FLUIDTEMPLATE
lib.contentElement {
templateRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Templates/
10 = {$styles.templates.templateRootPath}
}
partialRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Partials/
10 = {$styles.templates.partialRootPath}
}
layoutRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Layouts/
10 = {$styles.templates.layoutRootPath}
}
...
}
.. code-block:: html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">
<f:comment>This templates is used to provide necessary functionality for external processed content and could be used across multiple sources, for example the frontend login content element.</f:comment>
<f:if condition="{content}">
<f:then>{content -> f:format.raw()}</f:then>
<f:else><f:cObject typoscriptObjectPath="tt_content.{data.CType}.20" data="{data}" table="tt_content" /></f:else>
</f:if>
</f:section>
</html>
The TypoScript object :typoscript:`lib.fluidContent` will be kept as copy of :typoscript:`lib.contentElement`
for compatibility for the duration of TYPO3 v8 LTS and will be removed in TYPO3 v9.
Impact
======
Assignments and overrides made directly to :typoscript:`lib.fluidContent` are not recognized
anymore for core content elements provided by Fluid Styled Content. They need to be
migrated to :typoscript:`lib.contentElement`. Only not modified versions of :typoscript:`lib.fluidContent`
will keep working as expected.
Affected Installations
======================
Installations that directly modify :typoscript:`lib.fluidContent`.
Migration
=========
Rename assignments and modifications to :typoscript:`lib.contentElement`.
.. index:: Fluid, Frontend, TypoScript, ext:fluid_styled_content
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-80628:
====================================================
Breaking: #80628 - Extension rtehmlarea moved to TER
====================================================
See :issue:`80628`
Description
===========
The legacy extension ``EXT:rtehtmlarea`` has been removed from the TYPO3 CMS core
and is only available as TER extension.
Impact
======
The new extension ``EXT:rte_ckeditor`` is loaded by default, if you need features
of the old rtehmlarea extension, you have to install ``EXT:rtehtmlarea`` from TER.
An upgrade wizard can do this for you in the upgrade process of the install tool.
If you have allowed images in RTE, you should install the rtehtmlarea extension,
the ckeditor extension does not support images in RTE.
Affected Installations
======================
Most installations are not affected. Instances are only affected if a loaded
extension has a dependency to ``EXT:rtehtmlarea`` extension, or if the instance
has used special plugins.
Migration
=========
Use the upgrade wizard provided by the install tool to fetch and load the extensions
from TER if you really need it.
.. index:: Backend, RTE
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-78650:
=====================================================
Deprecation: #78650 - TemplateService->splitConfArray
=====================================================
See :issue:`78650`
Description
===========
The method :php:`TemplateService->splitConfArray` which has been used for building the "optionSplit"
functionality has been marked as deprecated.
The method is now moved to a new class called :php:`TypoScriptService`, effectively removing the
dependency on :php:`$TSFE->tmpl` within a ContentObject.
Impact
======
Calling :php:`TemplateService->splitConfArray` will throw a deprecation warning.
Affected Installations
======================
Any installation using an extension that calls this method.
Migration
=========
Use the new method :php:`TypoScriptService->explodeConfigurationForOptionSplit` instead.
.. index:: PHP-API, TypoScript, Frontend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-79122:
========================================================
Deprecation: #79122 - Deprecate method getRecordsByField
========================================================
See :issue:`79122`
Description
===========
The method :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getRecordsByField()` has been deprecated and should not be used any longer.
Impact
======
Calling the deprecated :php:`getRecordsByField()` method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using the mentioned method :php:`getRecordsByField()`.
Migration
=========
Use the :php:`ConnectionPool` and the :php:`QueryBuilder` classes directly to query the database from your code.
.. index:: Backend, PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-79580:
====================================================================================
Deprecation: #79580 - Deprecate methods in DataHandler related to page delete access
====================================================================================
See :issue:`79580`
Description
===========
The following methods have been marked as deprecated:
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->rmComma()`
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->noRecordsFromUnallowedTables()`
Impact
======
Calling these methods will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 extension calling one of these methods.
Migration
=========
Use native :php:`rtrim($input, ',')` instead of :php:`TYPO3\CMS\Core\DataHandling\DataHandler->rmComma()`.
No migration available for :php:`TYPO3\CMS\Core\DataHandling\DataHandler->noRecordsFromUnallowedTables()`.
.. index:: Database, PHP-API, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-79591:
====================================================================
Deprecation: #79591 - Extbase command controllers admin role methods
====================================================================
See :issue:`79591`
Description
===========
The methods :php:`CommandController->ensureAdminRoleIfRequested()` and
:php:`CommandController->restoreUserRole()` have been marked as deprecated.
All CLI scripts are now executed with administrator access rights, so this functionality is obsolete.
Impact
======
Calling any of the methods above will trigger a deprecation log warning.
Affected Installations
======================
Any installation with custom CLI Extbase Command Controllers using the methods above.
Migration
=========
Remove the affected lines where the methods are called, as they are not necessary anymore.
.. index:: CLI, ext:extbase, PHP-API
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-79770:
=======================================================
Deprecation: #79770 - Deprecate inline localizationMode
=======================================================
See :issue:`79770`
Description
===========
The `localizationMode` for inline relational record editing types is deprecated.
Impact
======
Using `localizationMode` set to `keep` and having `allowLanguageSynchronization` enabled at the same time is
counter-productive, since it will deny the synchronization process for the affected field. That's why `localizationMode`
is unset only if `allowLanguageSynchronization` is enabled.
Affected Installations
======================
All having :php:`$TCA[<table-name>]['columns'][<field-name>]['config']['behaviour']['localizationMode']` defined for
database tables that support translations.
Migration
=========
Remove :php:`$TCA[<table-name>]['columns'][<field-name>]['config']['behaviour']['localizationMode']` definitions and
make use of either one of the following
* :php:`$TCA[<table-name>]['columns'][<field-name>]['config']['behaviour']['allowLanguageSynchronization'] = true` if editors can decide whether to provide custom child references or synchronize all references from the language parent record - this comes close to `localizationMode=select` without having the possibility to selectively translate child references
* :php:`$TCA[<table-name>]['columns'][<field-name>]['l10n_mode'] = 'exclude'` if editors don't have a choice to translate child references - this corresponds to `localizationMode=keep`
.. index:: Backend, TCA
@@ -0,0 +1,72 @@
.. include:: /Includes.rst.txt
.. _deprecation-79858:
=========================================================
Deprecation: #79858 - TSFE-related properties and methods
=========================================================
See :issue:`79858`
Description
===========
The following properties within TypoScriptFrontendController have been marked as deprecated:
* :php:`$compensateFieldWidth`
* :php:`$excludeCHashVars`
* :php:`$scriptParseTime`
The following methods have been marked as deprecated:
* :php:`TypoScriptFrontendController->generatePage_whichScript()` (used via :typoscript:`config.pageGenScript`)
* :php:`TypoScriptFrontendController->encryptEmail()`
* :php:`TypoScriptFrontendController->encryptCharcode()`
* :php:`PageGenerator::pagegenInit()`
The following TypoScript properties have been marked as deprecated:
* :typoscript:`config.pageGenScript`
* :typoscript:`config.compensateFieldWidth`
Impact
======
Calling any of the PHP methods will trigger a deprecation log entry.
All properties and options are still callable with the according output, however there are
alternatives to achieve the same.
Affected Installations
======================
Any TYPO3 installation working with custom extensions that use any of these functionalities, methods or properties.
Migration
=========
All of the functionality is obsolete or outdated and should be handled differently from now on:
1. The :typoscript:`compensateFieldWidth` option was used for forms built with TYPO3 4.x (before TYPO3 4.6),
instead, any other form framework should be used for forms and for field width calculations, where
styling of form fields are also handled via CSS.
2. An alternative :typoscript:`config.pageGenScript` can be used and set via hooks in PHP classes nowadays and
executed, instead of configuring this functionality on a high-end TypoScript level to execute include
spaghetti PHP code within a file.
3. :php:`PageGenerator::pagegenInit()` is solely working on public properties of the TSFE PHP class, which
belongs to the TSFE object itself (thus, the logic is copied to :php:`$TSFE->preparePageContentGeneration()`)
4. Calculating the debug parse time for the web page is not part of the controller logic but more
certainly belongs to the request handling itself, where it is handled in a cleaner way for PHP,
waiting for further refactorings in TYPO3 v9.
5. The methods :php:`TypoScriptFrontendController->encryptEmail()` and :php:`encryptCharcode()` have been moved
to ContentObjectRenderer.
.. index:: Frontend, TypoScript, PHP-API
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _deprecation-79972:
================================================
Deprecation: #79972 - Deprecated Fluid Overrides
================================================
See :issue:`79972`
Description
===========
following methods have been marked as deprecated:
* :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext::injectObjectManager()`
* :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext::getObjectManager()`
* :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext::setLegacyMode()`
following methods have been removed:
* :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext::getExpressionNodeTypes()`
* :php:`\TYPO3\CMS\Fluid\Core\Rendering\RenderingContext::getViewHelperVariableContainer()`
following classes have been removed:
* :php:`\TYPO3\CMS\Fluid\Core\Parser\PreProcessor\XmlnsNamespaceTemplatePreProcessor`
* :php:`\TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\Expression\LegacyNamespaceExpressionNode`
Impact
======
Calling any of the methods marked as deprecated above will trigger a deprecation log entry.
Accessing any of the removed classes or methods will cause a PHP Fatal Error.
Affected Installations
======================
Any TYPO3 instances which uses the above described methods or classes.
Migration
=========
* Remove usage of classes / methods.
.. index:: Fluid
@@ -0,0 +1,168 @@
.. include:: /Includes.rst.txt
.. _deprecation-80000:
============================================
Deprecation: #80000 - InlineOverrideChildTca
============================================
See :issue:`80000`
Description
===========
These :php:`TCA` :php:`type=inline` properties have been deprecated and superseded with the more
general property :php:`overrideChildTca`:
* foreign_types
* foreign_selector_fieldTcaOverride
* foreign_record_defaults
Impact
======
It is now possible to override display (FormEngine) related columns properties and the types section of
child :php:`TCA` from within the parent :php:`TCA`. This is also allowed in a
parents :php:`['types']['columnsOverrides']` section.
Affected Installations
======================
Instances using one of the above inline properties should adapt to the new :php:`overrideChildTca` property.
Migration
=========
A :php:`TCA` auto-migration is in place. It will transfer the old settings to the new property as
shown below and logs deprecation entries if there is no :php:`overrideChildTca` defined. This allows extension
authors to keep both the old and the new settings to support CMS v7 and v8 at the same time without
having deprecations logged.
foreign_types before and after transition to overrideChildTca:
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'foreign_types' => [
'aForeignType' => [
'showitem' => 'aChildField',
],
],
...
],
],
...
],
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'overrideChildTca' => [
'types' => [
'aForeignType' => [
'showitem' => 'aChildField',
],
],
],
...
],
],
...
],
foreign_selector_fieldTcaOverride before and after transition to overrideChildTca:
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'foreign_selector' => 'uid_local',
'foreign_selector_fieldTcaOverride' => [
'config' => [
'appearance' => [
'elementBrowserType' => 'file',
],
],
],
...
],
],
...
],
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'foreign_selector' => 'uid_local',
'overrideChildTca' => [
'columns' => [
'uid_local' => [
'config' => [
'appearance' => [
'elementBrowserType' => 'file',
],
],
],
],
],
...
],
],
...
],
foreign_record_defaults before and after transition to overrideChildTca:
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'foreign_record_defaults' => [
'aChildField' => 42,
],
...
],
],
...
],
.. code-block:: php
'columns' => [
'aField' => [
'config' => [
'type' => 'inline',
'overrideChildTca' => [
'columns' => [
'aChildField' => [
'config' => [
'default' => 42,
],
],
],
],
...
],
],
...
],
.. index:: Backend, TCA
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80027:
=====================================================================
Deprecation: #80027 - Remove TCA config 'max' on inputDateTime fields
=====================================================================
See :issue:`80027`
Description
===========
The TCA migration removes the 'max' config option for renderType="inputDateTime" since
this should not be set for this renderType.
Impact
======
Has an impact on performance during saving of records.
Affected Installations
======================
All installations using the 'max' config option for renderType="inputDateTime".
Migration
=========
Remove the 'max' config option for renderType="inputDateTime".
.. index:: Backend, Database, TCA
@@ -0,0 +1,68 @@
.. include:: /Includes.rst.txt
.. _deprecation-80047:
===================================================================
Deprecation: #80047 - Deprecate jQuery and extJS for BE viewhelpers
===================================================================
See :issue:`80047`
Description
===========
The BE related ViewHelpers :html:`<f:be.container>` and :html:`<f:be.pageRenderer>` have properties to activate ExtJS
and jQuery with various options. The usage of ExtJS has been deprecated and jQuery is always loaded. Therefore the
following attributes have been marked as deprecated.
:html:`<f:be.container>`
- `enableClickMenu`
- `loadExtJs`
- `loadExtJsTheme`
- `enableExtJsDebug`
- `loadJQuery`
- `jQueryNamespace`
:html:`<f:be.pageRenderer>`
- `loadExtJs`
- `loadExtJsTheme`
- `enableExtJsDebug`
- `loadJQuery`
- `jQueryNamespace`
Impact
======
Using these attributes will trigger a deprecation log entry. Code using them will work until these methods are removed in TYPO3 v9.
Affected Installations
======================
Any installation using the mentioned attributes.
Migration
=========
Use ``includeRequireJsModules`` property of the :html:`<f:be.pageRenderer>` or :html:`<f:be.container>` ViewHelpers to add needed RequireJS modules.
Example:
.. code-block:: xml
<f:be.pageRenderer
includeRequireJsModules="{
0:'TYPO3/CMS/Backend/ContextMenu'
}"
/>
See also documentation about RequireJS documentation_
.. _documentation: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/JavaScript/RequireJS/Index.html
.. index:: Backend, Fluid
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _deprecation-80048:
================================================================
Deprecation: #80048 - Mark ExtJS related API calls as deprecated
================================================================
See :issue:`80048`
Description
===========
The usage of ExtJS has been marked as deprecated. Therefore the following methods of :php:`ExtensionManagementUtility` have been marked as deprecated:
- :php:`addExtJSModule`
- :php:`registerExtDirectComponent`
Impact
======
Calling any of the PHP methods will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation working with custom extensions that use any of these methods.
Migration
=========
All of the functionality is obsolete or outdated and should be handled differently from now on:
1. Use :php:`ExtensionManagementUtility::addModule` instead of :php:`addExtJSModule`.
2. Some ajax routes_ instead of ExtDirect.
.. _routes: https://docs.typo3.org/typo3cms/InsideTypo3Reference/CoreArchitecture/Backend/Routing/Index.html
.. index:: Backend, PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-80053:
=================================================================================================
Deprecation: #80053 - Extbase CLI Console Output different method signature for infinite attempts
=================================================================================================
See :issue:`80053`
Description
===========
When using Extbase's CLI functionality to ask for a question via :php:`ConsoleOutput->select()` or
:php:`ConsoleOutput->askAndValidate()` the option to define infinite attempts has changed from "false"
to "null".
Impact
======
Calling any of the methods with :php:`$attempts = false` will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 extension shipping custom CLI commands for Extbase using the methods above with the option
to have infinite attempts.
Migration
=========
Set the method argument from "false" to "null" in the Extbase Command of your extension.
.. index:: CLI, ext:extbase, PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _deprecation-80076:
=================================================================
Deprecation: #80076 - TypoScript option page.insertClassesFromRTE
=================================================================
See :issue:`80076`
Description
===========
The TypoScript setting :typoscript:`page.insertClassesFromRTE` has been marked as deprecated.
The option enabled loading of CSS classes defined by backend PageTs config :typoscript:`RTE.classes` as inline CSS
into a frontend page. However it did not take merged RTE options and userTS/pageTS overrides
into account.
Impact
======
Setting :typoscript:`page.insertClassesFromRTE` in TypoScript will trigger a deprecation log entry.
Affected Installations
======================
Any installation having the option activated in TypoScript.
Migration
=========
In order to separate the functionality, all CSS classes which have been used in the RTE should be
defined separately for the frontend rendering in a custom CSS/LESS/SASS file.
.. index:: TypoScript, Frontend, RTE
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-80079:
======================================================================
Deprecation: #80079 - Deprecated method Bootstrap::loadExtensionTables
======================================================================
See :issue:`80079`
Description
===========
The internal method :php:`TYPO3\CMS\Core\Core\Bootstrap::loadExtensionTables()` has been deprecated and should not be used any longer.
Impact
======
Calling the deprecated :php:`Bootstrap::loadExtensionTables()` method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using the mentioned method :php:`Bootstrap::loadExtensionTables()`.
Please note that this method is marked as internal and should not be called at all from outside the TYPO3 core.
Migration
=========
If you need to call the internal Bootstrap method, you can use :php:`Bootstrap::loadBaseTca()` and :php:`Bootstrap::loadExtTables()` now.
Please note that both methods are marked as internal and don't belong to public TYPO3 core API.
This means that the methods can be adjusted anytime by the core itself.
.. index:: Backend, PHP-API
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-80317:
==============================================================
Deprecation: #80317 - Deprecate BackendUtility::getRecordRaw()
==============================================================
See :issue:`80317`
Description
===========
Method :php:`BackendUtility::getRecordRaw()` has been deprecated and should not be
used any longer.
Impact
======
Extensions using above methods will throw a deprecation warning.
Affected Installations
======================
All installations and extensions using the method :php:`BackendUtility::getRecordRaw()`.
Migration
=========
Use the QueryBuilder instead and remove all restrictions.
For further information follow this link: querybuilder_
.. _querybuilder: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Database/QueryBuilder/Index.html
.. index:: Backend, Database, PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80440:
==========================================================
Deprecation: #80440 - EXT:lowlevel ArrayBrowser->wrapValue
==========================================================
See :issue:`80440`
Description
===========
The method :php:`ArrayBrowser->wrapValue` in EXT:lowlevel has been marked as deprecated, since the sole
logic was to wrap the incoming string into :php:`htmlspecialchars()`.
Impact
======
Calling the method will trigger a deprecation warning.
Affected Installations
======================
Any TYPO3 installation using the EXT:lowlevel ArrayBrowser class in a custom extension.
Migration
=========
Remove the call to the method and directly use :php:`htmlspecialchars()` instead.
.. index:: PHP-API, ext:lowlevel
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80444:
======================================================================
Deprecation: #80444 - TypoScriptFrontendController-> beLoginLinkIPList
======================================================================
See :issue:`80444`
Description
===========
The method :php:`TypoScriptFrontendController->beLoginLinkIPList` has been marked as deprecated.
Impact
======
Calling the PHP method directly will trigger a deprecation warning.
Affected Installations
======================
Any installation instantiating a custom frontend-related RequestHandler or using the method above
when rendering the frontend. Also, any custom extension using this method.
Migration
=========
The functionality is moved to EXT:compatibility7.
.. index:: Frontend, PHP-API
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _deprecation-80445:
====================================================
Deprecation: #80445 - Deprecate printContent methods
====================================================
See :issue:`80445`
Description
===========
The methods :php:`TaskModuleController::printContent()` and :php:`PageLayoutController::printContent()` have been marked as deprecated.
Impact
======
Calling the deprecated methods will trigger a deprecation log entry.
.. index:: Backend, PHP-API
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-80449:
=====================================================
Deprecation: #80449 - GeneralUtility::freetypeDpiComp
=====================================================
See :issue:`80449`
Description
===========
The method :php:`GeneralUtility::freetypeDpiComp` has been marked as deprecated.
Impact
======
Calling this method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using custom GraphicalFunctions where GDlib/Freetype does custom calculations.
Migration
=========
No substitution available.
.. index:: PHP-API
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _deprecation-80451:
=========================================================
Deprecation: #80451 - Deprecate GeneralUtility::csvValues
=========================================================
See :issue:`80451`
Description
===========
The method :php:`GeneralUtility::csvValues()` has been marked as deprecated.
Impact
======
Calling the deprecated methods will trigger a deprecation log entry.
Migration
=========
Use the new method :php:`CsvUtility::csvValues()`
.. index:: Backend, PHP-API
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _deprecation-80468:
============================================================================
Deprecation: #80468 - Command Line Interface: cliKeys and cli_dispatch.phpsh
============================================================================
See :issue:`80468`
Description
===========
The functionality to register any command line script via
:php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys']['my_extension']` has been marked as deprecated.
The entry-point '`typo3/cli_dispatch.phpsh`` as well as the corresponding :php:`Application` class and
the :php:`CliRequestHandler` class have been marked as deprecated as well.
The functionality has been superseded by Symfony Console and the new entry-point within
``typo3/sysext/core/bin/typo3`` which is able to handle all functionality the same way including
all Extbase-related Command Controllers.
Impact
======
Calling the CLI entrypoint ``typo3/cli_dispatch.phpsh`` to call a CLI script will trigger a
deprecation warning.
Affected Installations
======================
Any installation using ``typo3/cli_dispatch.phpsh`` in any deployment or cronjob / scheduler
functionality.
Migration
=========
All functionality related to Extbase, EXT:lowlevel, or scheduler tasks can be called via
the new entrypoint ``typo3/sysext/core/bin/typo3`` with a similar call.
Update all cronjobs and automated and manual running scripts called via the command line to use
the new entrypoint.
If there any custom cliKeys registered, migrate them to a Symfony Command or an Extbase Command
Controller.
.. index:: CLI, LocalConfiguration
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-80485:
============================================================================================
Deprecation: #80485 - Method parameter of TSFE->whichWorkspace to return the workspace title
============================================================================================
See :issue:`80485`
Description
===========
The method :php:`TypoScriptFrontendController->whichWorkspace()` has an optional first parameter
to return the workspace title of the current workspace instead of the current workspace UID.
This parameter has been marked as deprecated.
Impact
======
When calling the method above with the method parameter set to "true", a deprecation message is
triggered.
Affected Installations
======================
Any installation using this PHP method with the parameter set to "true" via a custom extension which
deals with workspaces for frontend output (e.g. for editors to know in which workspace a user is
currently previewing a page).
Migration
=========
If the workspace title is necessary, a separate SQL call should be done right after
:php:`whichWorkspace()` is called in the extensions' PHP code.
.. index:: Frontend, PHP-API, ext:workspaces
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _deprecation-80486:
======================================================================================
Deprecation: #80486 - Setting charset via LocalizationParserInterface->getParsedData()
======================================================================================
See :issue:`80486`
Description
===========
The :php:`LocalizationParserInterface->getParsedData()` contains a third parameter to hand over a value
for the charset used.
This third parameter has been marked as deprecated, as it is not in use anymore.
Affected Installations
======================
Any installation with an extension that extends the LocalizationParser functionality with a custom
PHP class implementing the :php:`LocalizationParserInterface`.
Migration
=========
If implementing the :php:`LocalizationParserInterface`, be aware that this third parameter will be dropped in TYPO3 v9.
.. index:: PHP-API
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _deprecation-80491:
=======================================================
Deprecation: #80491 - BackendController inclusion hooks
=======================================================
See :issue:`80491`
Description
===========
The hook within BackendController :php:`$TYPO3_CONF_VARS["typo3/backend.php"]["additionalBackendItems"]`
has been marked as deprecated.
Loading ExtJS module JS/CSS files via :php:`ExtensionManagementUtility::addExtJSModule()` inside
the module configuration has been deprecated.
Calling :php:`BackendController->addJavascriptFile()`, :php:`BackendController->addJavascript()`
and :php:`BackendController->addCssFile()` will trigger a deprecation log entry.
Impact
======
Registering a hook via :php:`$TYPO3_CONF_VARS["typo3/backend.php"]["additionalBackendItems"]` and then
calling the Backend main page will trigger a deprecation log warning.
Registering any backend module which should load a global CSS/JS file within a module configuration
will trigger a deprecation log warning.
Calling any of the methods above will trigger a deprecation log warning.
Affected Installations
======================
Any installation using the hook or PHP methods directly in a custom extension, or using any of
the public methods above in a custom PHP script.
Migration
=========
Use the "constructPostProcess" hook within BackendController to load additional resources to achieve
the same functionality.
.. index:: Backend, PHP-API
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-80510:
=====================================================
Deprecation: #80510 - ContentObjectRenderer->URLqMark
=====================================================
See :issue:`80510`
Description
===========
The PHP method :php:`ContentObjectRenderer->URLqMark()` has been marked as deprecated. It was
used to add a ``?`` between two strings if the first one does contain a ``?`` already.
Its main purpose is to add query string parameters to a given URL.
Impact
======
Calling the method above will trigger a deprecation warning.
Affected Installations
======================
Any installation using custom extensions calling this method.
Migration
=========
Implement this functionality with PHP's native :php:`(strpos($haystack, '?') !== false ? '?' : '')`
one-liner directly.
.. index:: PHP-API, Frontend
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-80511:
========================================================================
Deprecation: #80511 - AbstractFunctionModule->incLocalLang and $thisPath
========================================================================
See :issue:`80511`
Description
===========
The method :php:`AbstractFunctionModule->incLocalLang()` and the public property
:php:`AbstractFunctionModule->thisPath` have been marked as deprecated.
Impact
======
Calling method above will trigger a deprecation log entry.
Affected Installations
======================
Any extension extending the AbstractFunctionModule and calling the mentioned method.
Migration
=========
The functionality of loading a locallang file is now taken care of by :php:`LanguageService::includeLLFile()`
and takes care of everything automatically.
If any specific calls to the method is made, it should be replaced by the LanguageService equivalent.
The property :php:`$thisPath` contains the path to the class, which can be accessed via Reflection,
as it is done currently as well, should be implemented in the custom extension itself that needs this
information.
.. index:: Backend, PHP-API
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-80512:
==========================================================
Deprecation: #80512 - DocumentTemplate->extJScode property
==========================================================
See :issue:`80512`
Description
===========
The property :php:`DocumentTemplate->extJScode` to load ExtJS-specific code "onExtJSReady"
has been marked as deprecated.
Impact
======
If the property is filled and added to the response output, a deprecation warning will be triggered.
Affected Installations
======================
Any installation with custom extensions using (or mis-using) this property to inject ExtJS-specific
code.
Migration
=========
Use the PageRenderer object directly to inject :php:`addExtOnReadyCode` in a backend response.
.. index:: Backend, PHP-API
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-80513:
=======================================================================
Deprecation: #80513 - DataHandler: Various methods and method arguments
=======================================================================
See :issue:`80513`
Description
===========
The method :php:`DataHandler->destPathFromUploadFolder()` has been marked as deprecated.
The fourth parameter :php:`$func` of the method :php:`DataHandler->extFileFunctions()` has been deprecated.
Impact
======
Calling the method :php:`DataHandler->destPathFromUploadFolder()` will trigger a deprecation log entry.
Calling the method :php:`DataHandler->extFileFunctions()` with the fourth parameter (usually set to
'deleteAll') will trigger a deprecation log entry.
Affected Installations
======================
Any installation with custom extension logic using the DataHandler and specifically these methods.
Migration
=========
Replace the function call :php:`DataHandler->destPathFromUploadFolder()` by prepend the
constant :php:`PATH_site` before the string to be handed over to the deprecated method.
Remove the fourth parameter of the callee of :php:`DataHandler->extFileFunctions()`.
.. index:: PHP-API, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-80514:
=========================================================================
Deprecation: #80514 - GraphicalFunctions->tempPath and createTempSubDir()
=========================================================================
See :issue:`80514`
Description
===========
The method :php:`GraphicalFunctions->createTempSubDir()` and the property
:php:`GraphicalFunctions->tempPath` have been marked as deprecated.
Impact
======
Calling the method above will trigger a deprecation log entry.
Affected Installations
======================
Any instance with custom extensions extending the PHP class GraphicalFunctions.
Migration
=========
Use :php:`GeneralUtility::mkdir_deep()` with the full path (including the PHP constant `PATH_site`)
directly.
.. index:: PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80516:
================================================================================
Deprecation: #80516 - TypoScript config.setJS_mouseOver and config.setJS_openPic
================================================================================
See :issue:`80516`
Description
===========
The TypoScript properties :typoscript:`config.setJS_mouseOver` and :typoscript:`config.setJS_openPic` have been marked
as deprecated.
Impact
======
Setting any of the TypoScript properties will trigger a deprecation log entry.
Affected Installations
======================
Any installation using these TypoScript options.
Migration
=========
Include the small JavaScript files directly in your custom JavaScript file or inline via :typoscript:`page.inlineJS`.
.. index:: TypoScript, Frontend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-80524:
===========================================================================
Deprecation: #80524 - PageRepository::getHash and PageRepository::storeHash
===========================================================================
See :issue:`80524`
Description
===========
The two static methods :php:`PageRepository::getHash()` and :php:`PageRepository::storeHash()`, that
act as simple wrappers for the Caching Frameworks's "cache_hash" frontend, have been deprecated.
Impact
======
Calling any of the methods above will trigger a deprecation log entry.
Affected Installations
======================
Any installation with a custom installation using any of the methods.
Migration
=========
Use the Caching Framework directly. Simply spoken, the code that still exists in the functions,
can simply be copied into the third-party extensions' code.
.. index:: PHP-API, Frontend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-80527:
=====================================================================
Deprecation: #80527 - Marker-related methods in ContentObjectRenderer
=====================================================================
See :issue:`80527`
Description
===========
The following methods within :php:`ContentObjectRenderer` PHP class have been marked as deprecated:
* :php:`getSubpart()`
* :php:`substituteSubpart()`
* :php:`substituteSubpartArray()`
* :php:`substituteMarker()`
* :php:`substituteMarkerArrayCached()`
* :php:`substituteMarkerArray()`
* :php:`substituteMarkerInObject()`
* :php:`substituteMarkerAndSubpartArrayRecursive()`
* :php:`fillInMarkerArray()`
Impact
======
Calling any of the methods above will trigger a deprecation log entry.
Affected Installations
======================
Any installation using custom extensions calling these API methods.
Migration
=========
Instantiate the class :php:`MarkerBasedTemplateService` available in TYPO3 v7, which contains equivalents
to all methods that have been marked as deprecated with the same functionality and namings.
.. index:: PHP-API, Frontend
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _deprecation-80532:
=========================================================================
Deprecation: #80532 - GifBuilder-related methods in ContentObjectRenderer
=========================================================================
See :issue:`80532`
Description
===========
The following methods related to :php:`GifBuilder` within :php:`ContentObjectRenderer` have been marked
as deprecated.
* :php:`clearTSProperties()`
* :php:`gifBuilderTextBox()`
* :php:`linebreaks()`
Impact
======
Calling any of the methods above will trigger a deprecation message.
Affected Installations
======================
Any installation using these methods in custom extensions.
.. index:: Frontend, PHP-API
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-80579:
================================================================
Deprecation: #80579 - Modal.center has been marked as deprecated
================================================================
See :issue:`80579`
Description
===========
The method :js:`Modal.center` has been marked as deprecated. Alignment is now
handled via CSS and this method is now obsolete.
Impact
======
Calling :js:`Modal.center` will trigger a console warning in the browser.
Affected Installations
======================
All 3rd party extensions using :js:`Modal.center` are affected.
Migration
=========
Remove obsolete calls to :js:`Modal.center()`.
.. index:: JavaScript, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-80583:
====================================================
Deprecation: #80583 - TYPO3_CONF_VARS_extensionAdded
====================================================
See :issue:`80583`
Description
===========
The global array :php:`$GLOBALS['TYPO3_CONF_VARS_extensionAdded']` has been deprecated along with the method
:php:`ExtensionManagementUtility::appendToTypoConfVars()`
Impact
======
Using method :php:`appendToTypoConfVars()` throws a deprecation warning and accessing
:php:`$GLOBALS['TYPO3_CONF_VARS_extensionAdded']` will stop working with core version 9.
Affected Installations
======================
Extensions using :php:`$GLOBALS['TYPO3_CONF_VARS_extensionAdded']` or method :php:`appendToTypoConfVars()`
Migration
=========
Access :php:`$GLOBALS['TYPO3_CONF_VARS']` directly.
.. index:: LocalConfiguration, PHP-API
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-80601:
========================================================================
Deprecation: #80601 - Change duplicate icon identifiers to actions-close
========================================================================
See :issue:`80601`
Description
===========
The icon ``actions-document-close`` has been marked as deprecated.
Impact
======
Using the icon identifier ``actions-document-close`` will trigger a deprecation log entry.
Affected Installations
======================
Any installation using the icon identifier.
Migration
=========
Use the new icon identifier ``actions-close`` instead.
.. index:: Backend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80603:
======================================================================
Deprecation: #80603 - Change duplicate icon identifiers to actions-add
======================================================================
See :issue:`80603`
Description
===========
The icon ``actions-edit-add`` has been marked as deprecated.
Impact
======
Using the icon identifier ``actions-edit-add`` will trigger a deprecation log entry.
Affected Installations
======================
Any installation using the icon identifier.
Migration
=========
Use the new icon identifier ``actions-add`` instead.
.. index:: Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-80614:
=============================================================
Deprecation: #80614 - TCA itemListStyle and selectedListStyle
=============================================================
See :issue:`80614`
Description
===========
The TCA property ``itemListStyle`` available in renderType ``selectSingleBox`` and
``selectMultipleSideBySide``, as well as the property ``selectedListStyle`` available in
renderType ``selectMultipleSideBySide`` have been deprecated.
Impact
======
Using these properties throws a deprecation warning and will not be considered with TYPO3 v9.
Affected Installations
======================
Instances using one of the above properties in TCA
Migration
=========
The properties can be dropped. Changing styles of above elements should be done in own renderTypes
or by overloading CSS in the backend.
.. index:: Backend, TCA
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-79343:
=====================================================================
Feature: #79343 - Allow overriding PATH_site via environment variable
=====================================================================
See :issue:`79343`
Description
===========
It is now possible to define the :php:`PATH_site` constant, which acts as a basis for any entry point
running a TYPO3 system, via the environment variable :php:`TYPO3_PATH_ROOT`.
This variable is automatically calculated and set for any TYPO3 installation set up via composer,
making it possible to run the TYPO3 command line interface from any location of the system.
Impact
======
When using the command line entry-point :file:`typo3/sysext/core/bin/typo3` with composer, it can also
be called from a projects' default :file:`bin/` directory.
.. index:: CLI, PHP-API
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _feature-79812:
======================================================================
Feature: #79812 - Allow overriding cropVariants for Image Manipulation
======================================================================
See :issue:`79812`
Description
===========
With the introduction of :issue:`75880` you now can define multiple cropVariants in TCA.
With this feature it is now possible to change or override these cropVariants via TSconfig.
Setting a FormEngine option through :typoscript:`TCEFORM.sys_file_reference.crop.config.cropVariants.*` does now work.
.. code-block:: typoscript
TCEFORM.sys_file_reference.crop.config.cropVariants {
default {
title = Default desktop
selectedRatio = NaN
allowedAspectRatios {
NaN {
title = free
value = 0.0
}
}
}
specialMobile {
title = Our special mobile variant
selectedRatio = NaN
allowedAspectRatios {
4:3 {
title = ratio 4/3
value = 1.3333333
}
}
}
}
Impact
======
It is not possible to change or override cropVariants via Page and User TSconfig.
.. index:: Backend, FAL, TSConfig
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _feature-79883:
===========================================================================
Feature: #79883 - Add cropVariant support to TypoScript rendering of images
===========================================================================
See :issue:`79883`
Description
===========
The introduction of the new crop variants :issue:`75880` broke the handling of
cropped images when using TypoScript to render file(reference)'s. This feature
fixes this and introduces a new TypoScript option to use a different cropVariant.
To use a different :typoscript:`cropVariant` as default you can provide the
:typoscript:`cropVariant` name now in your TypoScript configuration.
If :typoscript:`cropVariant` isn't provided the default variant will be used.
.. code-block:: typoscript
# Use specific cropVariant for the images
tt_content.image.20.1.file.cropVariant = mobile
Impact
======
If multiple cropVariants are available (see :issue:`75880`) you can now configure
which variant to use with the :typoscript:`cropVariant` option of :typoscript:`imgResource`.
.. index:: FAL, Frontend, TypoScript
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _feature-80126:
=====================================================================
Feature: #80126 maximum field length not set as attribute "maxlength"
=====================================================================
See :issue:`80126`
See :issue:`80128`
Description
===========
If a form element is set to be use the 'String length' server side validation through the form editor, the client side
validation properties ``minlength`` and ``maxlength`` will be rendered.
Result:
.. code-block:: yaml
renderables:
-
type: <formElementType>
...
properties:
fluidAdditionalAttributes:
minlength: 2
maxlength: 3
...
validators:
-
identifier: StringLength
options:
minimum: 2
maximum: 3
.. index:: Frontend, Backend, ext:form
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-80154:
=============================================
Feature: #80154 - Retrieve session data in TS
=============================================
See :issue:`80154`
Description
===========
As the session API has been modified, it is no longer possible to access
session data from TypoScript by accessing the formerly public property of
the fe_user with:
.. code-block:: typoscript
page.10 = TEXT
page.10.data = TSFE:fe_user|sesData|myext|mydata
This is being replaced by a more direct way, which allows for the same functionality:
.. code-block:: typoscript
page.10 = TEXT
page.10.data = session:myext|mydata
.. index:: Frontend, TypoScript
@@ -0,0 +1,197 @@
.. include:: /Includes.rst.txt
.. _feature-80196:
===================================================================
Feature: #80196 - EXT:form - support multiple form elements per row
===================================================================
See :issue:`80196`
Description
===========
Two new form element types have been added to the form framework:
* GridContainer
* GridRow
Using these 'container' form elements will enable you to define multiple form elements per row.
Example:
.. code-block:: yaml
type: Form
identifier: example-form-gridcontainer
label: 'Form Grid Container'
prototypeName: standard
renderables:
-
type: Page
identifier: page-1
label: Page
renderables:
-
type: GridContainer
identifier: gridcontainer-2
label: 'Grid: Container'
renderables:
-
type: GridRow
identifier: gridrow-2
label: 'Grid: Row'
renderables:
-
type: SingleSelect
identifier: singleselect-1
label: 'Single select'
properties:
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: 12
lg:
numbersOfColumnsToUse: 2
-
type: Text
identifier: text-1
label: Text
properties:
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: 6
lg:
numbersOfColumnsToUse: 5
-
type: MultiSelect
identifier: multiselect-1
label: 'Multi select'
properties:
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: 6
sm:
numbersOfColumnsToUse: 5
-
type: GridContainer
identifier: gridcontainer-1
label: 'Grid: Container'
renderables:
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
type: Password
identifier: password-1
label: Password
Per default, the resulting markup is compatible to Twitter Bootstrap.
The following options are available now:
.. code-block:: yaml
GridContainer:
...
properties:
columnClassAutoConfiguration:
gridSize: 12
viewPorts:
xs:
classPattern: 'col-xs-{@numbersOfColumnsToUse}'
sm:
classPattern: 'col-sm-{@numbersOfColumnsToUse}'
md:
classPattern: 'col-md-{@numbersOfColumnsToUse}'
lg:
classPattern: 'col-lg-{@numbersOfColumnsToUse}'
and
.. code-block:: yaml
<formElementIdentifier>:
...
properties:
gridColumnClassAutoConfiguration:
viewPorts:
xs:
numbersOfColumnsToUse: 12
...
lg:
numbersOfColumnsToUse: 2
**GridContainer.properties.columnClassAutoConfiguration**
The example form definition shown above generates the following HTML markup
.. code-block:: html
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-3 col-md-4 col-lg-2">
...
</div>
<div class="col-xs-6 col-sm-3 col-md-4 col-lg-5">
...
</div>
<div class="col-xs-6 col-sm-5 col-md-4 col-lg-5">
...
</div>
</div>
</div>
**GridContainer.properties.columnClassAutoConfiguration.gridSize**
Total amount of grid columns (default: 12).
**GridContainer.properties.columnClassAutoConfiguration.viewPorts.<viewPortName>.classPattern**
This pattern will be used to generate the HTML class attribute values for each viewport.
The wildcard '{@numbersOfColumnsToUse}' will be replaced with the calculated grid column numbers.
At the end, all 'classPattern' items for each viewport will be merged together
and written into the class attribute of each form element (all form elements within a 'GridRow').
The calculation depends on the option 'gridSize', the amount of the form elements within the
'GridRow' form element and the optional option 'gridColumnClassAutoConfiguration' from the
form element configurations.
**<formElementIdentifier>.properties.gridColumnClassAutoConfiguration (optional)**
Each form elements within a 'GridRow' element can define the number of grid columns
to use on a 'per viewport' base.
**<formElementIdentifier>.properties.gridColumnClassAutoConfiguration.viewPorts.<viewPortName>**
The array keys '<viewPortName>' must match with the array keys '<viewPortName>'
from the configuration 'GridContainer.properties.columnClassAutoConfiguration.viewPorts.<viewPortName>'
**<formElementIdentifier>.properties.gridColumnClassAutoConfiguration.viewPorts.<viewPortName>.numbersOfColumnsToUse**
The number of grid columns to be used by this element for the viewport '<viewPortName>'.
This number goes hard to the '{@numbersOfColumnsToUse}' wildcard from the configuration
'GridContainer.properties.columnClassAutoConfiguration.viewPorts.<viewPortName>.classPattern'
If nothing is set, the {@numbersOfColumnsToUse} will be calculated automatically.
Impact
======
You are now able to add multiple form elements per row via the API and the form editor.
.. index:: Backend, Frontend, ext:form
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _feature-80374-1668719171:
=========================================================================
Feature: #80374 - Add generic fluid template for already rendered content
=========================================================================
See :issue:`80374`
Description
===========
To provide better support for content elements where the content itself is not
processed by fluid we introduce a new generic template, to make it easy to
benefit from the universal layouts of fluid styled content.
The generic template only wraps already generated html that have been assigned
to the variable `content`. This eliminates the need for extensions to provide
custom templates to wrap their external rendered content to achieve the same
behaviour as other fluid styled content elements.
Template
--------
.. code-block:: html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">
<f:comment>This templates is used to provide necessary functionality for external processed content and could be used across multiple sources, for example the frontend login content element.</f:comment>
{content -> f:format.raw()}
</f:section>
</html>
Example Usage
-------------
.. code-block:: typoscript
tt_content.mycontent =< lib.contentElement
tt_content.mycontent {
templateName = Generic
variables {
content = USER_INT
content {
userFunc = ACME\ContentExtension\Controller\SuperController->main
}
}
}
.. index:: Fluid, TypoScript, Frontend
@@ -0,0 +1,118 @@
.. include:: /Includes.rst.txt
.. _feature-80374:
=========================================================================================
Feature: #80374 - Frontend Login configuration now available through TypoScript constants
=========================================================================================
See :issue:`80374`
Description
===========
The most common configuration options for the "Frontend Login" configuration are
now available as TypoScript constants, and moved to a new section "Frontend Login"
in the constant editor.
Storage
-------
styles.content.loginform.pid
Storage Folder: Define the Storage Folder with the Website User Records,
using a comma separated list or single value
styles.content.loginform.recursive
Recursive: If set, also any subfolders of the storagePid will be used
Template
--------
styles.content.loginform.templateFile
Login template: Enter the path for the HTML template to be used
styles.content.loginform.feloginBaseURL
BaseURL for generated links: Base url if something other than the system
base URL is needed
styles.content.loginform.dateFormat
Date format: Format for the link is valid until message (forget password email)
Features
--------
styles.content.loginform.showForgotPasswordLink
Display Password Recovery Link: If set, the section in the template to
display the link to the forget password dialogue is visible.
styles.content.loginform.showPermaLogin
Display Remember Login Option: If set, the section in the template to
display the option to remember the login (with a cookie) is visible.
styles.content.loginform.showLogoutFormAfterLogin
Disable redirect after successful login, but display logout-form: If set,
the logout form will be displayed immediately after successful login.
E-Mail
------
styles.content.loginform.emailFrom
E-Mail Sender Address: E-Mail address used as sender of the change password emails
styles.content.loginform.emailFromName
E-Mail Sender Name: Name used as sender of the change password emails
styles.content.loginform.replyToEmail
Reply To E-Mail Address: Reply-to address used in the change password emails
Redirects
---------
styles.content.loginform.redirectMode
Redirect Mode: Comma separated list of redirect modes. Possible values: groupLogin,
userLogin, login, getpost, referer, refererDomains, loginError, logout
styles.content.loginform.redirectFirstMethod
Use First Supported Mode from Selection: If set the first method from redirectMode
which is possible will be used
styles.content.loginform.redirectPageLogin
After Successful Login Redirect to Page: Page id to redirect to after Login
styles.content.loginform.redirectPageLoginError
After Failed Login Redirect to Page: Page id to redirect to after Login Error
styles.content.loginform.redirectPageLogout
After Logout Redirect to Page: Page id to redirect to after Logout
styles.content.loginform.redirectDisable
Disable Redirect: If set redirecting is disabled
Security
--------
styles.content.loginform.forgotLinkHashValidTime
Time in hours how long the link for forget password is valid: How many
hours the link for forget password is valid
styles.content.loginform.newPasswordMinLength
Minimum amount of characters, when setting a new password: Minimum length
of the new password a user sets
styles.content.loginform.domains
Allowed Referrer-Redirect-Domains: Comma separated list of domains which
are allowed for the referrer redirect mode
styles.content.loginform.exposeNonexistentUserInForgotPasswordDialog
Expose existing users: Expose the information on whether or not the account
for which a new password was requested exists. By default, that information
is not disclosed for privacy reasons.
Impact
======
Frontend Login configuration is now always added first and not depending anymore
and not depending anymore on the configuration of the TypoScript template.
This allows reliable configuration since the configuration is not a moving target.
.. index:: TypoScript, Frontend
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _feature-80452:
================================================================
Feature: #80452 - Extbase CLI commands available via new CLI API
================================================================
See :issue:`80452`
Description
===========
Any Extbase Command Controller can now be accessed via the new Symfony Console CLI entrypoint by
simply calling ``typo3/sysext/core/bin/typo3 controller:command``.
Using the existing CLI entrypoint via ``typo3/cli_dispatch.phpsh extbase controller:command`` still
works as expected.
.. index:: CLI, ext:extbase
@@ -0,0 +1,314 @@
.. include:: /Includes.rst.txt
.. _feature-80579:
===============================================
Feature: #80579 - Improved JavaScript Modal API
===============================================
See :issue:`80579`
Description
===========
To improve the usability and flexibility for a unified handling of overlays in
the backend we're opening the existing API for modals to be more flexible and
adjustable to your needs for advanced usage. With the introduction of the
advanced API it is now possible to pass configuration by json object. This
enables more easy configuration and better fallback if the modal is not
correctly configured.
For a unified experience all modals are now centered by default, will kept in
place automatically and are available in different sized depending on your needs.
In addition to this there is also a new type for loading content into an
iframe. Buttons have now full support for the TYPO3 Icon API and data
attributes that also can set by configuration.
Advanced API
------------
Unlike the existing api functions like :js:`Modal.confirm`, :js:`Modal.loadUrl` or
:js:`Modal.show`, :js:`Modal.advanced` uses a JavaScript object instead of fixed
parameters.
.. code-block:: javascript
require([
'jquery',
'TYPO3/CMS/Backend/Modal'
], function ($, Modal) {
var configuration = {
type: Modal.types.iframe,
title: title,
content: url,
size: Modal.sizes.large,
callback: function(currentModal) {
currentModal.find('.t3js-modal-body')
.addClass('custom-css-class');
}
};
Modal.advanced(configuration);
});
}
Configuration Options
---------------------
Type
^^^^
The :js:`type` will define the behaviour of content loading, and only accepts
:js:`Modal.types.ajax`, :js:`Modal.types.iframe` and the default :js:`Modal.types.default`.
.. code-block:: javascript
var configuration = {
type: Modal.types.iframe,
content: url || content
};
Modal.types.default
Default will display static content set in the option `content`.
Modal.types.ajax
Content will be grabbed from a url set in the option `content`
Modal.types.iframe
Url provided in the option `content` will be loaded in an iframe in the modal.
Also it will automatically set the title from the contained document.
Title
^^^^^
The `title` will be display above the modal content. For the type
:js:`Modal.types.iframe` this option will have no effect. As soon as the content
from the iframe is loaded, the title will be replaced with title of the
contained document. The default will set the title to "Information".
.. code-block:: javascript
var configuration = {
title: 'My Title'
};
Modal.advanced(configuration);
Content
^^^^^^^
The `content` accepts only strings that can be either a HTML or a url for types
:js:`Modal.types.ajax` and :js:`Modal.types.iframe`. The default will show a warning
that there is a possible misconfiguration of the modal.
.. code-block:: javascript
var configurationStatic = {
type: Modal.types.default,
content: 'My Title'
};
Modal.advanced(configurationStatic);
.. code-block:: javascript
var configurationAjax = {
type: Modal.types.ajax,
content: 'http://www.google.de/'
};
Modal.advanced(configurationAjax);
.. code-block:: javascript
var configurationIframe = {
type: Modal.types.iframe,
content: 'http://www.google.de/'
};
Modal.advanced(configurationIframe);
Severity
^^^^^^^^
Severity is used to change the appearance of the modal window to represent a
contextual state like success, information, warning or danger. The default is
:js:`Severity.notice`. Only options provided by the :js:`Severity` object will be
accepted.
.. code-block:: javascript
var configuration = {
severity: Severity.info,
};
Modal.advanced(configuration);
Buttons
^^^^^^^
Defined buttons will be display displayed at the bottom of the modal window.
The configuration accepts an array of single button definitions.
.. code-block:: javascript
var configuration = {
buttons: [
{
text: 'Save changes',
name: 'save',
icon: 'actions-document-save',
active: true,
btnClass: 'btn-primary',
dataAttributes: {
action: 'save'
},
trigger: function() {
Modal.currentModal.trigger('modal-dismiss');
}
}
]
};
Modal.advanced(configuration);
text
Text that will be displayed in the button
name
Value of the name attribute of the button
icon
Name of the icon that will be displayed in front of the text
active
Activated button after opening the modal window
btnClass
Additional css class that will be added to the button
dataAttributes
Object of data attributes that will be added to the button
trigger
Callback function that will be triggered then the button is clicked
Style
^^^^^
The ``style`` option will change the appearance of the modal like the ``severity``
both without contextual meaning. The default option is :js:`Modal.styles.light`.
The second available option is :js:`Modal.styles.dark` will override all contextual
styling.
.. code-block:: javascript
var configuration = {
style: Modal.styles.default
}
Modal.advanced(configuration);
Size
^^^^
While the modal itself adapts to the window, there are several options available
to limit the maximal size of the modal. The sizes :js:`Modal.sizes.small` and the
default :js:`Modal.sizes.default` will automatically adapt to the content and are only
limited to the width of the modal. :js:`Modal.sizes.large` and :js:`Modal.sizes.full`
are designed to contain a undefined length of content in a fixed sized modal.
These are suited best for :js:`Modal.types.ajax` or :js:`Modal.types.iframe` content.
.. code-block:: javascript
var configuration = {
size: Modal.sizes.large
}
Modal.advanced(configuration);
Modal.sizes.small
Limited to 400px width
Modal.sizes.default
Limited to 600px width
Modal.sizes.large
Limited to 800px width and 600px height
Modal.sizes.full
Limited to 1800px width and 1200px height
Additional CSS Classes
^^^^^^^^^^^^^^^^^^^^^^
The option `additionalCssClasses` accepts an array of css classes that will be
added to the modal frame.
.. code-block:: javascript
var configuration = {
additionalCssClasses: [
'class1',
'class2'
]
}
Modal.advanced(configuration);
Callback
^^^^^^^^
Callback function that will be called after the modal is processed.
.. code-block:: javascript
var configuration = {
callback: function(currentModal) {
currentModal.find('.t3js-modal-body')
.addClass('custom-css-class');
}
}
Modal.advanced(configuration);
Callback after ajax processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Callback function that will be called after the ajax call has been done and
the response added to the desired location. This option is only available for
type :js:`Modal.types.ajax`.
.. code-block:: javascript
var configuration = {
type: Modal.types.ajax,
ajaxCallback: function() {
do();
}
}
Modal.advanced(configuration);
Target for ajax response
^^^^^^^^^^^^^^^^^^^^^^^^
The ajax response will be added to the body of the particular modal window by
default but can be set to a different selector if necessary. This option is only
available for type :js:`Modal.types.ajax`.
.. code-block:: javascript
var configuration = {
type: Modal.types.ajax,
ajaxTarget: '.t3js-modal-footer'
}
Modal.advanced(configuration);
.. index:: JavaScript, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-80619:
========================================================
Feature: #80619 - Extend Link Generation within TypoLink
========================================================
See :issue:`80619`
Description
===========
Generating a link to a page, email, url, email in the TYPO3 Frontend is usually handled via the
so-called ``typolink`` functionality. Generating links is now flexible, extensions can register
their own link-building functionality via :php:`$GLOBALS[TYPO3_CONF_VARS][FE][typolinkBuilder][$linkType]`
in the extensions ``ext_localconf.php``.
All existing functionality for TypoLink via TypoScript etc. still works as before.
Impact
======
The TYPO3 Core itself handles all native link types (email, url, page, record, file, folder) via
this functionality already, and it can be overridden.
The functionality goes hand-in-hand with the LinkService registration functionality for setting
links of a specific type.
.. index:: Frontend, PHP-API, LocalConfiguration
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _important-71095:
================================================================
Important: #71095 - Add language debug mode to All Configuration
================================================================
See :issue:`71095`
Description
===========
Previously it was possible to set :php:`$GLOBALS['TYPO3_CONF_VARS']['BE']['lang']['debug']`
in order to enable debug in LanguageService.
However this could not be configured in the install tool.
In order to enable this possibility it has been renamed to
:php:`$GLOBALS['TYPO3_CONF_VARS']['BE']['languageDebug']`
.. index:: Backend, LocalConfiguration
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _important-78650:
======================================================================
Important: #78650 - TypoScriptService class moved from Extbase to Core
======================================================================
See :issue:`78650`
Description
===========
The PHP class :php:`TypoScriptService` has been moved to the core extension, as it has no direct link
to Extbase, and a lot of other system extensions are using the class.
The old class name :php:`TYPO3\CMS\Extbase\Service\TypoScriptService` is registered as a class alias
for the new class name :php:`TYPO3\CMS\Core\TypoScript\TypoScriptService`, so extensions can call the
class via the Extbase PHP namespace in TYPO3 v8 without any downsides.
.. index:: PHP-API, ext:extbase, TypoScript
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _important-79847:
=====================================================================
Important: #79847 - Fluid bugs fixed and features added (Fluid 2.3.1)
=====================================================================
See :issue:`79847`
Description
===========
The Fluid engine dependency is raised to version 2.3.1 which fixes a few important bugs and adds a couple of features:
* Namespace declarations (``{namespace foo=Bar\Baz\ViewHelpers}`` style) are now removed from output
https://github.com/TYPO3/Fluid/pull/262
* The TemplatePaths object now accepts arrays for ``sanitizePath`` like the TYPO3 CMS adapter does.
https://github.com/TYPO3/Fluid/pull/263
* Compiler is reset after each rendering - this fixes an issue where rendering the new ``HeaderAssets`` and ``FooterAssets``
sections would fail to attach the assets until the Fluid template had been compiled (first page hit after cache flush).
https://github.com/TYPO3/Fluid/pull/269
And in the new features department, two new features are added:
* XML namespace extraction is brought into sync with TYPO3 CMS adapter
https://github.com/TYPO3/Fluid/pull/264
* An escaping modifier pre-processor has been added
https://github.com/TYPO3/Fluid/pull/266
This means two things:
1. For template developers this means you can use ``{escaping off}`` in a template to completely disable the escaping
which is normally done - which can be particularly helpful in non-HTML templates.
2. For the TYPO3 core this means it becomes possible to drop two classes (Fluid overrides) completely from the source;
namely the ``XmlnsNamespaceTemplatePreProcessor`` and ``LegacyNamespaceExpressionNode``. Thus increasing the parsing
efficiency of Fluid as it is integrated with TYPO3 CMS.
.. index:: Fluid
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _important-79942:
=================================================================
Important: #79942 - Version selector view moved to compatibility7
=================================================================
See :issue:`79942`
Description
===========
The custom Backend module for showing and selecting versions of a specific page, which was
part of EXT:version has been moved to EXT:compatibility7. The backend module is solely
available via the ClickMenu as it is formally superseded by the Workspaces Backend module.
All related PHP classes and template files have been moved as well.
.. index:: PHP-API, Backend, ext:version
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _important-80236:
=================================================================
Important: #80236 - EXT:form Configuration for form VH attributes
=================================================================
See :issue:`80236`
Description
===========
Move some fixed configurations from within the fluid templates into the
form settings
* f:form -> additionalParams
* f:form -> addQueryString
* f:form -> argumentsToBeExcludedFromQueryString
* f:form -> action
* f:form -> enctype
* f:form -> method
within the EXT:Form configuration.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
<prototypeName>:
formElementsDefinition:
Form:
renderingOptions:
addQueryString: false
argumentsToBeExcludedFromQueryString: []
additionalParams: []
controllerAction: perform
httpMethod: post
httpEnctype: 'multipart/form-data'
Impact
======
An integrator can configure the FLUID form properties
f:form -> additionalParams
f:form -> addQueryString
f:form -> argumentsToBeExcludedFromQueryString
f:form -> action
f:form -> enctype
f:form -> method
.. index:: Frontend, ext:form, Fluid
@@ -0,0 +1,140 @@
.. include:: /Includes.rst.txt
.. _important-80241:
==========================================================
Important: #80241 - EXT:form simplify translation handling
==========================================================
See :issue:`80241`
Description
===========
If an integrator wants to add translations for new form elements he can only
define a new translation file which must contain all translation keys.
This patch makes it possible to define multiple translation files.
Before this patch:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
translation:
translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf'
After this patch:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
translation:
translationFile:
10: 'EXT:form/Resources/Private/Language/locallang.xlf'
20: 'EXT:my_ext/Resources/Private/Language/locallang.xlf'
The translation keys will be searched within the referenced files.
The search order is from the key with the highest number to the lowest.
If a translation key is found within one of these files the search will stop.
This makes it possible to only define new keys within the custom translations
and use the default form translations as well.
The default settings keep the translationFile property as string because
of backward compatibility.
Before this patch the "BaseFormElementMixin" inherits the "translationSettingsMixin".
Thus, the "renderingOptions.translation..." are copied to each form element.
This is inconvenient if an integrator defines his own prototype which inherits from
the standard prototype because he must redefine the "renderingOptions.translation..."
options for each form element.
Since there already is a fallback strategy to the "renderingOptions.translation..."
options from the root form element - if this option is not set within the
child form elements - we can simply apply the "translationSettingsMixin"
to the "Form" element and remove it from the "BaseFormElementMixin".
Now, the rendering options are only set for the "Form" element and rules
as a prototype wide frontend translation setting.
This patch adds a fallback for the form engine translation if there is no
"translationFile" setting within the "FormEngine" option.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEngine:
translationFile:
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:ext_form_example1484232130/Resources/Private/Language/Database.xlf'
Now, there is one prototype wide form engine (plugin settings) translation setting.
Summary
-------
With this patch, an integrator has prototype wide translation settings
for the 4 aspects of the form framework. Furthermore, the integrator is
able to define multiple translation files to avoid copying the whole
default translation files or using locallangXMLOverride.
.. code-block:: yaml
TYPO3:
CMS:
Form:
formManager:
selectablePrototypesConfiguration:
1484232130:
translationFile:
# translations for the form managers "new form" modal
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_ext/Resources/Private/Language/Database.xlf'
prototypes:
<prototypeName>:
formEditor:
translationFile:
# translations for the form editor
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_ext/Resources/Private/Language/Database.xlf'
formEngine:
translationFile:
# translations for the form plugin (finisher overrides)
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_ext/Resources/Private/Language/Database.xlf'
formElementsDefinition:
Form:
renderingOptions:
translation:
translationFile:
# translations for the frontend
10: 'EXT:form/Resources/Private/Language/locallang.xlf'
20: 'EXT:my_ext/Resources/Private/Language/locallang.xlf'
Impact
======
Easier to use, less maintenance.
.. index:: Backend, Frontend, ext:form
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _important-80266:
===========================================================================
Important: #80266 - Moved config.sys_language_softExclude to compatibility7
===========================================================================
See :issue:`80266`
Description
===========
The TypoScript option :typoscript:`config.sys_language_softExclude` to set
certain TCA table fields to ``l10n_mode=exclude`` during frontend request
runtime has been moved to compatibility7.
If any installation depends on this option in the TYPO3 frontend, the
extension should be installed.
However, as the TCA option ``l10n_mode=exclude`` has been superseded
by the TCA option ``allowLanguageSynchronization`` the actual use-case
for this TypoScript setting should be re-evaluated.
.. index:: TypoScript, Frontend, TCA
@@ -0,0 +1,290 @@
.. include:: /Includes.rst.txt
.. _important-80301:
===========================================================
Important: #80301 - EXT:form - Cleanup / callback migration
===========================================================
See :issue:`80301`
Description
===========
The callback 'onBuildingFinished' is deprecated and will be removed in TYPO3 v9.
--------------------------------------------------------------------------------
Use the new hook 'afterBuildingFinished' instead.
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterBuildingFinished'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable
* @return void
*/
public function afterBuildingFinished(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable)
{
}
This hook will be called for each renderable.
The callback 'beforeRendering' is deprecated and will be removed in TYPO3 v9.
-----------------------------------------------------------------------------
Use the new hook 'beforeRendering' instead.
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRendering'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the signal:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface $renderable
* @return void
*/
public function beforeRendering(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface $renderable)
{
}
This hook will be called for each renderable.
The callback 'onSubmit' is deprecated and will be removed in TYPO3 v9.
----------------------------------------------------------------------
Use the new hook 'afterSubmit' instead.
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterSubmit'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable
* @param mixed $elementValue submitted value of the element *before post processing*
* @param array $requestArguments submitted raw request values
* @return void
*/
public function onSubmit(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable, $elementValue, array $requestArguments = [])
{
return $elementValue;
}
This hook will be called for each renderable.
The callback 'initializeFormElement' call the 'initializeFormElement' hook.
---------------------------------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['initializeFormElement'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable
* @return void
*/
public function initializeFormElement(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable)
{
}
This enables you to override the 'initializeFormElement' method within your custom implementation class.
If you do not call the parents 'initializeFormElement' then no hook will be thrown.
Furthermore, you can connect to the hook and initialize the generic form elements without defining a
custom implementation to access the 'initializeFormElement' method.
You only need a class which connects to this hook. Then detect the form element you wish to initialize.
This saves you a lot of configuration!
The hook 'beforeRemoveFromParentRenderable' will be called for each renderable.
-------------------------------------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRemoveFromParentRenderable'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable
* @return void
*/
public function beforeRemoveFromParentRenderable(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable)
{
}
The hook 'afterInitializeCurrentPage' will be called after a page is initialized.
---------------------------------------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterInitializeCurrentPage'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime
* @param \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage
* @param null|\TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage
* @param mixed $elementValue submitted value of the element *before post processing*
* @return \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface
*/
public function afterInitializeCurrentPage(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage = null, array $requestArguments = []): CompositeRenderableInterface
{
return $currentPage;
}
The form manager call the 'beforeFormCreate' hook.
--------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormCreate'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param string $formPersistenceIdentifier
* @param array $formDefinition
* @return array
*/
public function beforeFormCreate(string $formPersistenceIdentifier, array $formDefinition): array
{
return $formDefinition;
}
The form manager call the 'beforeFormDuplicate' hook.
-----------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDuplicate'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param string $formPersistenceIdentifier
* @param array $formDefinition
* @return array
*/
public function beforeFormDuplicate(string $formPersistenceIdentifier, array $formDefinition): array
{
return $formDefinition;
}
The form manager call the 'beforeFormDelete' hook.
--------------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDelete'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the signal:
.. code-block:: php
/**
* @param string $formPersistenceIdentifier
* @return void
*/
public function beforeFormDelete(string $formPersistenceIdentifier)
{
}
The form editor call the 'beforeFormSave' hook.
-----------------------------------------------
Connect to the hook:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormSave'][]
= \VENDOR\YourNamespace\YourClass::class;
Use the hook:
.. code-block:: php
/**
* @param string $formPersistenceIdentifier
* @param array $formDefinition
* @return array
*/
public function beforeFormSave(string $formPersistenceIdentifier, array $formDefinition): array
{
return $formDefinition;
}
New form element property: properties.fluidAdditionalAttributes
---------------------------------------------------------------
In order to deal with fluid ViewHelpers 'additionalAttributes' it is necessary to introduce a new configuration
scope "properties.fluidAdditionalAttributes" for each form element.
This configuration property will be used to fill the fluid ViewHelper property "additionalAttributes".
.. index:: Frontend, Backend, PHP-API, Fluid, ext:form
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _important-80391:
==========================================================================
Important: #80391 - Css Styled Content will not reset TypoScript Constants
==========================================================================
See :issue:`80391`
Description
===========
Previously the TypoScript definition from CSS Styled Content reset all
constants that were set before the static template was included to preserve
the namespace :typoscript:`styles.content`.
Since there is no need to reset the constants, this behaviour is removed.
Removed Code
------------
.. code-block:: typoscript
# Clear out any constants in this reserved room!
styles.content >
.. index:: TypoScript, Frontend, ext:css_styled_content
@@ -0,0 +1,17 @@
.. include:: /Includes.rst.txt
.. _important-80444:
====================================================================
Important: #80444 - config.beLoginLinkIPList moved to compatibility7
====================================================================
See :issue:`80444`
Description
===========
The TypoScript option :typoscript:`config.beLoginLinkIPList` which renders a link to login/logout to the TYPO3
Backend when visiting a frontend page from a certain IP address, has been moved to EXT:compatibility7.
.. index:: TypoScript, Frontend
@@ -0,0 +1,18 @@
.. include:: /Includes.rst.txt
.. _important-80450:
======================================================
Important: #80450 - MonitorUtilityMovedToCompatibility
======================================================
See :issue:`80450`
Description
===========
The "peak memory measurement" in the frontend has been moved to extension compatiblity7. The functionality
is semi useful and should live a happy life in an extension for people who may need it, but there is no need
to have that within the core on each frontend call.
.. index:: Backend, Frontend, PHP-API
@@ -0,0 +1,26 @@
.. include:: /Includes.rst.txt
.. _important-80506:
===============================================================
Important: #80506 - Dbal compatible field quoting in TypoScript
===============================================================
See :issue:`80506`
Description
===========
Properties in :typoscript:`TypoScript` dealing with SQL fragments need proper quoting of field names to be
compatible with different database drivers. The database framework of the core now applies proper quoting
to field names if they are wrapped as :typoscript:`{#fieldName}`
It is advised to adapt extensions accordingly to run successfully on databases like PostgreSQL.
Example for a :typoscript:`select.where` TypoScript snippet:
.. code-block:: typoscript
select.where = {#colPos}=0
.. index:: Database, Frontend, TypoScript
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _important-80553:
==============================================================
Important: #80553 - Simplify important actions in Install Tool
==============================================================
See :issue:`80553`
Description
===========
To simplify the Install Tool the following settings have been removed from the section "Important actions":
- Change site name
- Change encryption key
The configuration can be still changed in the section "All configuration"
.. index:: Backend
@@ -0,0 +1,26 @@
.. include:: /Includes.rst.txt
.. _important-80606:
============================================================================
Important: #80606 - Testing Framework Removal / Use composer package instead
============================================================================
See :issue:`80606`
Description
===========
The TYPO3 core base testing classes were moved to a separate composer package and removed
from the TYPO3 core. If you want to continue using the testing framework classes please use
composer and require the package `typo3/testing-framework <packagist>`_.
To make sure you don't run into path issues, you can set the following environment variable:
:php:`TYPO3_PATH_ROOT =` The path to your TYPO3 root directory
Find the new package on github_ and on packagist_.
.. _github: https://github.com/TYPO3/testing-framework
.. _packagist: https://packagist.org/packages/typo3/testing-framework
.. index:: CLI, PHP-API
+52
View File
@@ -0,0 +1,52 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-8-7:
8.7 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-*