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,44 @@
.. include:: /Includes.rst.txt
.. _breaking-24449:
=================================================================
Breaking: #24449 - Use move placeholders as default in workspaces
=================================================================
See :issue:`24449`
Description
===========
The ctrl section of each TCA table has the property "versioningWS" which might be set to "1" (enabled) or to "2"
which enables "move placeholders" functionality.
The "move placeholders" are now active by default, removing the possibility to have a "simple workspace" concept
which does not consider sorting records inside a workspace.
Impact
======
All checks in TYPO3 consider all TCA tables that have workspaces enabled ("versioningWS") to be
move-placeholder-aware. All TCA tables that only have non-moveable-records in workspace now need the DB
table field "t3ver_moveid" to be added.
All existing TCA configurations with "versioningWS" can now simply be set to TRUE instead of "2".
Affected Installations
======================
Any installation with third-party extensions that use workspace functionality but do not have move-placeholder-enabled records.
Migration
=========
Make all TCA tables "move-placeholders" aware by adding the necessary database field "t3ver_moveid".
.. index:: TCA, ext:workspaces
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-45899:
==========================================================================
Breaking: #45899 - Split class ImportExport into classes Import and Export
==========================================================================
See :issue:`45899`
Description
===========
Class TYPO3\CMS\Impexp\ImportExport (typo3/sysext/impexp/Classes/ImportExport.php) is split into a class
dedicated for import and another one for export.
Impact
======
Using and extending the class is not possible any more.
Affected Installations
======================
Those which use the class and its methods directly or extend the class.
Migration
=========
Use or extend one or both of the new classes (TYPO3\CMS\Impexp\Import and TYPO3\CMS\Impexp\Export).
.. index:: PHP-API, ext:impexp
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-51099:
=================================================
Breaking: #51099 - Streamline settings/conditions
=================================================
See :issue:`51099`
Description
===========
The default TypoScript for the `pi2` (extbase) plugin of EXT:indexed_search sets a TypoScript
variable `plugin.tx_indexedsearch.settings.displayRules = 1`, while the default fluid template
uses the TypoScript setting `plugin.tx_indexedsearch.settings.showRules`. This change makes the
default fluid template for the extbase plugin of EXT:indexed_search use the correct TypoScript
setting.
Impact
======
Instances of the extbase plugin (`pi2`) of EXT:indexed_search using the default fluid template and
explicitly configured to *hide* the search rules deliberately using the wrong TypoScript setting
`plugin.tx_indexedsearch.settings.showRules = 0` *will show* the search rules after this update.
Affected Installations
======================
Installations using the extbase plugin (`pi2`) of EXT:indexed_search with default template and relying
on the undocumented TypoScript setting `plugin.tx_indexedsearch.settings.showRules = 0`.
Migration
=========
Change all occurrences of the TypoScript setting `plugin.tx_indexedsearch.settings.showRules = 0`
to `plugin.tx_indexedsearch.settings.displayRules = 1`.
.. index:: TypoScript, ext:indexed_search
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _breaking-62812:
========================================================================
Breaking: #62812 - Resolve URLs to "Link to external URL"-pages directly
========================================================================
See :issue:`62812`
Description
===========
The behaviour of pages with the type "Link to External URL" has changed for menus.
Those pages link now directly to the provided url instead of linking the internal
page with a redirect afterwards.
.. index:: Frontend
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-63406:
=====================================================================
Breaking: #63406 - Respect rootLevel configuration in extbase queries
=====================================================================
See :issue:`63406`
Description
===========
The rootLevel of a table can be configured to 0, 1 or -1 in TCA, to define where records of a table can be found in the system:
* 0: In the page tree only
* 1: Only on the root page (pid 0)
* -1: Both, on the root page and in the page tree
Currently only 0 and 1 are respected by the `Typo3DbQueryParser` when building the pageId statement. This means that a rootLevel of -1
does not get any pageId statement at all and therefore ignores any `storagePid` configuration for extbase plugins.
Impact
======
Custom records that have a configuration like this `$GLOBALS['TCA']['tx_myext_domain_model_record']['ctrl']['rootLevel'] = -1` and
are used in extbase plugins might have trouble finding the records if `plugin.tx_myext.persistence.storagePid` is not configured properly.
Affected Installations
======================
Third party code using `$GLOBALS['TCA']['tx_myext_domain_model_record']['ctrl']['rootLevel'] = -1` with records within the
page tree and without a proper `storagePid` configuration.
Migration
=========
Set `plugin.tx_myext.persistence.storagePid` to the page ids you want to find records from. 0 does not need to be included as
it is added to the statement automatically.
.. index:: TCA, TypoScript, ext:extbase
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-66369:
=========================================================
Breaking: #66369 - Removed ElementBrowser related classes
=========================================================
See :issue:`66369`
Description
===========
The following classes have been removed without replacement
* TYPO3\CMS\Core\ElementBrowser\ElementBrowserHookInterface
* TYPO3\CMS\Recordlist\Browser\ElementBrowser
* TYPO3\CMS\Rtehtmlarea\BrowseLinks
* TYPO3\CMS\Rtehtmlarea\FolderTree
* TYPO3\CMS\Rtehtmlarea\PageTree
Impact
======
Any code still using the aforementioned classes will cause a fatal error.
Affected Installations
======================
Any code still using the aforementioned classes.
Migration
=========
Use the new API for adding element browsers or link handlers.
.. index:: PHP-API, Backend, RTE
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-68081:
==========================================
Breaking: #68081 - Ext:openid moved to TER
==========================================
See :issue:`68081`
Description
===========
The former core extension `openid` has been removed from core code
and is now available as optional extension from the TER.
Impact
======
Login to TYPO3 backend via openid fails until the extension is installed from TER.
Affected Installations
======================
Instances using backend login via openid.
Migration
=========
An upgrade wizard in the install tool can be use to download and install the extension.
.. index:: Backend, ext:openid
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-69227:
============================================================
Breaking: #69227 - Strings for like are not properly escaped
============================================================
See :issue:`69227`
Description
===========
The following constants have been removed:
* `\TYPO3\CMS\IndexedSearch\Controller\SearchFormController::WILDCARD_LEFT`
* `\TYPO3\CMS\IndexedSearch\Controller\SearchFormController::WILDCARD_RIGHT`
* `\TYPO3\CMS\IndexedSearch\Domain\Repository\IndexSearchRepository::WILDCARD_LEFT`
* `\TYPO3\CMS\IndexedSearch\Domain\Repository\IndexSearchRepository::WILDCARD_RIGHT`
Impact
======
The mentioned constants don't exist anymore.
Affected Installations
======================
Third party code using the mentioned constants.
Migration
=========
Use the new constants:
* `\TYPO3\CMS\IndexedSearch\Utility\LikeWildcard::LEFT`
* `\TYPO3\CMS\IndexedSearch\Utility\LikeWildcard::RIGHT`
.. index:: PHP-API, ext:indexed_search
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-69916-1668719172:
========================================================
Breaking: #69916 - Hook ajaxSaveCode of t3editor changed
========================================================
See :issue:`69916`
Description
===========
The `$ajaxObj` parameter has been replaced by PSR-7-compliant `$request` and `$response` objects.
Impact
======
Using the `$ajaxObj` parameter will result in a fatal error.
Affected Installations
======================
All 3rd party extensions using the `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/t3editor/classes/class.tx_t3editor.php']['ajaxSaveCode']`
hook are affected.
Migration
=========
Make use of ServerRequestInterface and ResponseInterface, see :file:`typo3/sysext/t3editor/Classes/Hook/FileEditHook.php` for reference.
.. index:: PHP-API, ext:t3editor
@@ -0,0 +1,166 @@
.. include:: /Includes.rst.txt
.. _breaking-69916-1668719184:
==============================================================
Breaking: #69916 - Registered AJAX handlers replaced by routes
==============================================================
See :issue:`69916`
Description
===========
AJAX handlers registered in the core by `ExtensionManagementUtility::registerAjaxHandler()` have been replaced
by AJAX routes, which are registered inside any extension under Configuration/Backend/AjaxRoutes.php.
The routes registered in AjaxRoutes.php are available via JavaScript via `TYPO3.settings.ajaxUrls[routeIdentifier]`.
Impact
======
Calling removed AJAX identifiers will result in an error. Please see the table below for migration.
Affected Installations
======================
All 3rd party extensions using one of the removed handlers is affected.
Migration
=========
Please see the table to get the new AJAX identifier.
EXT:backend
^^^^^^^^^^^
========================================================== ================================= =======================================
Old identifier New identifier New AJAX ID
========================================================== ================================= =======================================
SC_alt_db_navframe::expandCollapse sc_alt_db_navframe_expandtoggle /ajax/sc-alt-db-navframe/expandtoggle
SC_alt_file_navframe::expandCollapse sc_alt_file_navframe_expandtoggle /ajax/sc-alt-file-navframe/expandtoggle
TYPO3_tcefile::process file_process /ajax/file/process
TYPO3_tcefile::fileExists file_exists /ajax/file/exists
t3lib_TCEforms_inline::createNewRecord record_inline_create /ajax/inline/create
t3lib_TCEforms_inline::getRecordDetails record_inline_details /ajax/inline/record-details
t3lib_TCEforms_inline::synchronizeLocalizeRecords record_inline_synchronizelocalize /ajax/inline/synchronizelocalize
t3lib_TCEforms_inline::setExpandedCollapsedState record_inline_expandcollapse /ajax/inline/expandcollapse
t3lib_TCEforms_suggest::searchRecord record_suggest /ajax/wizard/suggest/search
ShortcutMenu::getShortcutEditForm shortcut_editform /ajax/shortcut/editform
ShortcutMenu::saveShortcut shortcut_saveform /ajax/shortcut/saveform
ShortcutMenu::render shortcut_list /ajax/shortcut/list
ShortcutMenu::delete shortcut_remove /ajax/shortcut/remove
ShortcutMenu::create shortcut_create /ajax/shortcut/create
SystemInformationMenu::load systeminformation_render /ajax/system-information/render
ModuleMenu::reload modulemenu /ajax/module-menu
BackendLogin::login login /ajax/login
BackendLogin::logout logout /ajax/logout
BackendLogin::refreshLogin login_refresh /ajax/login/refresh
BackendLogin::isTimedOut login_timedout /ajax/login/timedout
ExtDirect::getAPI ext_direct_api /ajax/ext-direct/api
ExtDirect::route ext_direct_route /ajax/ext-direct/route
DocumentTemplate::getFlashMessages flashmessages_render /ajax/flashmessages/render
ContextMenu::load contextmenu /ajax/context-menu
DataHandler::process record_process /ajax/record/process
UserSettings::process usersettings_process /ajax/user-settings/process
ImageManipulationWizard::getHtmlForImageManipulationWizard wizard_image_manipulation /ajax/wizard/image-manipulation
LiveSearch livesearch /ajax/livesearch
OnlineMedia::add online_media_create /ajax/online-media/create
========================================================== ================================= =======================================
EXT:beuser
^^^^^^^^^^
================================== ======================= =========================
Old identifier New identifier New AJAX ID
================================== ======================= =========================
PermissionAjaxController::dispatch user_access_permissions /users/access/permissions
================================== ======================= =========================
EXT:context_help
^^^^^^^^^^^^^^^^
=================================== ===================== ======================
Old identifier New identifier New AJAX ID
=================================== ===================== ======================
ContextHelpAjaxController::dispatch context_help /context-help
=================================== ===================== ======================
EXT:opendocs
^^^^^^^^^^^^
=================================== ===================== ======================
Old identifier New identifier New AJAX ID
=================================== ===================== ======================
TxOpendocs::renderMenu opendocs_menu /opendocs/menu
TxOpendocs::closeDocument opendocs_close /opendocs/close
=================================== ===================== ======================
EXT:recycler
^^^^^^^^^^^^
=================================== ===================== ======================
Old identifier New identifier New AJAX ID
=================================== ===================== ======================
RecyclerAjaxController::dispatch recycler /recycler
=================================== ===================== ======================
EXT:rsaauth
^^^^^^^^^^^
=================================== ===================== ======================
Old identifier New identifier New AJAX ID
=================================== ===================== ======================
BackendLogin::getRsaPublicKey rsa_publickey /rsa/publickey
RsaEncryption::getRsaPublicKey rsa_publickey /rsa/publickey
=================================== ===================== ======================
EXT:rtehtmlarea
^^^^^^^^^^^^^^^
=================================== ======================== ======================
Old identifier New identifier New AJAX ID
=================================== ======================== ======================
rtehtmlarea::spellchecker rtehtmlarea_spellchecker /rte/spellchecker
=================================== ======================== ======================
EXT:t3editor
^^^^^^^^^^^^
==================================== ===================================== =======================================
Old identifier New identifier New AJAX ID
==================================== ===================================== =======================================
T3Editor::saveCode t3editor_save /t3editor/save
T3Editor::getPlugins t3editor_get_plugins /t3editor/get-plugins
T3Editor_TSrefLoader::getTypes t3editor_tsref /t3editor/tsref
T3Editor_TSrefLoader::getDescription t3editor_tsref /t3editor/tsref
CodeCompletion::loadTemplates t3editor_codecompletion_loadtemplates /t3editor/codecompletion/load-templates
==================================== ===================================== =======================================
* T3Editor_TSrefLoader::getTypes and T3Editor_TSrefLoader::getDescription have been combined. The separation is done by
the new parameter `fetch` being either "types" or "description".
EXT:taskcenter
^^^^^^^^^^^^^^
=================================== ======================== ======================
Old identifier New identifier New AJAX ID
=================================== ======================== ======================
Taskcenter::saveCollapseState taskcenter_collapse /taskcenter/collapse
Taskcenter::saveSortingState taskcenter_sort /taskcenter/sort
=================================== ======================== ======================
EXT:workspaces
^^^^^^^^^^^^^^
=================================== ======================== ======================
Old identifier New identifier New AJAX ID
=================================== ======================== ======================
Workspaces::setWorkspace workspace_switch /workspaces/switch
=================================== ======================== ======================
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-69916:
=====================================================================
Breaking: #69916 - Removed BackendLogin::getRsaPublicKey AJAX handler
=====================================================================
See :issue:`69916`
Description
===========
The deprecated AJAX handler `BackendLogin::getRsaPublicKey` has been removed in favor of `rsa_publickey`. As
`getRsaPublicKey` was the only method in this class, the file
:file:`typo3/sysext/rsaauth/Classes/Backend/AjaxLoginHandler.php` has been removed without substitution.
Impact
======
Calling the removed handler will result in an error.
Affected Installations
======================
All 3rd party extensions using the removed handler are affected.
Migration
=========
Use the AJAX handler `rsa_publickey` instead of `BackendLogin::getRsaPublicKey`.
.. index:: PHP-API, Backend, ext:rsaauth
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-70033:
=====================================================
Breaking: #70033 - TCA icon options have been removed
=====================================================
See :issue:`70033`
Description
===========
The `TCA` configurations `noIconsBelowSelect`, `foreign_table_loadIcons` and `suppress_icons` for select fields with
the render type `selectSingle` have been removed.
Impact
======
The old TCA settings `noIconsBelowSelect`, `foreign_table_loadIcons` and `suppress_icons` are ignored and
deprecation log entries will be triggered. A migration handles the update of the settings.
Affected Installations
======================
All installations with extensions that configure the icon table visibility of TCA select fields with one of the old settings.
Migration
=========
Extension authors need to use the new option `showIconTable` to define the visibility of the icon table for their select fields.
.. index:: TCA, Backend
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _breaking-70055:
========================================================================
Breaking: #70055 - Override New Content Element Wizard via page TSConfig
========================================================================
See :issue:`70055`
Description
===========
In the past it was possible to override the "New Content Element Wizard" via custom scripts
when using page TSconfig via `mod.web_list.newContentWiz.overrideWithExtension = myextension` to define an extension,
which then needed a file placed under `mod1/db_new_content_el.php`. The script was then called with certain parameters instead
of the wizard.
The new way of handling entry-points and custom scripts is now built via modules and routes. The former option
`mod.web_list.newContentWiz.overrideWithExtension` has been removed and a new option
`mod.newContentElementWizard.override` has been introduced instead. Instead of setting the option to a certain extension key,
a custom module or route has to be specified.
Example:
.. code-block:: typoscript
mod.newContentElementWizard.override = my_custom_module
Impact
======
Using the old TSconfig option `mod.web_list.newContentWiz.overrideWithExtension` has no effect anymore and
will fallback to the regular new content element wizard provided by the TYPO3 Core.
Affected Installations
======================
Any installation using this option with extensions providing custom New Content Element Wizards, e.g. templavoila.
Migration
=========
The extension providing the script must be changed to register a route or module and set the TSconfig option to the route identifier,
instead of a raw PHP script. Any usages in TSconfig need to be adapted to use the new TSconfig option.
.. index:: TSConfig, PHP-API, Backend
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _breaking-70132:
==============================================
Breaking: #70132 - FormEngine custom functions
==============================================
See :issue:`70132`
Description
===========
Due to the refactoring of the backend FormEngine code the "low end" extension API to manipulate data has
changed. Affected are especially the `type=user` `TCA` element, any `userFunc` configured in
`TCA` as well as the `itemsProcFunc` to manipulate single items in select, group and other types.
In general data given to those custom functions has changed and extensions that rely on this data may
fail. For instance, if a `itemsProcFunc` was defined for a field within a flex form, the `row`
array argument contained the full parent database row in the past. This is no longer the case and
the parent database row is now transferred as `flexParentDatabaseRow`. In other cases data previously
handed over to custom functions may no longer be available at all.
Impact
======
Custom functions receive less or different options than before and may stop working.
Affected Installations
======================
Extensions using the `TCA` with `type=user` fields, extensions using `TCA` with `userFunc` and
extensions using `itemsProcFunc`.
Migration
=========
Developers using this API have to debug the data given to custom functions and adapt accordingly.
If the data given is not sufficient it is possible to register own element classes with the
`NodeFactory` or to manipulate data by adding a custom `FormDataProvider`. While the current
API will be mostly stable throughout further TYPO3 CMS 7 LTS patch releases, it may however happen
that the given API and data breaks again with the development of the TYPO3 CMS 8 path to make the
FormEngine code more powerful and reliable in the end.
.. index:: PHP-API, TCA
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-70229:
================================================
Breaking: #70229 - BE-lockSSL = 3 option removed
================================================
See :issue:`70229`
Description
===========
The global option `$TYPO3_CONF_VARS[BE][lockSSL]` allows to lock the backend usage to be worked completely over SSL.
Setting this option to "3" allowed to have only the backend login transmitted via SSL, but the rest forced to work
via plain HTTP. Option "3" has been removed in favor of having a full SSL session for all communication between the
server and the client / browser.
Impact
======
Installations having `lockSSL` set to "3" will now behave just as it would be lockSSL=1.
Affected Installations
======================
Any installation that has `$TYPO3_CONF_VARS[BE][lockSSL]` set to 3, only having SSL for the Backend login page.
Migration
=========
It is recommended to set the `$TYPO3_CONF_VARS[BE][lockSSL]` option to 1 or 2, depending on the environment and the
possibilities of having SSL available.
.. index:: LocalConfiguration, Backend
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _breaking-70444:
====================================================================
Breaking: #70444 - EXT:form - Form attributes are not rendered in FE
====================================================================
See :issue:`70444`
Description
===========
The TypoScript configuration of EXT:form has been streamlined. Useless
attributes for the specific form elements have been removed.
Additionally, missing attributes have been added.
Furthermore, the array notation of `htmlAttributes` and
`htmlAttributesUsedByTheViewHelperDirectly` has changed.
The whole cleanup was done to provide a solid configuration for the LTS
version.
Impact
======
The removed attributes will not be available anymore out of the box for
the specific form element.
Custom TypoScript which copied, referenced or removed certain attribute
configurations will not work anymore.
Affected Installations
======================
Any installation that relies on the structure of `htmlAttributes` and
`htmlAttributesUsedByTheViewHelperDirectly`.
Since the whole configuration has not been documented yet and the
functionality has been introduced with 7.5 the possibility that a lot of
installations customize the configuration is very low.
Migration
=========
Affected installations have to re-add the missing attributes manually
and adopt the new array notation.
.. index:: Frontend, ext:form
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-70503:
====================================================================
Breaking: #70503 - EXT:form - Remove breakOnError option from wizard
====================================================================
See :issue:`70503`
Description
===========
The validation option `breakOnError` is not supported anymore. The option
has been removed completely.
Impact
======
The validation process cannot be interrupted anymore, i.e. the whole form
will be validated and all error messages will be shown.
Affected Installations
======================
Any installation that implements the `breakOnError` functionality.
Migration
=========
The function has been removed without any substitution. Therefore there is
no migration possible. The attribute can be manually removed from the form
configuration. The wizard ignores the existence of `breakOnError`.
Since TYPO3 7.5 it is possible to utilize HTML5 attributes to validate
form elements on the fly. This could be used to emulate the behaviour.
.. index:: ext:form
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-70574:
================================================================
Breaking: #70574 - Form Wizard Save Handling Changed in ext:form
================================================================
See :issue:`70574`
Description
===========
The ExtJS wizard of EXT:form in the backend has been using an old "module" to load and to save the data from the wizard,
but has been misusing this functionality as AJAX responses.
All AJAX requests for the wizard are now built with AJAX Routes and PSR-7-based Request/Response objects.
All obsolete WizardView PHP classes have been removed without substitution:
* \TYPO3\CMS\Form\View\Wizard\AbstractWizardView
* \TYPO3\CMS\Form\View\Wizard\LoadWizardView
* \TYPO3\CMS\Form\View\Wizard\SaveWizardView
Impact
======
Using these now non-existent PHP classes will result in fatal errors or wrong results when calling them directly.
Affected Installations
======================
Any installations with extensions that hook into the wizard views of EXT:form.
Migration
=========
Use the AJAX routes available via `TYPO3.settings.ajaxUrls['formwizard_load']` and `TYPO3.settings.ajaxUrls['formwizard_save']`.
.. index:: PHP-API, ext:form
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-70578:
====================================================================
Breaking: #70578 - JumpURL functionality removed from the TYPO3 Core
====================================================================
See :issue:`70578`
Description
===========
The handling and generation of so-called Jump URLs has been moved into its own extension called "jumpurl"
and is now available in the TYPO3 Extension Repository (TER), and available via composer as the package name
"friendsoftypo3/jumpurl".
Impact
======
If the functionality was used in an installation before (e.g. with Direct Mail or via TypoScript), this functionality is
not working anymore.
Affected Installations
======================
All installations where Jump URLs were used.
Migration
=========
Download and install the extension "jumpurl" from the TER.
.. index:: PHP-API, Frontend, ext:jumpurl
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-71110:
======================================================
Breaking: #71110 - TYPO3-specific Upload Limit removed
======================================================
See :issue:`71110`
Description
===========
TYPO3 has a specific upload limit setting, that is set to 10MB by default, to manually limit down the PHP-specific
setting `max_upload_limit`. If not configured properly the PHP limit was lower than the TYPO3-specific limit.
The TYPO3 setting `$TYPO3_CONF_VARS['BE']['maxFileSize']` has been removed and the PHP-internal limit is now the
upper barrier.
Impact
======
Setting the option mentioned above has no effect anymore. The PHP limit is used instead.
The TCA setting `max_size` for `fe_users.image` has been removed, allowing editors to upload images with a size
up to the PHP-specific limit.
Affected Installations
======================
Extensions that use `$GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize']` as default for the TCA setting `max_size`
need adjustment, if the PHP-specific upload limit is higher than `$TYPO3_CONF_VARS['BE']['maxFileSize']`.
Migration
=========
Explicitly set a value for `max_size` or drop those lines from your TCA configuration.
.. index:: LocalConfiguration
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-72117:
==========================================================
Breaking: #72117 - API change in ExceptionHandlerInterface
==========================================================
See :issue:`72117`
Description
===========
The class \Throwable was added in PHP7 as new parent of \Exceptions. This leads to the issue that
ExceptionHandlers need to change the API of their exception handling method. To support PHP 5.5, 5.6 and 7.0
we need to remove the type hint. It will later be set to \Throwable if we only support PHP 7.0 and newer.
See https://php.net/manual/en/migration70.incompatible.php
Impact
======
A fatal error will be thrown if you use own ExceptionHandlers implementing
TYPO3\CMS\Core\Error\ExceptionHandlerInterface "Fatal error: Declaration of ... must be compatible with ..."
Affected Installations
======================
Installations which use an own ExceptionHandler implementing TYPO3s ExceptionHandlerInterface.
Migration
=========
Remove the type hinting in your implementation of ExceptionHandlerInterface. If you switch to PHP 7 you may
also get instances from \Throwable, so check the API/type hinting of the function were you process the exception.
.. index:: PHP-API
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _breaking-77344:
========================================================================
Breaking: #77344 - EXT:form - Rename configuration for confirmation view
========================================================================
See :issue:`77344`
Description
===========
The typoscript key :typoscript:`configuration` for the confirmation configuration has been renamed.
Up until now the layout settings of the confirmation view could be addressed via :typoscript:`tt_content.mailform.20.confirmation.layout`.
This setting was introduced with patch 28526 but never documented.
Besides this, the confirmation view enable setting can be set via :typoscript:`tt_content.mailform.20.confirmation = 1`.
To keep the meaning of the settings clear, it was decided to rename the configuration of the confirmation view.
Impact
======
Having the confirmation view enabled and the confirmation configuration customized, a naming collision occurs. As a
result, the confirmation step has been disabled.
Since the configuration was never documented, only few people know about this setting.
Affected Installations
======================
All installations enabling the confirmation view and customizing the layout of this view.
Migration
=========
All occurrences of :typoscript:`tt_content.mailform.20.confirmation.layout` have to be migrated to :typoscript:`tt_content.mailform.20.confirmationView.layout`.
.. index:: TypoScript, ext:form
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _deprecation-51482:
==========================================
Deprecation: #51482 - Script-based modules
==========================================
See :issue:`51482`
Description
===========
Pseudo-modules that are registered via `ExtensionManagementUtility::addModulePath()` and
modules that are registered via `ExtensionManagementUtility::addModule()` using the fourth parameter
as a custom script-path have been marked as deprecated.
The method `ExtensionManagementUtility::addModulePath()` itself has been marked as deprecated.
Impact
======
All existing modules which are not registered via Routing will trigger a deprecation entry on registration
of the module and when calling the module directly.
Affected Installations
======================
All third-party extensions registering a wizard, module or route without using routeTarget or Routes.php,
which have been introduced with TYPO3 CMS 7.
Migration
=========
Use Configuration/Backend/Routes.php to register wizards and use
`ExtensionManagementUtility::addModule()` when registering a routePath option in the fifth parameter to
use the proper PSR-7 compatible way of registering and calling modules.
Make sure to use UriBuilder and `BackendUtility::getModuleUrl()` to link to these modules instead of
hard-linking to the script names.
.. index:: PHP-API, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _deprecation-60712:
===========================================================
Deprecation: #60712 - DocumentTemplate->getDynamicTabMenu()
===========================================================
See :issue:`60712`
Description
===========
Methods `TYPO3\CMS\Backend\Template\DocumentTemplate::getDynamicTabMenu()` and
`TYPO3\CMS\Backend\Template\DocumentTemplate::getDynTabMenuId()` have been marked as deprecated.
Affected Installations
======================
Instances with custom backend modules that use these methods.
Migration
=========
Use `TYPO3\CMS\Backend\Utility\ModuleTemplate::getDynamicTabMenu()` instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _deprecation-65728:
======================================================
Deprecation: #65728 - DocumentTemplate->issueCommand()
======================================================
See :issue:`65728`
Description
===========
Method `TYPO3\CMS\Backend\Template\DocumentTemplate::issueCommand()` has been marked as deprecated.
Affected Installations
======================
Instances with custom backend modules that use this method.
Migration
=========
Use `TYPO3\CMS\Backend\Utility\BackendUtility::getLinkToDataHandlerAction()` instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-69369:
===================================================================
Deprecation: #69369 - Use property text instead of data in ext:form
===================================================================
See :issue:`69369`
Description
===========
The FORM elements `TEXTAREA` and `OPTION` currently use "data" as property
name to define default "values" which are used as human readable
"labels" inside the specific tag. Furthermore, the `TEXTBLOCK` element uses
the "content" property to define custom text. All other `FORM` elements
use "value". Since "data" implies the possibility to use computed
values, this patch deprecates "data" and adds a new property
called "text".
Impact
======
Using the property "data" will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using `TEXTAREA`, `OPTION` and `TEXTBLOCK` elements
which use the property "data".
Migration
=========
Remove usage of the "data" property and use "text" instead. Opening a
specific form with the form wizard and storing the form again will also
migrate from "data" to "text".
.. index:: ext:form
@@ -0,0 +1,69 @@
.. include:: /Includes.rst.txt
.. _deprecation-69822:
=============================================================
Deprecation: #69822 - Deprecate TCA settings of select fields
=============================================================
See :issue:`69822`
Description
===========
Using the TCA field type `select` without specifying a valid `renderType` has been marked as deprecated.
Additionally the usage of `renderMode` for select fields has been marked as deprecated.
These `renderType` settings are available:
.. container:: table-row
Key
renderType
Datatype
string
Description
This setting specifies how the select field should be displayed. Available options are:
- `selectSingle` - Normal select field for selecting a single value.
- `selectSingleBox` - Normal select field for selecting multiple values.
- `selectCheckBox` - List of checkboxes for selecting multiple values.
- `selectMultipleSideBySide` - Two select fields, items can be selected from the right
field, selected items are displayed in the left select.
- `selectTree` - A tree for selecting hierarchical data.
Scope
Display
.. note::
If a field has no `renderType` set but `maxitems` is set, the migration will set
`renderType` to `selectSingle` in case of `maxitems` is <= 1 otherwise `renderType`
is set to `selectMultipleSideBySide`
Impact
======
The old TCA settings can still be used. A migration handles the update of the settings.
Affected Installations
======================
All installations with extensions that configure TCA select fields in the old format.
Migration
=========
Extension authors need to add the correct `renderType` setting to their select
field definitions.
.. index:: TCA, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-69877:
=============================================================
Deprecation: #69877 - Use ModuleTemplate API for ext:filelist
=============================================================
See :issue:`69877`
Description
===========
Method `getButtonsAndOtherMarkers` of class `\TYPO3\CMS\Filelist\FileList` has been marked as deprecated.
Impact
======
The method should not be used any longer and will be removed with TYPO3 CMS 8.
Affected Installations
======================
All third party extensions using the mentioned method.
Migration
=========
Use the ModuleTemplate API instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _deprecation-70052:
======================================================
Deprecation: #70052 - TCA Display condition EXT LOADED
======================================================
See :issue:`70052`
Description
===========
In `TCA` the `EXT:anExtension:LOADED` display condition has been marked as deprecated.
Affected Installations
======================
Extensions that use `LOADED` display conditions. Those can be located by
searching for `LOADED` in the backend module `Configuration` `TCA` section,
example match from rtehtmlarea:
.. code-block:: php
'static_lang_isocode' => array(
'displayCond' => 'EXT:static_info_tables:LOADED:true',
'config' => ...
...
),
Migration
=========
Do not use any longer. `TCA` works additive, so the extension that is referenced in
`EXT:LOADED:extensionName` should instead add columns definition instead of the
referring extension defining the `TCA` conditional. In the example above, the
column definition of `static_lang_isocode` was removed from extension `rtehtmlarea`
and moved to extension `static_info_tables`, adding the field in an
`Configuration/TCA/Overrides` file to the affected table. To ensure the load order
of extensions is correct, `static_info_tables` could set a `suggest` dependency
`rtehtmlarea`.
.. index:: TCA, Backend
@@ -0,0 +1,93 @@
.. include:: /Includes.rst.txt
.. _deprecation-70138:
=================================================
Deprecation: #70138 - Flex form language handling
=================================================
See :issue:`70138`
Description
===========
`TCA` flex fields had an own language handling that allowed to store field localization within
the flex data itself and not within the usual database driven overlay records. This was mainly
introduced for `TemplaVoila` and usually only used in this context.
The whole flex form specific language handling has been moved from core extensions to extension
`compatibility6` and will not be delivered with `TYPO3 CMS 7 LTS` anymore.
The following flex XML data structure keys have been marked as deprecated and are supported by `compatiblity6` only:
* `<meta><langDisable>`
* `<meta><langChildren>`
* `<meta><currentLangId>`
The following `PageTSConfig` options have been dropped and are ignored if `compatibility6` is not loaded:
* `TCEFORM.[tableName].[field].[dataStructureKey].langDisable`
* `TCEFORM.[tableName].[field].[dataStructureKey].langChildren`
The following `UserTSConfig` options have been dropped and are ignored if `compatibility6` is not loaded:
* `options.checkPageLanguageOverlay`
The following `LocalConfiguration` value has been marked as deprecated, will be removed by the install tool and
is set by `compatibility6` to `TRUE`:
* `$GLOBALS['TYPO3_CONF_VARS']['BE']['flexFormXMLincludeDiffBase']`
The following method has been marked as deprecated and is cloned by `compatibility6` in an `XCLASS`:
* `TYPO3\CMS\Core\Configaration\FlexForm\FlexFormTools->getAvailableLanguages()`
The following property has been marked as deprecated:
* `TYPO3\CMS\Core\DataHandling\DataHandler->clear_flexFormData_vDEFbase`
Impact
======
If this feature is needed, the `compatibility6` extension must be loaded to keep compatibility
with older versions after upgrading from `TYPO3 CMS 6.2`. If the extension is not loaded,
flex form fields can no longer be localized on flex data level.
Affected Installations
======================
All multi language installations that use flex form with meta field `langDisable` not set to 1
in their data structure definition and that make active use of the flex localization feature.
This is the case if records with flex form fields show flex forms multiple times with different
language flags.
Migration
=========
Load extension `compatibility6` for a compatibility layer in `TYPO3 CMS 7`, or migrate affected
features to use the record based localization feature. The flex field based language handling
will most likely vanish with `TYPO3 CMS 8` altogether. In case the feature is needed for a
longer time the code from `compatibility6` could be used as a kick start for an implementation
within an own extension.
In case `compatibility6` is loaded, some core content elements may start showing flex field
language overlays since the `langDisable` meta definition has been removed from their data
structure XML. This can be suppressed with this `PageTSConfig` snippet:
.. code-block:: typoscript
TCEFORM.tt_content.pi_flexform.table.langDisable = 1
TCEFORM.tt_content.pi_flexform.login.langDisable = 1
TCEFORM.tt_content.pi_flexform.media.langDisable = 1
.. index:: TSConfig, FlexForm
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-70477:
==================================================
Deprecation: #70477 - Deprecate SpriteIcon classes
==================================================
See :issue:`70477`
Description
===========
The following classes have been marked as deprecated.
.. code-block:: php
\TYPO3\CMS\Backend\Sprite\AbstractSpriteHandler
\TYPO3\CMS\Backend\Sprite\SimpleSpriteHandler
\TYPO3\CMS\Backend\Sprite\SpriteBuildingHandler
Impact
======
Any usage of these classes will trigger a deprecation log entry.
Affected Installations
======================
Extensions that use these PHP classes.
Migration
=========
Use the `IconRegistry` to register icons.
.. index:: PHP-API, Backend
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _deprecation-70494:
=============================================================
Deprecation: #70494 - DocumentTemplate->wrapClickMenuOnIcon()
=============================================================
See :issue:`70494`
Description
===========
Method `TYPO3\CMS\Backend\Template\DocumentTemplate::wrapClickMenuOnIcon()` has been marked as deprecated.
Affected Installations
======================
Instances with custom backend modules that use this method.
Migration
=========
Use `TYPO3\CMS\Backend\Utility\BackendUtility::wrapClickMenuOnIcon()` instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-70514:
=====================================================
Deprecation: #70514 - dynamicConfigFile is deprecated
=====================================================
See :issue:`70514`
Description
===========
The `TCA` configuration `dynamicConfigFile` within the `ctrl` section of a table has been marked as
deprecated and must not be used any longer.
Impact
======
Using `dynamicConfigFile` within the `ctrl` section of a table will trigger a deprecation log entry.
Migration
=========
The setting is typically used in `ext_tables.php` files of extensions. The table configuration (`TCA`) must be moved to an own
file in `Configuration/TCA/<table_name>.php`. The `dynamicConfigFile` setting isn't needed anymore since the whole `TCA` array
definition is in this file.
Furthermore, any other `TCA` manipulation of third party tables must be moved to `Configuration/TCA/Overrides` and no `TCA`
setting must remain in `ext_tables.php`. This is highly encouraged since TYPO3 CMS 6.2 already for performance reasons. If
this change is not applied to extensions, extension `compatibility6` must be loaded or further migration may not be applied
to this portion of `TCA` leading to all sorts of possible issues.
.. index:: PHP-API, TCA
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _deprecation-71153:
================================================
Deprecation: #71153 - DocumentTemplate->spacer()
================================================
See :issue:`71153`
Description
===========
Method `TYPO3\CMS\Backend\Template\DocumentTemplate::spacer()` has been marked as deprecated.
Affected Installations
======================
Instances with custom backend modules that use this method.
Migration
=========
Add the needed margin as HTML / CSS.
.. index:: PHP-API, Backend
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _deprecation-71249:
===================================================================
Deprecation: #71249 - Deprecate render method of FlashMessage class
===================================================================
See :issue:`71249`
Description
===========
Method `TYPO3\CMS\Core\Messaging\FlashMessage::render()` has been marked as deprecated.
Affected Installations
======================
Instances with custom backend modules that use this method.
Migration
=========
Use custom render code, the `<f:flashMessage />` ViewHelper or the `ModuleTemplate` for backend modules to render FlashMessages.
It is suggested not to include HTML in flash messages. Flash messages should be short notifications on user interactions.
If you need more elaborate or persistent messages, use `<f:be.infobox />` view helper or HTML similar to that.
.. index:: PHP-API, Backend
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _feature-20875:
==============================================================================
Feature: #20875 - Make hardcoded indexed_search parameters configurable via TS
==============================================================================
See :issue:`20875`
Description
===========
The following TS properties can now be configured for indexed search
.. code-block:: typoscript
[plugin.tx_indexedsearch.results. || plugin.tx_indexedsearch.settings.results.]
titleCropAfter = 50
titleCropSignifier = ...
summaryCropAfter = 180
summaryCropSignifier =
hrefInSummaryCropAfter = 60
hrefInSummaryCropSignifier = ...
markupSW_summaryMax = 300
markupSW_postPreLgd = 60
markupSW_postPreLgd_offset = 5
markupSW_divider = ...
Every TS property has the stdWrap property, too.
Impact
======
Default settings do not change old behaviour.
.. index:: TypoScript, ext:indexed_search
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-23156:
===================================================================================
Feature: #23156 - Indexed search: Make path separator of search result configurable
===================================================================================
See :issue:`23156`
Description
===========
A new TypoScript configuration option :typoscript:`breadcrumbWrap` has been added. It allows to configure
the page path separator used in breadcrumbs in Indexed Search results. This option supports TypoScript
option split syntax.
Impact
======
By default Indexed Search is configured to use "/" as a path separator, so it's backward compatible.
Use following configuration for Indexed Search Extbase plugin:
.. code-block:: typoscript
plugin.tx_indexedsearch.settings.breadcrumbWrap = / || /
For plugin based on AbstractPlugin use:
.. code-block:: typoscript
plugin.tx_indexedsearch.breadcrumbWrap = / || /
.. index:: TypoScript, ext:indexed_search
@@ -0,0 +1,74 @@
.. include:: /Includes.rst.txt
.. _feature-27057:
========================================================
Feature: #27057 - Relations to the same table in Extbase
========================================================
See :issue:`27057`
Description
===========
It is now possible to use a domain model where an object is connected to another object of the same class directly
.. code-block:: php
namespace \Vendor\Extension\Domain\Model;
class A {
/**
* @var \Vendor\Extension\Domain\Model\A
*/
protected $parent;
as well as using a domain model where an object has multiple relations to objects of the same class
.. code-block:: php
namespace \Vendor\Extension\Domain\Model;
class A {
/**
* @var \Vendor\Extension\Domain\Model\B
*/
protected $x;
/**
* @var \Vendor\Extension\Domain\Model\B
*/
protected $y;
as well as indirectly
.. code-block:: php
namespace \Vendor\Extension\Domain\Model;
class A {
/**
* @var \Vendor\Extension\Domain\Model\B
*/
protected $b;
/**
* @var \Vendor\Extension\Domain\Model\C
*/
protected $c;
namespace \Vendor\Extension\Domain\Model;
class B {
/**
* @var \Vendor\Extension\Domain\Model\C
*/
protected $c;
Using this kind of relations before was only possible by overriding the Extbase query builder and doing manual queries because the Extbase query builder created wrong SQL statements. Now Extbase properly supports these cases.
Impact
======
Extbase now correctly handles relations to objects of the same class.
.. index:: PHP-API, ext:extbase
@@ -0,0 +1,79 @@
.. include:: /Includes.rst.txt
.. _feature-35245:
========================================================
Feature: #35245 - Rework workspace notification settings
========================================================
See :issue:`35245`
Description
===========
The current notification settings have some drawbacks and are not easy to
understand if it comes the expected behavior in the workspace module.
The settings are defined in each sys_workspace and sys_workspace_stage
record and are evaluated in the workspace module if sending a particular
element to be reviewed to the previous or next stage.
Currently there are the following notification settings:
* on stages
* "edit stage": takes recipients from "adminusers" field
(workspace owners)
* "ready to publish" stage: takes recipients from "members" field
(workspace members)
* on preselection of recipients
* "all (non-strict)": if users from workspace setting (field "adminusers"
or "members") are also in the specific "default_users" setting for the
stage, the checkbox is enabled by default and cannot be changed,
otherwise it's not checked
* "all (strict)": all users from workspace setting (field "adminusers"
or "members") are checked and cannot be changed
* "some (strict)": all users from workspace setting (field "adminusers"
or "members") are checked, but still can be changed
* behavior
* sending to "edit" stage: members are notified per default
* sending to "ready to publish" stage: owners are notified per default
The changes extends the possibilities to define notification settings:
* on stages
* add settings for "publish-execute" stage (actual publishing process)
* on preselection of recipients
* remove modes
* replace settings for showing the dialog and whether modifying the
preselection is allowed at all (getting rid of the "strict" modes)
* add possibilities to defined notification recipients
* owner & members as defined in the accordant fields
* editors that have been working on a particular element
* responsible persons (on custom stages only)
Impact
======
The meaning and behavior of the workspaces notification settings concerning
preselected recipients and the possibility to modify the selection on moving
an element to a particular change is different now. However, an upgrade wizard
helps to upgrade the settings to the new definitions.
.. index:: Backend, ext:workspaces
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _feature-44127:
=====================================================
Feature: #44127 - Introduced two new Hooks for OpenID
=====================================================
See :issue:`44127`
Description
===========
Two hooks were added to the OpenIdService. They make it possible to modify the request sent to the OpenID Server,
or to modify/create backend users on the fly during OpenID login.
Hooks
=====
The following hooks were introduced:
- `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['openid']['getUserRecord']`
Modifies the userRecord after it has been fetched (or none was found).
Can be used to e.g. create a new record if none was found or update an existing one.
The following parameters are passed to the hook: `record`, `response`, `authInfo`.
- `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['openid']['authRequest']`
Modifies the Authentication Request, before it's sent.
Can be used to e.g. request additional attributes like a nickname from the OpenID Server.
The following parameters are passed to the hook: `authRequest`, `authInfo`.
.. index:: PHP-API, Backend, ext:openid
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-47613:
=========================================================================================================
Feature: #47613 - Indexed Search: make no_cache parameter for forwardSearchWordsInResultLink configurable
=========================================================================================================
See :issue:`47613`
Description
===========
A new TypoScript configuration option `forwardSearchWordsInResultLink.no_cache` has been added.
It controls whether the `no_cache` parameter should be added to page links together with search words.
Use following configuration for Indexed Search Extbase plugin:
.. code-block:: typoscript
plugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1
For plugin based on AbstractPlugin use:
.. code-block:: typoscript
plugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1
Impact
======
The default value is set to 1, so it's backward compatible.
.. index:: TypoScript, ext:indexed_search
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _feature-56633:
========================================================
Feature: #56633 - Form protection API for frontend usage
========================================================
See :issue:`56633`
Description
===========
As of now frontend plugins needed to implement CSRF protection on their own. This change introduces a new
class to allow usage of the FormProtection (CSRF protection) API in the frontend.
Usage is the same as in backend context:
.. code-block:: php
$formToken = \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()
->getFormProtection()->generateToken('news', 'edit', $uid);
if ($dataHasBeenSubmitted
&& \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->validateToken(
\TYPO3\CMS\Core\Utility\GeneralUtility::_POST('formToken'),
'news',
'edit',
$uid
)
) {
// Processes the data.
} else {
// Create a flash message for the invalid token or just discard this request.
}
Impact
======
FormProtection API can now also be used in frontend context.
.. index:: PHP-API, Frontend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _feature-64286:
=============================================================================
Feature: #64286 - Added absolute url option to uri.image and image viewHelper
=============================================================================
See :issue:`64286`
Description
===========
The ImageViewhelper and Uri/ImageViewHelper got a new option `absolute`. With this option you are able to force
the ViewHelpers to output an absolute url.
Examples:
---------
.. code-block:: html
<code title="ImageViewHelper">
<f:image image="{file}" width="400" height="375" absolute="1" />
</code>
<output>
<img alt="alt set in image record" src="http://www.mydomain.com/fileadmin/_processed_/323223424.png" width="400" height="375" />
</output>
<code title="Uri/ImageViewHelper">
<f:uri.image image="{file}" width="400" height="375" absolute="1" />
</code>
<output>
http://www.mydomain.com/fileadmin/_processed_/323223424.png
</output>
.. index:: Fluid
@@ -0,0 +1,114 @@
.. include:: /Includes.rst.txt
.. _feature-66369-1668719172:
========================================
Feature: #66369 - Added LinkBrowser APIs
========================================
See :issue:`66369`
Description
===========
This new feature allows to extend the link browser with new tabs, which allow to implement custom link functionality
in a generic way in a so called LinkHandler.
Since the LinkBrowser is used by FormEngine and RTE, the new API ensures that your custom LinkHandler works with those
two, and possible future, usages flawlessly.
Each tab rendered in the link browser has an associated link handler, responsible for rendering the tab and for creating
and editing of links belonging to this tab.
Tab registration
----------------
Link browser tabs are registered in page TSconfig like this:
.. code-block:: typoscript
TCEMAIN.linkHandler.<tabIdentifier> {
handler = TYPO3\CMS\Recordlist\LinkHandler\FileLinkHandler
label = LLL:EXT:lang/locallang_browse_links.xlf:file
displayAfter = page
scanAfter = page
configuration {
customConfig = passed to the handler
}
}
The options `displayBefore` and `displayAfter` define the order how the various tabs are displayed in the link browser.
The options `scanBefore` and `scanAfter` define the order in which handlers are queried when determining the responsible
tab for an existing link.
Most likely your links will start with a specific prefix to identify them. Therefore you should register your tab at least before
the 'url' handler, so your handler can advertise itself as responsible for the given link.
The 'url' handler should be treated as last resort as it will work with any link.
Handler implementation
----------------------
A link handler has to implement the `\TYPO3\CMS\Recordlist\LinkHandler\LinkHandlerInterface` interface, which defines
all necessary methods for communication with the link browser.
Additionally, each link handler should also provide a Javascript module (requireJS), which takes care of passing a link
to the link browser.
A minimal implementation of such a module looks like this:
.. code-block:: javascript
define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser) {
var myModule = {};
myModule.createMyLink = function() {
var val = $('.myElmeent').val();
// optional: If your link points to some external resource you should set this attribute
LinkBrowser.setAdditionalLinkAttribute('data-htmlarea-external', '1');
LinkBrowser.finalizeFunction('mylink:' + val);
};
myModule.initialize = function() {
// todo add necessary event handlers, which will probably call myModule.createMyLink
};
$(myModule.initialize);
return myModule;
}
Notice the call to `LinkBrowser.finalizeFunction`, which is the point where the link is handed over to the link browser
for further processing and storage.
Hooks
-----
You may have the need to modify the list of available link handlers based on some dynamic value.
For this purpose you can register hooks.
The registration of a link browser hook generally happens in your `ext_tables.php` and looks like:
.. code-block:: php
if (TYPO3_MODE === 'BE') {
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['LinkBrowser']['hooks'][1444048118] = [
'handler' => \Vendor\Ext\MyClass::class,
'before' => [], // optional
'after' => [] // optional
];
}
The `before` and `after` elements allow to control the execution order of all registered hooks.
Currently the following list of hooks is implemented:
- modifyLinkHandlers(linkHandlers, currentLinkParts): May modify the list of available link handlers and has to return the final list.
- modifyAllowedItems(allowedTabs, currentLinkParts): May modify the list of available tabs and has to return the final list.
.. index:: PHP-API, Backend, TSConfig, JavaScript
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-66369:
===============================================
Feature: #66369 - Added new element browser API
===============================================
See :issue:`66369`
Description
===========
The former code monster class `ElementBrowser` has been split into dedicated parts of functionality.
Specifically the functionality of selecting elements for the FormEngine and the code parts for creating
links, used in FormEngine and RTE, have been moved into separate APIs.
Each type of element, which can be selected in FormEngine, has its own element browser class.
You may add your own special type by registering your own element browser in your `ext_tables.php` as follows:
.. code-block:: php
if (TYPO3_MODE === 'BE') {
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ElementBrowsers'][<identifier>] = \Vendor\Ext\TheClass::class;
}
The registered class is expected to implement the `\TYPO3\CMS\Recordlist\Browser\ElementBrowserInterface` interface.
.. index:: PHP-API, Backend
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _feature-68771:
======================================================================================================
Feature: #68771 - Add contentObject functionality to form MailPostProcessor and introduce replyToEmail
======================================================================================================
See :issue:`68771`
Description
===========
If the form configuration is defined by TypoScript the following items for the MailPostProcessor
in ext:form have contentObject functionality now:
- subject
- senderEmail
- senderName
- recipientEmail
- ccEmail
- replyToEmail (newly introduced, replyToEmailField as fallback)
- priority
- organization
This feature is not available when building the form with the help of
the wizard. The functionality can only be used be setting up the form
via TypoScript.
Usage
=====
In the mail postProcessor configuration you could do something like this
(depending on the names of the form elements):
.. code-block:: typoscript
replyToEmail = TEXT
replyToEmail {
data = GP:tx_form_form|tx_form|e-mail
htmlSpecialChars = 1
}
subject = TEXT
subject {
data = GP:tx_form_form|tx_form|subject
htmlSpecialChars = 1
noTrimWrap = |Mail from Form: ||
}
.. index:: TypoScript, ext:form
@@ -0,0 +1,77 @@
.. include:: /Includes.rst.txt
.. _feature-68895:
======================================================================================
Feature: #68895 - Introduced hook in BackendUserAuthentication::getDefaultUploadFolder
======================================================================================
See :issue:`68895`
Description
===========
It is now possible to change the upload folder returned by `BackendUserAuthentication::getDefaultUploadFolder()` by
registering a hook. This makes it possible to set a different upload folder for fields with direct upload enabled in the
backend.
Register own getDefaultUploadFolder hook
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To use your own hook to manipulate the upload folder you need to register the function in `ext_localconf.php` of
your extension.
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['getDefaultUploadFolder'][] =
\Vendor\MyExtension\Hooks\DefaultUploadFolder::class . '->getDefaultUploadFolder';
Example getDefaultUploadFolder hook
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: php
<?php
namespace Vendor\MyExtension\Hooks;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Resource\Folder;
/**
* Class DefaultUploadFolder
*/
class DefaultUploadFolder {
/**
* Get default upload folder
*
* If there is a folder present with the same name as the last part of the table name use that folder.
*
* @param array $params
* @param BackendUserAuthentication $backendUserAuthentication
* @return Folder
*/
public function getDefaultUploadFolder($params, BackendUserAuthentication $backendUserAuthentication) {
/** @var Folder $uploadFolder */
$uploadFolder = $params['uploadFolder'];
$pid = $params['pid'];
$table = $params['table'];
$field = $params['field'];
$matches = [];
if (!empty($uploadFolder) && preg_match('/_([a-z]+)$/', $table, $matches)) {
$folderName = $matches[1];
if ($uploadFolder->hasFolder($folderName)) {
$uploadFolder = $uploadFolder->getSubfolder($folderName);
}
}
return $uploadFolder;
}
}
.. index:: PHP-API, Backend
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _feature-69120:
==========================================================
Feature: #69120 - Add basic file search in element browser
==========================================================
See :issue:`69120`
Description
===========
A file search has been added to the TYPO3 Element Browser.
The search happens recursively from the currently selected folder in the folder tree.
This way it is possible to search whole mount points or just single folders with a lot of files.
.. index:: Backend
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _feature-69706:
==================================================================
Feature: #69706 - Add support for alternative (inline) icon markup
==================================================================
See :issue:`69706`
Description
===========
It is now possible to set alternative markups for an `Icon`.
By default icon is rendered as `<img src="..."/>` tag with path to the icon file in the src
attribute. With this change it's possible to render svg icon inline in the html e.g.
`<svg>...</svg>`.
Placing SVG images inline allows to manipulate them using CSS or JS.
.. code-block:: php
$icon->setAlternativeMarkup(SvgIconProvider::MARKUP_IDENTIFIER_INLINE, '<svg>...</svg>');
Impact
======
An IconProvider can now add multiple markup variants for an icon.
.. index:: PHP-API, Backend
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _feature-69764:
=============================================================
Feature: #69764 - Introduced file icon detection by mime-type
=============================================================
See :issue:`69764`
Description
===========
The IconRegistry has been extended with a mapping of file icons by mime-type.
It is possible to register full mime-types `main-type/sub-type` but also a
fallback for only the main part of the mime-type `main-type/*`.
The core provides these fallbacks for `audio/*`, `video/*`, `image/*` and `text/*`.
Impact
======
It is now possible to register or overwrite the iconIdentifier for a file mime-type.
.. code-block:: php
$iconRegistry = GeneralUtility::makeInstance(IconRegistry::class);
$iconRegistry->registerMimeTypeIcon('video/my-custom-type', 'icon-identifier-for-my-custom-type');
.. index:: PHP-API, Backend
@@ -0,0 +1,152 @@
.. include:: /Includes.rst.txt
.. _feature-69814:
====================================
Feature: #69814 - ModuleTemplate API
====================================
See :issue:`69814`
Challenge
=========
Currently all DocHeaders are implemented on their own.
This means we have about 80 DocHeaders which are equal but not the same.
The main challenge is to provide extension developers with all tools they need to build decent backend modules while maintaining control of the docHeader itself.
Solution
========
We will provide a replacement for DocumentTemplate which provides an easy-to-use API which is on the other hand flexible enough to tackle all tasks we currently think of.
At the same time we will remove the amount of duplicate marker based templates.
The API uses the Fluent-API approach and has been built to supply maximum IDE code completion support.
Parts of a docHeader Currently a typical docHeader is split up into the following sections:
* Top Bar
* Context Sensitive Help Icon
* Select Menu(s)
* Path
* RecordInformation incl. Clickmenu
* Bottom Bar
* Left Button Bar
* Right Button Bar
API Components
==============
Buttons
-------
**InputButton**
Used to generate a <button> element.
**LinkButton**
Used to generate links
**SplitButton**
A mixed component accepting multiple button objects and renders them into a condensed form.
**FullyRenderedButton**
Displays arbitrary HTML code and we highly recommend to use these.
Menus
-----
Creating menus is pretty simple.
Ask the `DocHeaderComponent` for the `MenuRegistry` and ask the `MenuRegistry` to create a `Menu` for you.
The `Menu` in return can create `MenuItems` for you.
A `Menu` can have several **Types** which are represented by their respective Fluid Partials in EXT:backend/Resources/Private/Partials/Menu/.
Examples of usages
==================
**Adding a button**
.. code-block:: php
$openInNewWindowButton = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar()
->makeLinkButton()
->setHref('#')
->setTitle($this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:labels.openInNewWindow', TRUE))
->setIcon($this->iconFactory->getIcon('actions-window-open', Icon::SIZE_SMALL))
->setOnClick($aOnClick);
$this->moduleTemplate->getDocHeaderComponent()->getButtonBar()
->addButton($openInNewWindowButton, ButtonBar::BUTTON_POSITION_RIGHT);
**Adding a menu with menu items**
.. code-block:: php
$languageMenu = $this->moduleTemplate->getDocHeaderComponent()->getModuleMenuRegistry()->makeMenu()
->setIdentifier('_langSelector')
->setLabel($this->getLanguageService()->sL('LLL:EXT:lang/locallang_general.xlf:LGL.language', TRUE));
$menuItem = $languageMenu->makeMenuItem()
->setTitle($lang['title'] . $newTranslation)
->setHref($href);
if((int)$lang['uid'] === $currentLanguage) {
$menuItem->setActive(TRUE);
}
$languageMenu->addMenuItem($menuItem);
$this->moduleTemplate->getDocHeaderComponent()->getModuleMenuRegistry()->addMenu($languageMenu);
ButtonBar Hook
==============
The old module rendering knew a `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['docHeaderButtonsHook']` hook
to manipulate buttons. A similar hook is available in ModuleTemplate API as `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Backend\Template\Components\ButtonBar']['getButtonsHook']`.
**Registering your own hook**
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Backend\Template\Components\ButtonBar']['getButtonsHook']['MyExt'] =
\MyVendor\MyExt\Hooks\ButtonBarHook::class . '->getButtons';
**Example usage of the hook**
.. code-block:: php
class ButtonBarHook {
/**
* Get buttons
*
* @param array $params
* @param ButtonBar $buttonBar
* @return array
*/
public function getButtons(array $params, ButtonBar $buttonBar) {
$buttons = $params['buttons'];
$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
$button = $buttonBar->makeLinkButton();
$button->setIcon($iconFactory->getIcon('my-custom-icon', Icon::SIZE_SMALL));
$button->setTitle('My custom docHeader button');
$button->setOnClick('alert("Hook works");return false;');
$buttons[ButtonBar::BUTTON_POSITION_LEFT][1][] = $button;
return $buttons;
}
}
.. index:: PHP-API, Backend
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _feature-69916:
===============================================================
Feature: #69916 - PSR-7-based Routing for Backend AJAX Requests
===============================================================
See :issue:`69916`
Description
===========
Support for PSR-7-based Routing for Backend AJAX requests has been added.
Impact
======
To add a route for an AJAX request, create the :file:`Configuration/Backend/AjaxRoutes.php` of your extension:
.. code-block:: php
return [
// Does something
'unique_route_name' => [
'path' => '/toolcollection/some-action',
'target' => \ACME\Controller\SomeController::class . '::myAction',
]
];
The unique_route_name (route identifier) parameter acts as the previously known key to
call `BackendUtility::getAjaxUrl()` passed as parameter to the action refers to the route path,
**not** to the route identifier itself. AJAX handlers configured in :file:`AjaxRoutes.php` are **not** compatible
with definitions in :file:`ext_localconf.php` registered by `ExtensionManagementUtility::registerAjaxHandler()`
due to different method signatures in the target actions, using PSR-7.
The route identifier is used in `BackendUtility::getAjaxUrl()` as `$ajaxIdentifier` and as key in the global
`TYPO3.settings.ajaxUrls` JavaScript object.
.. index:: PHP-API, Backend
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-70033:
=============================================================================
Feature: #70033 - Introduced TCA option showIconTable for selectSingle fields
=============================================================================
See :issue:`70033`
Description
===========
A new option `showIconTable` has been introduced for select fields with render type `selectSingle` to enforce or prevent the
icon table underneath the field. By default the icon table is not shown.
Example
-------
.. code-block:: php
// Enforce icon table showing flags
$GLOBALS['TCA']['tt_content']['columns']['sys_language_uid']['config']['showIconTable'] = true;
.. index:: TCA, Backend
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-70126:
====================================================================================
Feature: #70126 - Introduce TCA option to add autocomplete attribute to input fields
====================================================================================
See :issue:`70126`
Description
===========
It is now possible to enforce or disable the auto completion for input fields in edit mode.
The option is called `autocomplete` and can be set to TRUE or FALSE in the config section of a field.
Example
-------
.. code-block:: php
// Prevent auto completion of username field for be_users records
$GLOBALS['TCA']['be_users']['columns']['username']['config']['autocomplete'] = FALSE;
.. index:: TCA, Backend
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _feature-70170:
==================================================================
Feature: #70170 - ViewHelper to strip whitespace between HTML tags
==================================================================
See :issue:`70170`
Description
===========
Removes redundant spaces between HTML tags while preserving the whitespace that may be inside HTML tags. Trims the final result before output.
Heavily inspired by Twig's corresponding node type.
.. code-block:: html
<code title="Usage of f:spaceless">
<f:spaceless>
<div>
<div>
<div>text
text</div>
</div>
</div>
</f:spaceless>
</code>
<output>
<div><div><div>text
text</div></div></div>
</output>
.. index:: Fluid
@@ -0,0 +1,230 @@
.. include:: /Includes.rst.txt
.. _feature-70332:
=======================================================================
Feature: #70332 - EXT:form - Add HTML4 / HTML5 attributes to the wizard
=======================================================================
See :issue:`70332`
Description
===========
The form wizard should support a wide set of attributes.
At the moment the wizard is able to set some attributes, but this
attribute-set is not complete and does not include HTML5 attributes.
The patch extends the wizard to set all universal HTML and HTML5
attributes based on selfhtml documentation version 8.1.2.
Currently supported attributes
------------------------------
`accept, acceptcharset, accesskey, action, alt, checked, class, cols,
dir, disabled, enctype, id, label, lang, maxlength, method, multiple,
name, placeholder, readonly, rows, selected, size, src, style, tabindex,
title, type, value`
New attributes
--------------
`autocomplete, autofocus, contenteditable, contextmenu, draggable,
dropzone, height, hidden, inputmode, list, max, min, minlength,
novalidate, pattern, required, selectionDirection, selectionEnd,
selectionStart, spellcheck, step, translate, width, wrap`
The **type attribute** will be extended with the following HTML5 types:
`color, date, datetime, datetime-local, email, month, number, range,
search, tel, time, url, week`
Each element is now able to set the HTML universal attributes and
element specific attributes.
Universal attributes are:
`accesskey, class, contenteditable, contextmenu, dir, draggable,
dropzone, hidden, id, lang, spellcheck, style, tabindex, title,
translate`
FORM
----
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accept, accept-charset, action, class, dir, enctype, id, lang, method,
style, title`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `accept, accept-charset, action, autocomplete,
enctype, method, novalidate`
BUTTON
------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, style, tabindex,
title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, disabled, name, type, value`
SELECT
------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`class, disabled, id, lang, multiple, name, size, style, tabindex,
title`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, disabled, multiple, name,
required, size`
TEXTAREA
--------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, class, cols, dir, disabled, id, lang, name, placeholder,
readonly, rows, style, tabindex, title`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, cols, disabled, inputmode,
maxlength, minlength, name, placeholder, readonly, required, rows,
selectionDirection, selectionEnd, selectionStart, wrap`
SUBMIT
------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, style, tabindex,
title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, disabled, name, type, value`
RADIO
-----
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, style, tabindex,
title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, checked, disabled, name, readonly,
required, type, value`
PASSWORD
--------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, maxlength, name,
placeholder, readonly, size, style, tabindex, title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autocomplete, autofocus, disabled, maxlength,
minlength, name, pattern, placeholder, readonly, required, size, type,
value`
HIDDEN
------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`class, id, lang, name, style, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `name, type, value`
FILEUPLOAD
----------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, size, style,
tabindex, title, type`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `accept, autofocus, disabled, multiple name,
readonly, required, type, value`
RESET
-----
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, style, tabindex,
title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, disabled, name, type, value`
TEXTLINE
--------
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, maxlength, name,
placeholder, readonly, size, style, tabindex, title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autocomplete, autofocus, disabled, inputmode,
list, maxlength, minlength, name, pattern, placeholder, readonly,
required, size, type, value`
CHECKBOX
Currently supported attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`accesskey, alt, class, dir, disabled, id, lang, name, style,
tabindex, title, type, value`
New attributes
^^^^^^^^^^^^^^
Universal attributes + `autofocus, checked, disabled, name, readonly,
required, type, value`
.. index:: Frontend, ext:form
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _feature-70531:
====================================================
Feature: #70531 - RequireJS module for split buttons
====================================================
See :issue:`70531`
Description
===========
A RequireJS module for split buttons has been added. The module can be used in another RequireJS modules to
add callbacks being executed before the submit takes place. As the callback receives the click event,
the submit can be modified, e.g aborting the submit.
Impact
======
To use the `SplitButtons` module, include it in your own RequireJS module:
.. code-block:: javascript
define('Vendor/Ext/Module', ['TYPO3/CMS/Backend/SplitButtons'], function(SplitButtons) {
// Your code...
});
Callbacks will be added by calling `SplitButtons.addPreSubmitCallback`:
.. code-block:: javascript
SplitButtons.addPreSubmitCallback(function(e) {
// Code being executed as callback before submit
});
.. index:: JavaScript, Backend
@@ -0,0 +1,63 @@
.. include:: /Includes.rst.txt
.. _feature-70583:
===================================================
Feature: #70583 - Introduced Icon API in JavaScript
===================================================
See :issue:`70583`
Description
===========
A JavaScript-based icon API based on the PHP API has been introduced. The methods `getIcon()`
and `getIcons()` can be called in a RequireJS module.
When imported in a RequireJS module, a developer can fetch icons via JavaScript with the same parameters as in PHP.
The methods `getIcon()` and `getIcons()` return `Promise` objects.
Importing
=========
.. code-block:: javascript
define(['jquery', 'TYPO3/CMS/Backend/Icons'], function($, Icons) {
});
Get icons
=========
A single icon can be fetched by `getIcon()` which takes four parameters:
.. container:: table-row
identifier
The icon identifier.
size
The size of the icon. Please use the properties of the `Icons.sizes` object.
overlayIdentifier
An overlay identifier rendered on the icon.
state
The state of the icon. Please use the properties of the `Icons.states` object.
To use the fetched icons, chain the `done()` method to the promise.
Examples
--------
.. code-block:: javascript
// Get a single icon
Icons.getIcon('spinner-circle-light', Icons.sizes.small).done(function(spinner) {
$toolbarItemIcon.replaceWith(spinner);
});
.. index:: Backend, JavaScript
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-71196:
================================================
Feature: #71196 - Disallow localization mixtures
================================================
See :issue:`71196`
Description
===========
The PageLayout UI will now inform users if a mixture of translated content and standalone content is used in
the page module since this is a major source of confusion for both administrators and editors.
In case an integrator knows what he/she is doing, we introduce a `PageTSConfig` setting to turn these warnings off to
allow further usage of inconsistent translation handling.
`mod.web_layout.allowInconsistentLanguageHandling = 1`
Impact
======
Upon setting `mod.web_layout.allowInconsistentLanguageHandling` to `1` the page module will behave
as before and allow inconsistent mixups of languages in a certain language.
.. index:: TSConfig, Backend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _feature-71251:
================================================================
Feature: #71251 - Add FlashMessage support in ModuleTemplate API
================================================================
See :issue:`71251`
Description
===========
Flash messages have different queues, depending on in which context they are
enqueued. The FlashMessageService defaults the queue to `core.template.flashMessages`,
Extbase defaults the queue to `extbase.flashmessages .$randomPluginQueue`.
Support for flash messages in ModuleTemplate has been added to enqueue flash messages automatically
in the correct queue identifier.
Impact
======
Flash messages can be enqueued by the following code:
.. code-block:: php
$this->moduleTemplate->addFlashMessage('I am a message body', 'Title', \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, true);
.. index:: PHP-API, Backend
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _feature-72505:
=============================================================
Feature: #72505 - Introduce hook to override a record overlay
=============================================================
See :issue:`72505`
Description
===========
Prior to TYPO3 7 LTS, it was possible to override a record overlay in Web > List.
This patch introduces a new hook with the old functionality.
The hook is called with the following signature:
.. code-block:: php
/**
* @param string $table
* @param array $row
* @param array $status
* @param string $iconName
* @return string the new (or given) $iconName
*/
function postOverlayPriorityLookup($table, array $row, array $status, $iconName)
Register the hook
-----------------
Register the hook class which implements the method with the name `postOverlayPriorityLookup`:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][IconFactory::class]['overrideIconOverlay'][] = \VENDOR\MyExt\Hooks\IconFactoryHook::class;
.. index:: PHP-API, Backend
@@ -0,0 +1,19 @@
.. include:: /Includes.rst.txt
.. _important-36166:
=============================================================================
Important: #36166 - Move access right parameters from BE to SYS configuration
=============================================================================
See :issue:`36166`
Description
===========
The access permission parameters (fileCreateMask, folderCreateMask, createGroup) have been moved from
`$GLOBALS['TYPO3_CONF_VARS']['BE']` to `$GLOBALS['TYPO3_CONF_VARS']['SYS']`.
An Upgrade Wizard ensures the correct migrations of the settings.
.. index:: LocalConfiguration
@@ -0,0 +1,19 @@
.. include:: /Includes.rst.txt
.. _important-53681:
===================================================================================================
Important: #53681 - Change wording for User Settings "Reset Configuration and Clear Temporary Data"
===================================================================================================
See :issue:`53681`
Description
===========
To simplify the user settings form, the button "Clear Temporary Data" has been removed.
The button to reset the configuration and clear the temporary data has been renamed to
"Reset user settings to default state".
.. index:: Backend
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _important-68079:
====================================================
Important: #68079 - Extension "mediace" moved to TER
====================================================
See :issue:`68079`
Description
===========
The previously available "mediace" extension has been moved to the TYPO3 Extension Repository
(TER) and will be managed on GitHub (https://github.com/FriendsOfTYPO3/mediace).
An upgrade wizard in the Install Tool will check if the extension is needed. If so, it is downloaded
from the TER and installed if necessary.
.. index:: Backend, Frontend
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _important-70956:
=================================================================================================
Important: #70956 - Behavior of Page TSconfig options keepItems, addItems and removeItems changed
=================================================================================================
See :issue:`70956`
Description
===========
The behavior of Page TSconfig options `keepItems`, `addItems` and `removeItems`
has been restored to state of TYPO3 CMS 6.2-7.4 and the execution order of these
options has been formalized.
The first option to be evaluated is `keepItems`, followed in turn by `addItems`
and `removeItems`. All three options are evaluated after items have been added to
the configuration by sources like folders or foreign tables.
.. index:: TSConfig, Backend
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _important-71126:
===============================================================================
Important: #71126 - Allow to define multiple inlineLocalizeSynchronize commands
===============================================================================
See :issue:`71126`
Description
===========
The inlineLocalizeSynchronize command in DataHandler currently supports these formats:
* [parent][13][inlineLocalizeSynchronize] = field,14
* [parent][13][inlineLocalizeSynchronize] = field,localize
* [parent][13][inlineLocalizeSynchronize] = field,synchronize
The current string configuration format is changed to be an array, legacy configurations are converted to the new format::
[parent][13][inlineLocalizeSynchronize] = [
field: name of the parent field,
language: id of the target language,
action: either "localize" or "synchronize",
ids: array of child-ids to be localized [1, 2, 3]
]
Either "action" or "ids" must be defined.
.. index:: PHP-API, Backend
@@ -0,0 +1,18 @@
.. include:: /Includes.rst.txt
.. _important-72697:
============================================================
Important: #72697 - Remove thumbnail functionality of impexp
============================================================
See :issue:`72697`
Description
===========
Previously it was possible to add additional thumbnails to exports of the EXT:impexp.
This functionality is completely outdated and not needed anymore.
.. index:: Backend, ext:impexp
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _important-73565:
==================================================================================
Important: #73565 - AbstractConditionViewHelper no longer automatically compilable
==================================================================================
See :issue:`73565`
Description
===========
CompilableInterface is removed from the abstract AbstractConditionViewHelper and
is now implemented by each of the condition ViewHelpers. The base class still provides
every method it did before but third-party ViewHelpers must now indicate that they are
compilable by implementing the required interface.
The change is related to a previous change which made `evaluateCondition` the API
to evaluate the input argument conditions in any condition ViewHelper. The change
is done as a preventative measure, preventing issues when third-party condition
ViewHelpers were compiled but did not implement the `evaluateCondition` method.
Now, such ViewHelpers will prevent compiling entirely until the author of the class
has implemented CompilableInterface and the `evaluateCondition` method.
Making such third-party ViewHelpers no longer compilable (and thus decreasing performance
when they are used) is chosen in favor of preserving the current behavior where such
ViewHelpers would be completely unable to correctly evaluate the condition at all.
.. index:: PHP-API, Fluid
+52
View File
@@ -0,0 +1,52 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-7-6:
7.6 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-*