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,32 @@
.. include:: /Includes.rst.txt
.. _breaking-24186:
========================================================================================================================
Breaking: #24186 - HTMLparser - fixAttrib.['class'].list does not assign first element, when attribute value not in list
========================================================================================================================
See :issue:`24186`
Description
===========
The HTMLparser now assigns the first class of `fixAttrib.class.list` when none of the given class name values
are found in the configured list. Until now the class attribute of the rendered HTML tag was just empty in that case.
Impact
======
A HTML element that had no class before could now have been assigned a class.
Migration
=========
Add a class from the configured list to the HTML element or add a class at the first position of `fixAttrib.class.list`.
.. index:: TypoScript, RTE
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-30863:
==========================================================================
Breaking: #30863 - Streamlined parameters for adding inline language files
==========================================================================
See :issue:`30863`
Description
===========
The method `addInlineLanguageLabelFile` of the `PageRenderer` handles the optional parameter `$stripFromSelectionName`, a string
that should be removed from any label key in the given file. This did not work until now, so the label keys were never stripped. As this
functionality is now working it could end up with different label keys in the output.
Impact
======
Inline Javascript label keys could have changed.
Affected Installations
======================
Any third party code using `PageRenderer->addInlineLanguageLabelFile()` with the parameter `$stripFromSelectionName` set to anything but
an empty string.
Migration
=========
Change the call to `PageRenderer->addInlineLanguageLabelFile()` with `$stripFromSelectionName = ''` or adjust your Javascript to handle
the now correctly rendered label keys.
.. index:: PHP-API, Backend, Frontend
@@ -0,0 +1,119 @@
.. include:: /Includes.rst.txt
.. _breaking-52156:
=======================================================
Breaking: #52156 - Replaced JumpURL features with hooks
=======================================================
See :issue:`52156`
Description
===========
JumpURL handling
^^^^^^^^^^^^^^^^
The generation and handling of JumpURLs has been removed from the frontend extension and
has been moved to a new core extension called "jumpurl".
URL handler hooks
^^^^^^^^^^^^^^^^^
New hooks were introduced in :code:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer`
and :code:`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController` that allow
custom URL generation and handling.
This is how you can register a hook for manipulating URLs during link generation:
.. code-block:: php
// Place this in your ext_localconf.php file
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['urlProcessing']['urlHandlers']['myext_myidentifier']['handler'] =
\Company\MyExt\MyUrlHandler::class;
// The class needs to implement the UrlHandlerInterface:
class MyUrlHandler implements \TYPO3\CMS\Frontend\Http\UrlHandlerInterface {}
This is how you can handle URLs in a custom way:
.. code-block:: php
// Place this in your ext_localconf.php file
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['urlProcessing']['urlProcessors']['myext_myidentifier']['processor']
= \Company\MyExt\MyUrlProcessor::class;
// The class needs to implement the UrlProcessorInterface:
class MyUrlProcessor implements \TYPO3\CMS\Frontend\Http\UrlProcessorInterface {}
External URL page handling
^^^^^^^^^^^^^^^^^^^^^^^^^^
The core functionality for redirecting the user to an external URL when he hits a page with doktype "external"
is moved from the :code:`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController` to the
:code:`\TYPO3\CMS\Frontend\Page\ExternalPageUrlHandler` class.
ResourceStorage adjustment
^^^^^^^^^^^^^^^^^^^^^^^^^^
The method :code:`\TYPO3\CMS\Core\Resource\ResourceStorage::dumpFileContents()` accepts an additional
parameter for overriding the mime type that is sent in the `Content-Type` header when delivering a file.
Impact
======
Unless the jumpurl extension is installed, no JumpURL related feature will work anymore.
If an extension tightly integrates into the JumpURL process it might break, because some of the related
methods have been removed, disabled or changed.
These methods have been removed and their functionality has been moved to the new jumpurl extension:
:code:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::locDataJU()`
:code:`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::locDataCheck()`
The :code:`$initP` parameter of the method :code:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::getMailTo()` has been removed.
The method :code:`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::setExternalJumpUrl()` has been marked as deprecated
and is an alias for the new :code:`initializeRedirectUrlHandlers()` method that does no jumpurl handling any more. The
new method only checks if the current page is a link to an external URL and sets the :code:`redirectUrl` property.
The method :code:`\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::jumpUrl()` has also been marked as deprecated
and is an alias for the new :code:`redirectToExternalUrl()` method. The jumpurl handling has been removed from
this method. It loops over all registered URL handlers and handles the redirection to the :code:`redirectUrl`.
Affected installations
======================
All CMS 7.4 installations that use the JumpURL features or that use Extensions that rely on these features
or one of the removed methods.
Migration
=========
If you want to use the JumpURL features you need to install the jumpurl extension. Your configuration should
work as before.
Please note that the configuration of the :ref:`filelink <t3tsref:typolink-resource_references>` TypoScript function has changed.
Passing the :code:`jumpurl` parameter in the configuration has been marked as deprecated and will be removed in future versions.
You can now pass arbitrary configuration options for the typolink call that is used to generate
the file link in the :code:`typolinkConfiguration` parameter:
.. code-block:: typoscript
lib.myfilelink = TEXT
lib.myfilelink.value = fileadmin/myfile.txt
lib.myfilelink.filelink {
typolinkConfiguration.jumpurl = 1
typolinkConfiguration.jumpurl.secure = 1
}
.. index:: PHP-API, ext:jumpurl, TypoScript, Frontend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-63000:
===================================================
Breaking: #63000 - Migrate EXT:cshmanual to Extbase
===================================================
See :issue:`63000`
Description
===========
The extension "cshmanual" has been migrated to a newer code base by using Extbase and Fluid.
Impact
======
Any call to the previous public methods of the old controller HelpModuleController will fail as the code base changed.
Affected installations
======================
Any installation using an extension which calls the previously available methods directly.
Migration
=========
Use the Extbase controller or Repository class.
.. index:: PHP-API, ext:cshmanual, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-65317:
==============================================================================
Breaking: #65317 - TypoScriptParser sortList sanitizes input on numerical sort
==============================================================================
See :issue:`65317`
Description
===========
When calling the `:= sortList()` with a "numeric" modifier of the TypoScript parser with a string, the `sort()` method
differs between PHP versions. In order to make this behavior more strict, a check is done before the elements are
sorted to only have numeric values in the list, otherwise an Exception is thrown.
Impact
======
An exception is thrown if non-numerical values are given for a numeric sort in TypoScripts `sortList`.
Affected Installations
======================
All installations using `sortList` numeric with non-numerical values.
Migration
=========
Either remove the non-numerical values from the list or change the sort order to be non-numerical (ascending / descending).
.. index:: TypoScript, Frontend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-66190:
====================================================
Breaking: #66190 - Remove flash and chart from ExtJS
====================================================
See :issue:`66190`
Description
===========
The flash and chart module is removed from ExtJS. In order to reduce ExtJS components this is a first step.
Impact
======
Extensions which use the flash and chart module from ExtJS will not work anymore.
Affected Installations
======================
Installations that use flash or chart module of ExtJS.
Migration
=========
Don't use cores ExtJS anymore, as we migrate away from it. Use other JS frameworks which implement such functionality for you.
.. index:: JavaScript, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-67098:
====================================================================
Breaking: #67098 - Correct required-parameter in TextfieldViewHelper
====================================================================
See :issue:`67098`
Description
===========
The value comparison of the required parameter has been corrected. Prior to this
change, a textfield was required as soon as it had a parameter "required" set to
any value even if this value was set to FALSE, the textfield was still required.
Impact
======
Textfields with required="FALSE" are not required any longer.
Affected Installations
======================
Every installation that uses the textfield view helper with the required attribute.
Migration
=========
No migration is necessary.
.. index:: Fluid
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-68354:
==============================================================================
Breaking: #68354 - Uniform extension directory structure of EXT:indexed_search
==============================================================================
See :issue:`68354`
Description
===========
The directory structure of the extension "Indexed Search" has been streamlined.
Impact
======
All language files are now located in directory Resources/Private/Language, the template files in Resources/Private/Templates.
Icons from pi/res directory have been moved to Resources/Public/Icons, images to Resources/Public/Images.
Affected Installations
======================
Installations that use EXT:indexed_search that depend on paths that have been moved.
Migration
=========
Make sure your configuration matches with new directory structure.
.. index:: ext:indexed_search
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-68401:
================================================
Breaking: #68401 - SqlParser moved into EXT:dbal
================================================
See :issue:`68401`
Description
===========
The SQL Parser included with the core has not been in use by anything
except EXT:dbal for some time. The SQL parser has been merged with the
version in EXT:dbal which now provides parsing and compiling of SQL
statements for MySQL as well as other DBMS.
Impact
======
There is no impact for the core as EXT:dbal was the sole user of the SQL
parser and it has been migrated into EXT:dbal.
As the parsing and the compiling of SQL statements has been separated into
multiple classes the non-public interface of `SqlParser` has changed.
Classes extending SqlParser need to be adjusted to the new interface.
Affected Installations
======================
Installations with 3rd party extensions that use `\TYPO3\CMS\Core\Database\SqlParser`.
Migration
=========
Update the code to use `\TYPO3\CMS\Dbal\Database\SqlParser` instead of
`\TYPO3\CMS\Core\Database\SqlParser` or install EXT:compatibility6 which
maps the old class names to the new ones in EXT:dbal.
.. index:: PHP-API, Database, ext:dbal
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-68562:
===============================================================================
Breaking: #68562 - Bool values need to be cast to integer for MySQL strict mode
===============================================================================
See :issue:`68562`
Description
===========
MySQL strict mode doesn't accept '' as a valid value to store in an integer
column if the MySQL server is running in strict mode.
mysqli_real_escape() casts boolean values to string using '1' (for `TRUE`)
and '' (for `FALSE`). Due to this special handling is required for boolean
values to result in '0' and '1' for FALSE/TRUE.
Impact
======
All TYPO3 CMS installations using MySQL as DBMS.
Affected Installations
======================
Installations where 3rd party extension are relying on `FALSE` being cast to ''
when they are storing boolean values in character type columns. In this case new
values will get stored as '0'
Migration
=========
Adjust the code to either store boolean values in integer type columns or
manually cast the boolean value to string before storing it in the database.
.. index:: PHP-API, Database
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-68571:
===========================================================
Breaking: #68571 - Removed method ElementBrowser->getMsgBox
===========================================================
See :issue:`68571`
Description
===========
The removed method `getMsgBox` in `ElementBrowser` used table based styling.
The method has been removed since we have better means to display this kind of messages: FlashMessages or Callouts.
Impact
======
A fatal error will be thrown if the method `getMsgBox` is used.
Affected Installations
======================
Third party code using the removed method.
Migration
=========
Remove the call to the method and replace the message with a FlashMessage.
.. index:: PHP-API, Backend
@@ -0,0 +1,68 @@
.. include:: /Includes.rst.txt
.. _breaking-68812:
=====================================================================
Breaking: #68812 - Old Backend Entrypoints moved to deprecation layer
=====================================================================
See :issue:`68812`
Description
===========
The backend entry points within the typo3/ directory which have been marked as deprecated in favor of using typo3/index.php
directly as Entry Point via Request Handling, have been moved to a deprecation.php file.
The following files have therefore been removed from the typo3/ directory directly:
.. code-block:: shell
typo3/ajax.php
typo3/alt_clickmenu.php
typo3/alt_db_navframe.php
typo3/alt_doc.php
typo3/alt_file_navframe.php
typo3/browser.php
typo3/db_new.php
typo3/dummy.php
typo3/init.php
typo3/login_frameset.php
typo3/logout.php
typo3/mod.php
typo3/move_el.php
typo3/show_item.php
typo3/tce_db.php
typo3/tce_file.php
typo3/thumbs.php
The typo3/install/ entrypoint is now also redirected with a rewrite rule.
Impact
======
All references / links to these entry points directly without using the proper API calls will result
in a 404 error.
If an Apache webserver is used with the enabled mod_rewrite module, a .htaccess file placed inside typo3/ will
rewrite the URLs to the deprecated.php and throw a deprecation warning.
For Nginx and IIS an alternative for the rewrite rules in the shipped typo3/.htaccess within needs to be added.
Affected Installations
======================
Installations with third-party extensions that link directly to these files.
Migration
=========
Move all existing code in extensions that link to the deprecated entry points to use methods
like `BackendUtility::getModuleUrl()` and `BackendUtility::getAjaxUrl()` or the UriBuilder class.
.. index:: PHP-API
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _breaking-68814:
========================================================
Breaking: #68814 - Remove of base constant TYPO3_URL_ORG
========================================================
See :issue:`68814`
Description
===========
Base constant TYPO3_URL_ORG defined in SystemEnvironmentBuilder::defineBaseConstants() has been removed.
It was for internal usage only and defined at 2 places in the core.
Impact
======
Constant TYPO3_URL_ORG no longer exists.
Migration
=========
Use TYPO3_URL_GENERAL instead.
.. index:: PHP-API
@@ -0,0 +1,54 @@
.. include:: /Includes.rst.txt
.. _breaking-69028:
===========================================================
Breaking: #69028 - TCA type select - Drop neg_foreign_table
===========================================================
See :issue:`69028`
Description
===========
The following `TCA` keys for `type` `select` have been dropped and are no longer handled by the core:
* neg_foreign_table
* neg_foreign_table_where
* neg_foreign_table_prefix
* neg_foreign_table_loadIcons
* neg_foreign_table_imposeValueField
These setting were used in `select` for comma separated value relations in addition to `foreign_table`
to allow a second connected table. Relations for `neg_foreign_table` were stored as negative uids in the
field to distinguish them from relations to the table defined in `foreign_table`.
The functionality has been dropped without substitution and is no longer handled by the TYPO3 core.
Impact
======
Existing relations to the table defined in `neg_foreign_table` will be discarded when a record
with such a `TCA` configuration is saved to the database. The display of existing connected
records may be misleading.
Affected Installations
======================
This old school feature was never documented well and used by a very small amount of extensions.
Searching an instance for the keyword `neg_foreign_table` will reveal usages.
Migration
=========
In case records from multiple different tables must still be supported, the `TCA` configuration
should be adapted to use a `MM` intermediate table. For existing migrations a database migration
is required.
.. index:: TCA, Backend
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-69057:
==========================================================================
Breaking: #69057 - Deprecate IconUtility and move methods into IconFactory
==========================================================================
See :issue:`69057`
Description
===========
While refactoring the `IconUtility` to the new `IconFactory` class, several methods have been marked as deprecated.
In some cases parameters of the old `IconUtility` methods are not used anymore.
The following list describes the possible breaking changes.
The second parameter `$options` of method `IconUtility::getSpriteIconForFile()` is not used anymore.
The third parameter `$options` of method `IconUtility::getSpriteIconForRecord()` is not used anymore.
The `IconUtility` signals `buildSpriteIconClasses` and `buildSpriteHtmlIconTag` have been dropped and will not be emitted anymore.
The `IconUtility` hook `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_iconworks.php']['overrideIconOverlay']` has been dropped and will not be called anymore.
Impact
======
Extensions could break if the methods, signals or hooks above are used.
Affected Installations
======================
Extensions that call the methods with the `$options` parameter or make use of the signals and hook.
Migration
=========
Make use of the new `IconFactory` class.
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-69083:
=========================================================
Breaking: #69083 - Renamed identifier for filelist module
=========================================================
See :issue:`69083`
Description
===========
The filelist module has been rewritten to use Extbase. Therefore the module identifier has been changed
from `file_list` to `file_FilelistList`.
Impact
======
All links pointing to the filelist module using the old identifier will break.
Affected Installations
======================
All installations that reference the filelist module by its old name.
Migration
=========
There is a upgrade wizard to change the backend user settings of users whose start module is the filelist module.
All other links to the module have to be changed manually to use `file_FilelistList` as module identifier.
.. index:: FAL, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-69148:
=====================================================
Breaking: #69148 - Backend Module Dispatching removed
=====================================================
See :issue:`69148`
Description
===========
Dispatching Backend modules through custom dispatchers have been removed. The corresponding Extbase functionality
called "ModuleRunner" and its Interface have been removed as well.
Impact
======
Any dispatcher registered via `$TBE_MODULES['_dispatcher']` is not evaluated anymore.
Affected Installations
======================
All TYPO3 Instances with an extension that registers a custom backend module dispatcher.
Migration
=========
Use a custom RequestHandler.
.. index:: PHP-API, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-69161:
======================================================================
Breaking: #69161 - Removed includeCsh setting from ContainerViewHelper
======================================================================
See :issue:`69161`
Description
===========
Include CSH setting in `<f:be.container>` is not needed anymore and has therefore been removed.
The JavaScript will be loaded automatically when ext:cshmanual is enabled.
Impact
======
Using `<f:be.container>` view helpers in a custom Backend module, setting the includeCsh property, will result in a fatal error.
Affected Installations
======================
Extensions that use `<f:be.container>` which set the setting `includeCsh`
Migration
=========
Remove the property from the template. When ext:cshmanual is enabled the JavaScript is loaded automatically.
.. index:: Fluid, Backend
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _breaking-69168:
====================================================================
Breaking: #69168 - Removed non-tabbed view of Content Element Wizard
====================================================================
See :issue:`69168`
Description
===========
The "New Content Element Wizard" view to show possible content elements to create now only shows the elements in a tabbed view.
The non-tabbed view variant has been removed without substitution.
The TSconfig option `mod.wizards.newContentElement.renderMode` has been removed.
Migration
=========
Remove the TSconfig option `mod.wizards.newContentElement.renderMode` from any configuration settings.
.. index:: TSConfig, Backend
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _breaking-69224:
=========================================================================================
Breaking: #69224 - Fix wrong usage of enumerations in InformationStatus::mapStatusToInt()
=========================================================================================
See :issue:`69224`
Description
===========
The `InformationStatus` enumeration provides a `mapStatusToInt()` method.
* The method expects a string but should expect an enum of itself.
* The method logic is not what is expected from an enumeration method as it does not do any logic comparison.
Therefore it has been replaced by `isGreaterThan()` as this was the logic that has been checked
everywhere `mapStatusToInt()` has been used.
Impact
======
The method `InformationStatus::mapStatusToInt()` has been replaced by `InformationStatus::isGreaterThan()` and all
usages have been replaced by the new method / logic.
As the `InformationStatus` Enum has been introduced in 7.4 it should not be used by any public API and
therefore the change should not have much impact.
.. index:: PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-69276:
=============================================================
Breaking: #69276 - ElementBrowserController::$browser removed
=============================================================
See :issue:`69276`
Description
===========
The `$browser` member variable of `\TYPO3\CMS\Recordlist\Controller\ElementBrowserController` has been removed.
Impact
======
Any third party code accessing `$GLOBAL['SOBE']->browser` will break.
Affected Installations
======================
Installations using third party code, which accesses `$GLOBAL['SOBE']->browser`.
Migration
=========
If the code is extending one of the ElementBrowser tree classes, the protected member variable `$elementBrowser` can
be used to access the underlying ElementBrowser instance.
If your code is using the ElementBrowser tree classes, an instance of `ElementBrowser` has to be injected using the setter.
.. index:: PHP-API, Backend
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-69291:
===============================================================
Breaking: #69291 - Changed registration of backend module icons
===============================================================
See :issue:`69291`
Description
===========
The sprite icon support for backend modules introduced with CMS 7.3 has been adjusted again. The configuration has been streamlined.
Impact
======
The specified icon will not be recognized.
Affected Installations
======================
Any installation running TYPO3 CMS 7.3+ having third party extensions which use sprite icons for backend modules.
Migration
=========
Change the configuration from
.. code-block:: php
'configuration' => array(
'icon' => 'module-web',
),
to
.. code-block:: php
'iconIdentifier' => 'module-web',
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-69315:
===================================================
Breaking: #69315 - ElementBrowser::main_* protected
===================================================
See :issue:`69315`
Description
===========
The `ElementBrowser::main_*` methods have been marked protected as the new `render` method is the main entry point to the class.
Additionally the public member `ElementBrowserController::mode` has been protected as well.
The `ElementBrowserController::content` member and the `ElementBrowserController::printContent()` method have been removed.
Impact
======
Any code calling the protected or removed methods or using the protected member will fail with a fatal error.
Any code using the removed member will receive only an empty value. (PHP fallback for non-existing class members)
Affected Installations
======================
Any installation using third party code calling the mentioned methods or member.
Migration
=========
Ensure the intended mode is passed in via the `mode` GET-parameter and call the new `ElementBrowser::render` method.
.. index:: PHP-API, Backend
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-69401:
=========================================================================
Breaking: #69401 - Adopt ext:form to support the Extbase/ Fluid MVC stack
=========================================================================
See :issue:`69401`
Description
===========
The `postProcessor` interface and the mail postProcessor have changed.
Validators and filters have been moved to other folders and both class
names and algorithms have changed.
Impact
======
Own postProcessors, validators and filters will possibly fail with an error.
Affected Installations
======================
Installations with own postProcessors, validators and filters.
Migration
=========
Adopt own postProcessors, validators and filters to comply with the current implementation.
.. index:: PHP-API, Frontend, Backend, Fluid, ext:extbase, ext:form
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _breaking-69561:
=======================================================================
Breaking: #69561 - Replace sprite icons with IconFactory in ContextMenu
=======================================================================
See :issue:`69561`
Description
===========
SpriteIcon and standalone image support have been replaced with `IconFactory` in
the context menu. All menu icons now need to be registered through the `IconRegistry`.
Impact
======
The `UserTsConfig` options for items `icon` and `spriteIcon` have no effect anymore,
and will deliver a blank placeholder image if `iconName` is not set.
Affected Installations
======================
All installations that add or modify items in the ContextMenu.
Migration
=========
Register the icon through the `IconRegistry` and set the `iconName` in the
item configuration.
.. code-block:: php
// Register Icon
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon(
'contextmenu-example',
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
array(
'source' => 'EXT:example/Resources/Public/Icons/contextmenu-example.svg'
))
);
.. code-block:: typoscript
options.contextMenu.table {
virtual_root.items {
9999 = ITEM
9999 {
name = contextmenuExample
label = LLL:EXT:example/Resources/Private/Language/locallang.xlf:contextmenu-example
iconName = contextmenu-example
callbackAction = exampleCallback
}
}
}
.. index:: PHP-API, TSConfig, Backend
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _breaking-69568:
=============================================
Breaking: #69568 - FormEngine related classes
=============================================
See :issue:`69568`
Description
===========
The following classes have been removed:
* `\TYPO3\CMS\Backend\Form\DataPreprocessor`
* `\TYPO3\CMS\Backend\Form\FormEngine`
* `\TYPO3\CMS\Backend\Form\FlexFormsHelper`
The following hook has been removed:
* `$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass']`
Impact
======
Code trying to instantiate these classes will fatal.
Affected Installations
======================
A rather low number of extensions should be affected by this change. Searching for the
above class names should reveal them.
Migration
=========
The methods and classes have been moved to different classes and solutions.
Extensions needs adaption.
The hook `getMainFieldsClass` has been substituted with a much more fine grained and flexible API.
Use `FormDataProvider` to change data given to the render engine of FormEngine from now on.
.. index:: PHP-API, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-69699:
=============================================
Breaking: #69699 - TCA ctrl typeicons removed
=============================================
See :issue:`69699`
Description
===========
The `TCA['ctrl']['typeicons']` key has been removed.
Impact
======
If still used, a fallback default icon may be displayed instead.
Affected Installations
======================
Searching for `typeicons` keyword should reveal extensions using this functionality.
Migration
=========
Until further works on the icon API have been finished, `TCA['ctrl']['typeicon_classes']`
should be used as documented in the TCA reference.
.. index:: TCA, Backend
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-69795:
==================================================
Breaking: #69795 - Unused DTM Tabmenu code removed
==================================================
See :issue:`69795`
Description
===========
All DynTabMenu JavaScript and CSS code which was previously used to render Tab
Menus in the TYPO3 Backend has been removed without substitution.
Impact
======
All logic that requires EXT:backend/Resources/Public/JavaScript/tabmenu.js
directly and/or use the JavaScript code of `DTM_activate()` or `DTM_toggle()`
directly have been removed.
Affected Installations
======================
TYPO3 Installations with custom extensions that use the logic mentioned above.
Migration
=========
Use ModuleTemplate::getDynamicTabMenu() directly to use the Bootstrap-based API
shipped with the TYPO3 Core.
.. index:: PHP-API, JavaScript, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-69904:
=====================================================================
Breaking: #69904 - Remove Setting diff_path from DefaultConfiguration
=====================================================================
See :issue:`69904`
Description
===========
Creating a diff view of text has been replaced with a PHP library instead of using `diff` on the command line.
Thus we no longer need to be able to configure the path.
Impact
======
The setting `[BE][diff_path]` will no longer have any effect.
Affected Installations
======================
Any Installation that had to define a path different than `diff`
Migration
=========
Delete the line from LocalConfiguration.php if the UpgradeWizard should fail to do so.
.. index:: LocalConfiguration, Backend
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-69930:
=================================================
Breaking: #69930 - Remove option "serverTimeZone"
=================================================
See :issue:`69930`
Description
===========
The option `$TYPO3_CONF_VARS['SYS']['serverTimeZone']` which was introduced when
there was no clean way to fetch the timezone option in the PHP4 environment, has
been removed. It was solved in PHP 5.1.0 which introduced `date_default_timezone_get()`
which is used by the TYPO3 Core by default.
Impact
======
Accessing the option will result in a PHP notice, as it has been removed in TYPO3 CMS 7.
Extensions making use of this option will result in an unexpected behaviour as
possible calculations are wrong.
Affected Installations
======================
Any TYPO3 installation which uses a third-party extensions that uses this option.
Migration
=========
Use native timezone support by PHP directly. See `date_default_timezone_get()`
for more information.
.. index:: PHP-API, LocalConfiguration
@@ -0,0 +1,65 @@
.. include:: /Includes.rst.txt
.. _deprecation-55419:
============================================================
Deprecation: #55419 - Streamline file conflict mode handling
============================================================
See :issue:`55419`
Description
===========
Conflicts in file names and folder names when uploading new files or creating new folders are now handled
uniformly with constants within the core. Therefore a new enumeration has been introduced to provide the available
values: `\TYPO3\CMS\Core\Resource\DuplicationBehavior`.
Provided constants are:
* `DuplicationBehavior::CANCEL`
* `DuplicationBehavior::REPLACE`
* `DuplicationBehavior::RENAME`
Before this change there were two sets of strings used to define the behavior upon conflicts.
* Set1: `cancel`, `replace` and `changeName`
* Set2: `cancel`, `overrideExistingFile` and `renameNewFile`
As they are redundant they are now represented by a new set of constants:
* `CANCEL`, `REPLACE` and `RENAME`
All usages of strings of the former sets have been replaced with their counterparts from the new set. In the enumeration
the former values have been mapped to the new values and marked for deprecation.
Impact
======
Using `changeName`, `overrideExistingFile` or `renameNewFile` for file conflict handling will result in a deprecation log entry.
Affected Installations
======================
All third party code that calls one of the listed methods with `$conflictMode` either set to `changeName`, `overrideExistingFile` or `renameNewFile`.
Migration
=========
Use the provided enumeration `\TYPO3\CMS\Core\Resource\DuplicationBehavior` instead.
Example
=======
.. code-block:: php
$resourceStorage->copyFile($file, $targetFolder, 'target-file-name', DuplicationBehavior::RENAME);
.. index:: FAL, PHP-API, Backend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-66588:
==================================================================================================
Deprecation: #66588 - POST Data in selectviewhelper should have higher priority than "value" value
==================================================================================================
See :issue:`66588`
Description
===========
Submitted form data has precedence over value arguments.
This adjusts the behavior of all Form ViewHelpers so that any
submitted value is redisplayed even if a "value" argument has been
specified.
The issue with this, however, was that upon re-display of the form due
to property-mapping or validation errors the value argument had
precedence over the previously submitted value.
Impact
======
This is a breaking change if you expect the previous behavior of form
ViewHelpers always being pre-populated with the specified value
attribute / bound object property even when re-displaying the form upon
validation errors.
Besides this the change marks `AbstractFormFieldViewHelper::getValue()` as
deprecated. If you call that method in your custom ViewHelpers you should use
`AbstractFormFieldViewHelper::getValueAttribute()` instead and call
`AbstractFormFieldViewHelper::addAdditionalIdentityPropertiesIfNeeded()`
explicitly if the ViewHelper might be bound to (sub)entities.
The default usage of getValueAttribute() did not respect the submitted form data,
because not every viewhelper needs this feature. But you can enable the usage of
the form data by setting `AbstractFormFieldViewHelper::respectSubmittedDataValue` to TRUE.
.. index:: Fluid, PHP-API
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-68128:
==========================================================
Deprecation: #68128 - GeneralUtility slash-related methods
==========================================================
See :issue:`68128`
Description
===========
The following methods within `GeneralUtility` used to add or remove slashes
have been marked as deprecated.
.. code-block:: php
GeneralUtility::addSlashesOnArray()
GeneralUtility::stripSlashesOnArray()
GeneralUtility::slashArray()
Impact
======
Any usage of these methods will trigger a deprecation log entry.
Affected Installations
======================
Extensions that call these PHP methods directly.
Migration
=========
Remove usage of these methods from custom extensions.
.. index:: PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-68760:
====================================================
Deprecation: #68760 - Deprecate class ModuleSettings
====================================================
See :issue:`68760`
Description
===========
In older TYPO3 versions `t3lib_modSettings` (as ModuleSettings class was called before) was used to save the current
settings of backend modules. This kind of settings is nowadays stored in backend users uc array.
For that reason ModuleSettings is now marked for removal in TYPO3 CMS 8.
Impact
======
Using `ModuleSettings` will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation with custom extensions using this class and its methods.
Migration
=========
Remove usage of this class from custom extensions.
.. index:: PHP-API, Backend
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _deprecation-68804:
=======================================================
Deprecation: #68804 - CLI-related constants and methods
=======================================================
See :issue:`68804`
Description
===========
Logic regarding regular CLI-based scripts with the CLIkey option has been moved
into the CliRequestHandler.
Therefore, the following method has been marked as deprecated:
.. code-block:: php
BackendUserAuthentication->checkCLIuser()
Additionally, the following constants and global parameters have been marked for deprecation in CLI context.
.. code-block:: php
const TYPO3_cliKey
const TYPO3_cliInclude
$GLOBALS['MCONF']['name']
$GLOBALS['temp_cliScriptPath']
$GLOBALS['temp_cliKey']
The method, constants and variables will be removed in TYPO3 CMS 8.
Impact
======
Calling `BackendUserAuthentication->checkCLIuser()` directly will now trigger a deprecation log entry.
Affected Installations
======================
Installations with custom entry points in a CLI environment that make use of the method, constants or variables above.
Migration
=========
Use the native `$_SERVER['argv']` or the given `Input` object directly in your code to detect the
current CLI-relevant data.
.. index:: PHP-API, CLI
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _deprecation-68860:
============================================================
Deprecation: #68860 - Deprecate SelectImage.initEventHandler
============================================================
See :issue:`68860`
Description
===========
Removes the calls of `SelectImage.initEventHandler` method.
This was limited to WebKit UserAgents and the provided implementation of
`require` was wrong, so that the EventListener was not registered at all.
Nevertheless the functionality of drag and drop is not broken without the
initEventHandler.
Impact
======
Throws console log with deprecation message.
Affected Installations
======================
All installations calling `SelectImage.initEventHandler`.
Migration
=========
Remove the call of `SelectImage.initEventHandler`.
.. index:: JavaScript, Backend
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _deprecation-69028:
=====================================================
Deprecation: #69028 - RelationHandler convertPosNeg()
=====================================================
See :issue:`69028`
Description
===========
Method `convertPosNeg()` of class `TYPO3\CMS\Core\Database\RelationHandler` has been marked as deprecated.
Impact
======
The method should not be used any longer and will be removed with TYPO3 CMS 8.
Affected Installations
======================
The method is rather internal and relatively unlikely to be used by third party modules.
Searching for the string `convertPosNeg` may reveal possible usages.
Migration
=========
The method was used together with the dropped `neg_foreign_table` setting for `TCA` `select`
fields. If this functionality is still needed, the method could be copied over to the third party
application that uses it.
.. index:: PHP-API, Backend
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _deprecation-69057:
=============================================================================
Deprecation: #69057 - Deprecate IconUtility and move methods into IconFactory
=============================================================================
See :issue:`69057`
Description
===========
The `IconUtility` class will be removed with TYPO3 CMS 8. All public methods of this class have been marked as deprecated:
* `IconUtility::skinImg()`
* `IconUtility::getIcon()`
* `IconUtility::getSpriteIcon()`
* `IconUtility::getSpriteIconForFile()`
* `IconUtility::getSpriteIconForRecord()`
* `IconUtility::getSpriteIconForResource()`
* `IconUtility::getSpriteIconClasses()`
The PageTSConfig setting `mod.wizards.newContentElement.wizardItems.*.elements.*.icon` also has been marked as deprecated.
The `IconUtilityOverrideResourceIconHookInterface` interface will be removed with TYPO3 CMS 8.
Impact
======
Any usage of these methods will trigger a deprecation log entry.
Affected Installations
======================
Extensions that call these PHP methods directly.
Extensions that register own content elements with an icon for the new content element wizard.
Migration
=========
Use the new `IconFactory` class instead of `IconUtility`.
For content element wizard register your icon in `IconRegistry::registerIcon()` and use the new setting:
`mod.wizards.newContentElement.wizardItems.*.elements.*.iconIdentifier`
.. index:: TSConfig, PHP-API, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _deprecation-69078:
================================================
Deprecation: #69078 - TemplateService::$tempPath
================================================
See :issue:`69078`
Description
===========
The `\TYPO3\CMS\Core\TypoScript\TemplateService::$tempPath` member variable is not used anymore inside the core,
therefore it has been marked as deprecated and will be removed with CMS 8.
Affected Installations
======================
Any installation using third party code, which accesses `TemplateService::$tempPath`.
Migration
=========
Remove any reference to `TemplateService::$tempPath`.
.. index:: PHP-API
@@ -0,0 +1,60 @@
.. include:: /Includes.rst.txt
.. _deprecation-69262:
=========================================================================
Deprecation: #69262 - Move marker substitution functionality to own class
=========================================================================
See :issue:`69262`
Description
===========
The marker substitution functionality has been moved from `core/Classes/Html/HtmlParser.php` to it's own
class `core/Classes/Service/MarkerBasedTemplateService.php`
The following methods within HtmlParser have been marked as deprecated.
.. code-block:: php
HtmlParser::getSubpart()
HtmlParser::substituteSubpart()
HtmlParser::substituteSubpartArray()
HtmlParser::substituteMarker()
HtmlParser::substituteMarkerArray()
HtmlParser::substituteMarkerAndSubpartArrayRecursive()
Impact
======
Any usage of these methods will trigger a deprecation log entry.
Affected Installations
======================
Extensions that call these PHP methods directly.
Migration
=========
Change the use statement from `TYPO3\CMS\Core\Html\HtmlParser` to `TYPO3\CMS\Core\Service\MarkerBasedTemplateService`
and create an instance of this service class.
The methods are not static anymore, but named as before.
.. code-block:: php
$templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
$templateService->getSubpart()
$templateService->substituteSubpart()
$templateService->substituteSubpartArray()
$templateService->substituteMarker()
$templateService->substituteMarkerArray()
$templateService->substituteMarkerAndSubpartArrayRecursive()
.. index:: PHP-API
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-69269:
======================================================================
Deprecation: #69269 - Deprecate BackendUtility::getPathType_web_nonweb
======================================================================
See :issue:`69269`
Description
===========
Method `getPathType_web_nonweb()` of class `TYPO3\CMS\Backend\Utility\BackendUtility` has been marked as deprecated.
Impact
======
The method should not be used any longer and will be removed with TYPO3 CMS 8.
Affected Installations
======================
The method is unused in the core since at least TYPO3 CMS 6.2.
Searching for the string `getPathType_web_nonweb` may reveal possible usages.
Migration
=========
Use path functions from `TYPO3\CMS\Core\Utility\PathUtility`.
.. index:: PHP-API, Backend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-69371:
==================================================
Deprecation: #69371 - ext:Form element IMAGEBUTTON
==================================================
See :issue:`69371`
Description
===========
Form element `IMAGEBUTTON` of class `TYPO3\CMS\Form\Domain\Model\Element\ImagebuttonElement` has been marked as deprecated.
The related attribute `scr` of class `TYPO3\CMS\Form\Domain\Model\Attribute\SrcAttribute` has been marked as deprecated.
Impact
======
The element `IMAGEBUTTON` should not be used any longer because it is outdated and will be removed with TYPO3 CMS 8.
Affected Installations
======================
All installations which use the form element `IMAGEBUTTON`.
All installations which use a form typoscript like this:
.. code-block:: typoscript
10 = IMAGEBUTTON
10 {
label = Image button
src = /typo3conf/ext/someExt/some/picture.png
value = value
}
Migration
=========
No Migration is planned.
.. index:: PHP-API, TypoScript, ext:form
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _deprecation-69401:
============================================================================
Deprecation: #69401 - Adopt ext:form to support the Extbase/ Fluid MVC stack
============================================================================
See :issue:`69401`
Description
===========
Form is now based on Extbase/ Fluid for frontend rendering. Therefore
all TypoScript based layout settings have been marked as deprecated. Using the
following code is not recommended anymore:
.. code-block:: typoscript
10 = FORM
10 {
layout {
containerWrap = <div><elements /></div>
elementWrap = <div><element /></div>
}
}
Impact
======
All `.layout` TypoScript properties should not be used anymore. Backward
compatibility algorithms will be removed with TYPO3 CMS 8.
Affected Installations
======================
All installations using `.layout` TypoScript properties.
Migration
=========
Move away from `.layout` TypoScript properties and move to Fluid based
templating.
.. index:: TypoScript, ext:form
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-69535:
=============================================================================================
Deprecation: #69535 - Deprecate \\TYPO3\\CMS\\Fluid\\ViewHelpers\\Be\\Buttons\\IconViewHelper
=============================================================================================
See :issue:`69535`
Description
===========
`\TYPO3\CMS\Fluid\ViewHelpers\Be\Buttons\IconViewHelper` has been marked as deprecated.
Impact
======
The view helper should not be used any longer and will be removed with TYPO3 CMS 8.
Affected Installations
======================
Extensions which use the view helper.
Migration
=========
Use the core icon viewhelper `\TYPO3\CMS\Core\ViewHelpers\IconViewHelper` instead.
Example: Instead of `<f:be.buttons.icon icon="apps-pagetree-collapse" />` use `<core:icon identifier="apps-pagetree-collapse" />`
.. index:: PHP-API, Fluid, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _deprecation-69561:
==========================================================================
Deprecation: #69561 - Replace sprite icons with IconFactory in ContextMenu
==========================================================================
See :issue:`69561`
Description
===========
The `\TYPO3\CMS\Backend\ContextMenu\ContextMenuAction::$class` member variable is not
used anymore inside Core, therefore it has been marked as deprecated and will be removed with CMS 8.
Affected Installations
======================
Any installation using third party code, which accesses `ContextMenuAction::$class`.
Migration
=========
Remove any reference to `ContextMenuAction::$class`.
.. index:: PHP-API, Backend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-69562:
============================================================================
Deprecation: #69562 - Deprecate helper methods for redundant CSRF protection
============================================================================
See :issue:`69562`
Description
===========
The method `BackendUtility::getUrlToken` has been introduced as shortcut to
protect data manipulating entry points `tce_db.php` `tce_file.php` and
`alt_doc.php` from CSRF attacks. These entry points have been replaced with
proper modules or routing, which are CSRF protected by default. With this
`BackendUtility::getUrlToken` is not needed anymore and therefore has been
marked as deprecated.
Impact
======
Third party code using `BackendUtility::getUrlToken` will trigger deprecation
log entries.
Affected Installations
======================
Extensions using the above code.
Migration
=========
These method calls can safely be removed, when generating links to former entry
points `tce_db.php` `tce_file.php` and `alt_doc.php` with the API method
calls : `BackendUtility::getModuleUrl('tce_db')`, `BackendUtility::getModuleUrl('tce_file')`
or `BackendUtility::getModuleUrl('record_edit')`.
.. index:: PHP-API, Backend
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _deprecation-69568:
========================================================
Deprecation: #69568 - Various FormEngine related methods
========================================================
See :issue:`69568`
Description
===========
The following methods have been marked as deprecated and should not no longer be used:
* `BackendUtility::getExcludeFields()`
* `BackendUtility::getExplicitAuthFieldValues()`
* `BackendUtility::getSystemLanguages()`
* `BackendUtility::getRegisteredFlexForms()`
* `BackendUtility::exec_foreign_table_where_query()`
* `BackendUtility::replaceMarkersInWhereClause()`
Impact
======
Using those methods will trigger a deprecation log entry.
Affected Installations
======================
The impact is rather low in general since those methods were mostly internal in
the first place and only used within FormEngine scope. It is unlikely extensions
are affected by this change.
Migration
=========
If still used, extensions should switch to own solutions for those methods.
.. index:: PHP-API, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-69705:
==============================================
Deprecation: #69705 - Add unified refresh icon
==============================================
See :issue:`69705`
Description
===========
The icon `actions-system-refresh` has been marked as deprecated in `TYPO3\CMS\Core\Imaging\IconRegistry` and will be removed with TYPO3 CMS 8.
All requests for `actions-system-refresh` will now show `actions-refresh`.
Impact
======
Using `IconUtility` or `IconFactory` to fetch the icon `actions-system-refresh` will trigger a deprecation log entry.
Affected Installations
======================
Installations with third party extensions that use the icon `actions-system-refresh`.
Migration
=========
Use the icon `actions-refresh` instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-69736:
=============================================================
Deprecation: #69736 - Select option iconsInOptionTags removed
=============================================================
See :issue:`69736`
Description
===========
The option `iconsInOptionTags` of TCA `select` fields has been removed due
to little support in browsers.
Impact
======
The usage of this option triggers a deprecation log entry and is automatically
removed in TCA tables during bootstrap.
Affected Installations
======================
Any `TCA` configuration using `iconsInOptionTags`.
Migration
=========
Remove usage of this option.
.. index:: TCA, Backend
@@ -0,0 +1,85 @@
.. include:: /Includes.rst.txt
.. _deprecation-69754:
=================================================================================================================
Deprecation: #69754 - Deprecate relative path to extension directory and using filename only in TCA ctrl iconfile
=================================================================================================================
See :issue:`69754`
Description
===========
* Using relative paths to refer to the extension directory for iconfiles in `TCA['ctrl']['iconfile']` has been marked as deprecated.
* Using filenames only to refer to an iconfile in TCA['ctrl'] has been marked as deprecated.
Impact
======
* TCA definitions in `TCA['ctrl']['iconfile']` containing `'../typo3conf/ext/'` or calls to `\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath()` will trigger a deprecation log entry.
* TCA definitions in `TCA['ctrl']['iconfile']` containing a filename only will trigger a deprecation log entry.
Affected Installations
======================
Any installation with extensions defining `TCA['ctrl']['iconfile']` by using `../typo3conf/ext/` or only a filename.
Migration
=========
Relative paths
--------------
Use `EXT:` instead of relative path `'../typo3conf/ext/'` or `\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath()`, e.g.
.. code-block:: php
'ctrl' => array(
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('my_extension') . 'Resources/Public/Icons/image.png'
),
has to be migrated to
.. code-block:: php
'ctrl' => array(
'iconfile' => 'EXT:my_extension/Resources/Public/Icons/image.png'
),
Filename only
-------------
Use a full absolute path or an `EXT:` definition instead of a filename only:
.. code-block:: php
'ctrl' => array(
'iconfile' => '_icon_ftp.gif'
),
has to be migrated to
.. code-block:: php
'ctrl' => array(
'iconfile' => 'EXT:t3skin/icons/gfx/i/_icon_ftp.gif'
),
or
.. code-block:: php
'ctrl' => array(
// You can use absolute paths (to your web root folder) to the icons but
// it is discouraged to do so as these icons belong to an extension they
// should also be stored in this extension
'iconfile' => '/fileadmin/icons/_icon_ftp.gif'
),
.. index:: TCA, Backend
@@ -0,0 +1,25 @@
.. include:: /Includes.rst.txt
.. _deprecation-69938:
============================================================
Deprecation: #69938 - HIDE_L10N_SIBLINGS FlexFormdisplayCond
============================================================
See :issue:`69938`
Description
===========
The flexform `HIDE_L10N_SIBLINGS display` condition has been marked as deprecated and will be removed with CMS 8.
The condition could only be used with translation mode `langChildren=1` to only show the field for the default language.
Impact
======
FlexForms using this condition will show the field separately for each language again.
.. index:: FlexForm, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _feature-16525:
======================================================
Feature: #16525 - Add conditions to INCLUDE_TYPOSCRIPT
======================================================
See :issue:`16525`
Description
===========
The INCLUDE_TYPOSCRIPT tag now has an extra (optional) property "condition" which causes the file/directory to be included only
if the condition is met.
As usual a condition is enclosed in square brackets, but if these are not present they will be added. Any double quotes must be
escaped by adding backslashes and any backslash must be doubled.
Example
-------
.. code-block:: typoscript
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/firefox.ts" condition="[loginUser = *]">
Condition with square brackets. File will only be included if a frontend user is logged in.
.. code-block:: typoscript
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/staging.ts" condition="applicationContext = /^Production\\/Staging\\/Server\\d+$/">
Condition without square brackets, backslashes doubled inside the condition. File will only be included in application context
Production/Staging/Server followed by at least one digit.
.. index:: TypoScript, Frontend
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _feature-19494:
================================================================
Feature: #19494 - Add SELECTmmQuery method to DatabaseConnection
================================================================
See :issue:`19494`
Description
===========
A new method `SELECT_mm_query` has been added to the `DatabaseConnection` class.
This method has been extracted from `exec_SELECT_mm_query` to separate the building
and execution of M:M queries.
This enables the use of the query building in the database abstraction layer.
Example:
.. code-block:: php
$query = SELECT_mm_query('*', 'table1', 'table1_table2_mm', 'table2', 'AND table1.uid = 1', '', 'table1.title DESC');
.. index:: PHP-API, Database
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _feature-25341:
============================================================
Feature: #25341 - Scheduler task to optimize database tables
============================================================
See :issue:`25341`
Description
===========
A scheduler task to run the `OPTIMIZE TABLE` command on selected
database tables has been added. The `OPTIMIZE TABLE` command
reorganizes the physical storage of table data and associated index
data to reduce storage space and improve I/O efficiency when
accessing the table. The exact changes made to each table depend
on the storage engine used by that table. For more information see
the `MySQL manual`_.
The scheduler task is meant for the MySQL database system and only
shows tables matching the MySQL storage engines MyISAM, InnoDB and
ARCHIVE. Using this task with DBAL and other DBMS is not supported
as the commands used are MySQL specific.
Impact
======
Optimizing tables is I/O intensive. On MySQL < 5.6.17 it also locks
the tables for the whole time, which can severely impact the website
while it is running. When considering whether or not to run optimize,
consider the workload of transactions that your server will process
as InnoDB tables do not suffer from fragmentation in the same way
that MyISAM tables do.
.. _MySQL manual: https://dev.mysql.com/doc/refman/5.6/en/optimize-table.html
.. index:: ext:scheduler, Database
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _feature-28243:
================================================================================
Feature: #28243 - Introduce TCA option to disable age display of dates per field
================================================================================
See :issue:`28243`
Description
===========
It is now possible to disable the display of the age (p.e. "2015-08-30 (-27 days)") of date fields in record
listings by a new TCA option.
The option is called `disableAgeDisplay` and can be set in the config section of a field.
It will be respected if the field has the type `input` and its eval is set to `date`.
Example
-------
.. code-block:: php
// disables the display of " (-27 days)" p.e.
$GLOBALS['TCA']['tt_content']['columns']['date']['config']['disableAgeDisplay'] = true;
.. index:: TCA, Backend
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _feature-31100:
===================================================================================
Feature: #31100 - ext:form Integrate multiline support for TEXTBLOCK in form wizard
===================================================================================
See :issue:`31100`
Description
===========
The form object `TEXTBLOCK` is now rendered as multiline input field in the
form wizard. Line breaks are automatically converted to `<br>` tags in the
wizard preview and the frontend.
.. index:: ext:form, Frontend, Backend
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _feature-38732:
=========================================================
Feature: #38732 - Fluid-based Content Elements Introduced
=========================================================
See :issue:`38732`
Description
===========
A new system extension called "Fluid Styled Content" has been added to the core,
which ships with a trimmed down and simplified set of Content Elements which are
rendered by Fluid Templates. This extension is installed by default on new
installations.
In order to have Fluid Styled Content running, add the TypoScript file inside the
Template module.
The Page TSconfig is loaded automatically when the extension is installed. The autoloading
of this file can be disabled by deactivating the `loadContentElementWizardTsConfig` option
in the extension configuration of the extension manager. You have then to load the Page
TSConfig by yourself on the page properties.
It is possible to overwrite the templates by adding your own paths in the TypoScript setup:
.. code-block:: typoscript
lib.fluidContent.templateRootPaths.50 = EXT:site_example/Resources/Private/Templates/
lib.fluidContent.partialRootPaths.50 = EXT:site_example/Resources/Private/Partials/
lib.fluidContent.layoutRootPaths.50 = EXT:site_example/Resources/Private/Layouts/
The new CType `textmedia` adds support for rendering media elements and image elements side by side.
Impact
======
Please note that this extension is still in an early stage and breaking changes are
still possible until TYPO3 CMS 7 LTS, so be aware of changes to TCA, Templates,
Behaviour and Feature set.
Some conflicts regarding CSS Styled Content and Fluid Styled Content might still exist.
.. index:: TypoScript, ext:fluid_styled_content, Backend, Frontend
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _feature-47812:
=================================================
Feature: #47812 - Query support for BETWEEN added
=================================================
See :issue:`47812`
Description
===========
Support for `between` has been added to the Extbase `Query` object. As there is no performance
advantage to using BETWEEN on the DBMS side (the optimizer converts it to `(min <= expr AND expr <= max)`
this function replicates the DBMS behaviour by building a logical AND condition that has the advantage
of working on all DBMS.
Example:
.. code-block:: php
$query->matching(
$query->between('uid', 3, 5)
);
.. index:: PHP-API, ext:extbase
@@ -0,0 +1,69 @@
.. include:: /Includes.rst.txt
.. _feature-52217:
=================================================================
Feature: #52217 - Signal for pre processing linkvalidator records
=================================================================
See :issue:`52217`
Description
===========
This signal allows for additional processing upon initialization of a specific record,
e.g. getting content data from plugin configuration in record.
Registering the signal: (in ext_localconf.php)
.. code-block:: php
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
\TYPO3\CMS\Linkvalidator\LinkAnalyzer::class,
'beforeAnalyzeRecord',
\Vendor\Package\Slots\RecordAnalyzerSlot::class,
'beforeAnalyzeRecord'
);
..
The slot class:
.. code-block:: php
namespace Vendor\Package\Slots;
use TYPO3\CMS\Linkvalidator\LinkAnalyzer;
class RecordAnalyzerSlot {
/**
* Receives a signal before the record is analyzed
*
* @param array $results Array of broken links
* @param array $record Record to analyze
* @param string $table Table name of the record
* @param array $fields Array of fields to analyze
* @param LinkAnalyzer $parentObject Parent object
* @return array
*/
public function beforeAnalyzeRecord($results, $record, $table, $fields, LinkAnalyzer $parentObject) {
// Processing here
return array(
$results,
$record
);
}
}
..
Impact
======
Extensions may now perform any kind of processing for every record when validating content links.
.. index:: PHP-API, Backend, ext:linkvalidator
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _feature-53406:
=================================================================================
Feature: #53406 - ext:form Add placeholder attribute to some textfields in wizard
=================================================================================
See :issue:`53406`
Description
===========
The form wizard is now able to add a placeholder attribute to the
following elements: TEXTLINE, TEXTAREA, PASSWORD and the preset
"email". TypoScript config is properly read and written.
.. index:: Frontend, ext:form
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-56282:
=======================================================
Feature: #56282 - Language selector for pageview module
=======================================================
See :issue:`56282`
Description
===========
The page->view module now has a dropdown to select a language for the page preview.
In case you switch languages based on something different than a parameter called `L` you
can disable the selector by using the following PageTSConfig:
`mod.SHARED.view.disableLanguageSelector = 1`
.. index:: TSConfig, Backend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-56726:
===============================================================
Feature: #56726 - Trigger metadata extraction after file upload
===============================================================
See :issue:`56726`
Description
===========
Before #56726 the metadata extraction was only called through the extract metadata
scheduler task.
So when an editor uploaded a new file he had to wait until the scheduler task had
been triggered again and extracted the metadata.
Now the metadata extraction is by default triggered after adding/uploading a file
in the BE or when the FAL API is used `ResourceStorage::addFile()`,
`ResourceStorage::replaceFile()` and `ResourceStorage::addUploadedFile()`.
In some special situations it isn't desired to have metadata extraction direct
after file upload/adding a file to the storage.
For these cases the automatic extraction can be disabled in File Storage configuration.
Impact
======
The flag is by default set for all existing and a new storage. When you have some
special use-case where automatic extraction of metadata is not desired the flag
can be disabled in File Storage configuration.
.. index:: FAL, PHP-API, Backend
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _feature-57632:
=====================================================================
Feature: #57632 - Include inline language label files with TypoScript
=====================================================================
See :issue:`57632`
Description
===========
It is now possible to add inline language label files with TypoScript.
Usage
-----
If you want to include inline labels from a XLF file, you have to specify that
file in your TypoScript with a custom key in the new `inlineLanguageLabelFiles`
section. In addition to the file you can configure three optional parameters:
* `selectionPrefix`: Only label keys that start with this prefix will be included (default: '')
* `stripFromSelectionName`: A string that will be removed from any included label key (default: '')
* `errorMode`: Error mode if the file could not be found: 0 - syslog entry, 1 - do nothing, 2 - throw an exception (default: 0)
Example
-------
.. code-block:: typoscript
page = PAGE
page.inlineLanguageLabelFiles {
someLabels = EXT:myExt/Resources/Private/Language/locallang.xlf
someLabels.selectionPrefix = idPrefix
someLabels.stripFromSelectionName = strip_me
someLabels.errorMode = 2
}
Output in the HTML head:
.. code-block:: javascript
var TYPO3 = TYPO3 || {};
TYPO3.lang = {"firstLabel":[{"source":"first Label","target":"erstes Label"}],"secondLabel":[{"source":"second Label","target":"zweites Label"}]};
.. index:: TypoScript, JavaScript, Frontend
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _feature-59144:
==================================================================
Feature: #59144 - Previewing workspace records using Page TSconfig
==================================================================
See :issue:`59144`
Description
===========
Per default TYPO3 only creates preview links for the tables tt_content, pages
and pages_language_overlay. To avoid utilizing a hook for each table, creating
preview links can be triggered using Page TSconfig.
.. code-block:: typoscript
# Using page 123 for previewing workspaces records (in general)
options.workspaces.previewPageId = 123
# Using the pid field of each record for previewing (in general)
options.workspaces.previewPageId = field:pid
# Using page 123 for previewing workspaces records (for table tx_myext_table)
options.workspaces.previewPageId.tx_myext_table = 123
# Using the pid field of each record for previewing (or table tx_myext_table)
options.workspaces.previewPageId.tx_myext_table = field:pid
.. index:: TSConfig, ext:workspaces
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _feature-59591:
==============================================================
Feature: #59591 - Image quality definable per sourceCollection
==============================================================
See :issue:`59591`
Description
===========
The image quality of each `sourceCollection` entry can be configured.
Integrators can already render images with the predefined quality set by LocalConfiguration.php.
To decrease the quality of larger images (e.g. double density) in order to lower the file size,
integrators can configure the parameter `quality` of the matching `sourceCollection` now.
The TypoScript setup can be configured as followed (e.g.):
.. code-block:: typoscript
# for small retina images
tt_content.image.20.1.sourceCollection.smallRetina.quality = 80
# for large retina images
tt_content.image.20.1.sourceCollection.largeRetina.quality = 65
If the new parameter is not set, TYPO3 will use to the default quality of LocalConfiguration.
Impact
======
The rendering of `sourceCollection` stays as it is. Users can additionally selectively control the quality of jpeg by TypoScript setup.
.. index:: TypoScript, Frontend
@@ -0,0 +1,125 @@
.. include:: /Includes.rst.txt
.. _feature-61799:
===================================================
Feature: #61799 - Improved handling of online media
===================================================
See :issue:`61799`
Description
===========
Editors can now use YouTube and Vimeo videos (online media) just like any other file, organising them just like any
other file in the file list and selecting them in element browser to use in a CE or any other record.
Adding new online media files is done providing the URL to online media. The matching helper class will fetch the
needed metadata and supply an image that will be used as preview if available.
YouTube and Vimeo support
-------------------------
The core provides an `OnlineMediaHelper` and a `FileRenderer` class for YouTube and Vimeo.
Adding YouTube videos can be done by providing a URL in one of the following formats (with and without http(s)://):
- youtu.be/<code> # Share URL
- www.youtube.com/watch?v=<code> # Normal web link
- www.youtube.com/v/<code>
- www.youtube-nocookie.com/v/<code> # youtube-nocookie.com web link
- www.youtube.com/embed/<code> # URL form iframe embed code, can also get code from full iframe snippet
Adding Vimeo videos can be done by providing a URL in one of the following formats (with and without http(s)://):
- vimeo.com/<code> # Share URL
- player.vimeo.com/video/<code> # URL form iframe embed code, can also get code from full iframe snippet
Each renderer has some custom configuration options:
YouTubeRenderer
^^^^^^^^^^^^^^^
* `bool autoplay` default = FALSE; when set video starts immediately after loading of the page
* `int controls` default = 2; see `<https://developers.google.com/youtube/player_parameters#controls>`_
* `bool loop` default = FALSE; if set video starts over again from te beginning when finished
* `bool enablejsapi` default = TRUE; see `<https://developers.google.com/youtube/player_parameters#enablejsapi>`_
* `bool showinfo` default = FALSE; show video title and uploader before video starts playing
* `bool no-cookie` default = FALSE; use domain youtube-nocookie.com instead of youtube.com when embedding a video
Example of setting the YouTubeRenderer options with the MediaViewHelper:
.. code-block:: html
<!-- enable js api and set no-cookie support for YouTube videos -->
<f:media file="{file}" additionalConfig="{enablejsapi:1, 'no-cookie': true}" />
VimeoRenderer
^^^^^^^^^^^^^
* `bool autoplay` default = FALSE; when set video starts immediately after loading of the page
* `bool loop` default = FALSE; if set video starts over again from te beginning when finished
* `bool showinfo` default = FALSE; show video title and uploader before video starts playing
Example of setting the YouTubeRenderer options with the MediaViewHelper:
.. code-block:: html
<!-- show title and uploader for YouTube and Vimeo before video starts playing -->
<f:media file="{file}" additionalConfig="{showinfo:1}" />
Register your own online media service
--------------------------------------
For every service you need an `OnlineMediaHelper` class that implements `OnlineMediaHelperInterface` and a
`FileRenderer` class (see #61800) that implements `FileRendererInterface`. The online media helper is responsible
for translating the input given by the editor to a `onlineMediaId` that is known to the service. The renderer is
responsible for turning the `onlineMediaId` to the correct HTML output to show the media item.
The `onlineMediaId` is stored in a plain text file that only holds this ID. By giving this file a custom file extension
TYPO3 knows which `OnlineMediaHelper` and `FileRenderer` belong to it. To further tell TYPO3 what kind of
"file" (text, image, audio, video, application, other) this online media holds we also need to bind a custom mime-type to
this file extension.
With adding this custom file extension to `$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext']` (see `#69543 <Feature-69543-IntroducedGLOBALSTYPO3_CONF_VARSSYSmediafile_ext.rst>`_) your custom
online media file can be used throughout the backend every where all media files are allowed.
**Example of registering your own online media file/service:**
.. code-block:: php
// Register your own online video service (the used key is also the bind file extension name)
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['onlineMediaHelpers']['myvideo'] = \MyCompany\Myextension\Helpers\MyVideoHelper::class;
$rendererRegistry = \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::getInstance();
$rendererRegistry->registerRendererClass(
\MyCompany\Myextension\Rendering\MyVideoRenderer::class
);
// Register an custom mime-type for your videos
$GLOBALS['TYPO3_CONF_VARS']['SYS']['FileInfo']['fileExtensionToMimeType']['myvideo'] = 'video/myvideo';
// Register your custom file extension as allowed media file
$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'] .= ',myvideo';
Override core Helper class with your own helper class
-----------------------------------------------------
The helper classed provided by the core use the `oEmbed` web service provided by YouTube and Vimeo to gather some basic
metadata for the provided video urls. The upside is that you do not need an API user/key to use their webservice as these
services are publicly available. But the downside is that the gathered info is kind of scarce. So if you have an API user/key
for these services, you could create an own helper class which provides more meta data.
.. code-block:: php
// Register your own online custom youtube helper class
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['onlineMediaHelpers']['youtube'] = \MyCompany\Myextension\Helpers\YouTubeHelper::class;
.. index:: FAL, Backend, Frontend, PHP-API, LocalConfiguration
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _feature-61993:
===========================================================================
Feature: #61993 - _CSS_PAGE_STYLE is now only included on the affected page
===========================================================================
See :issue:`61993`
Description
===========
CSS set via the TypoScript property `_CSS_PAGE_STYLE` was concatenated and
compressed with the non-page-specific CSS and therefore loaded on pages it did
not affect at all.
Impact
======
The behaviour from now on is that `_CSS_PAGE_STYLE` is included only on the
affected page. Depending on your configuration it will be written in an external
file and included on the page or directly added as inline CSS block. Compression
for page specific CSS also depends on the global `config.compressCss` setting.
.. index:: TypoScript, Frontend
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-63395:
==================================================
Feature: #63395 - HTML5 video poster preview image
==================================================
See :issue:`63395`
Description
===========
Enable Video preview image "poster" in media in the old fashion way.
If there is a jpg, jpeg or png image in the same folder with the same
name as the video file it will be shown with the HTML5 poster attribute.
The file extensions are checked exactly in the order mentioned above.
.. index:: ext:mediace
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _feature-64535:
=====================================================================================
Feature: #64535 - IRRE: Suppress and override useCombination warning via TCA settings
=====================================================================================
See :issue:`64535`
Description
===========
When using `useCombination=TRUE` there is always a FlashMessage warning displayed.
It is now possible to override the default warning message with a custom message or
to suppress the FlashMessage completely via TCA setting.
Example to suppress `useCombination` warning message:
.. code-block:: php
$GLOBALS['TCA']['tx_demo_domain_model_demoinline']['columns']['irre_records']['config'] = array(
'foreign_types_combination' => array(
'1' => array(
'showitem' => 'title'
)
)
'appearance' => array(
'suppressCombinationWarning' => TRUE
'useCombination' => TRUE
)
)
Example to override `useCombination` warning message:
.. code-block:: php
$GLOBALS['TCA']['tx_demo_domain_model_demoinline']['columns']['irre_records']['config'] = array(
'foreign_types_combination' => array(
'1' => array(
'showitem' => 'title'
)
)
'appearance' => array(
'overwriteCombinationWarningMessage' => 'LLL:EXT:demo/Resources/Private/Language/locallang_db.xlf:tx_demo_domain_model_demoinline.irre_records.useCombinationWarning'
'useCombination' => TRUE
)
)
.. index:: TCA, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _feature-64726:
================================================================
Feature: #64726 - Added support for multiple FlashMessage queues
================================================================
See :issue:`64726`
Description
===========
In Extbase ControllerContext the method `getFlashMessageQueue()` now optionally
allows to specify which queue to fetch. If none is specified the `default-
messagequeue` for the current controller/plugin will be used.
.. code-block:: php
$this->controllerContext->getFlashMessageQueue($queueIdentifier);
In Fluid the flashMessages-ViewHelper also allows to specify a queue to
use.
.. code-block:: html
<f:flashMessages queueIdentifier="myQueue" />
Impact
======
Extensions may now render foreign flash message queues and add messages
to them.
.. index:: PHP-API, Fluid, ext:extbase
@@ -0,0 +1,60 @@
.. include:: /Includes.rst.txt
.. _feature-58621-1668719172:
=========================================
Feature: #58621 - Unified Backend Routing
=========================================
See :issue:`58621`
Description
===========
A new Routing component has been added to the TYPO3 Backend which handles addressing different calls / modules inside TYPO3.
A **Route** is the smallest entity consisting of a path (e.g. "/records/edit/") as well as an identifier for addressing
the route, and the information about how to dispatch the route to a PHP controller.
A **Route** can be a module, wizard or any page inside the TYPO3 Backend. The Router contains the public API for matching
paths to fetch a Route and is resolved inside the RequestHandler of the Backend.
The entry point for Routes is `typo3/index.php?route=myroute&token=....`. The main RequestHandler for all Backend requests
detects if a route parameter from the server is given and uses this as the route identifier and then resolves to a
controller defined inside the Route.
Routes are defined inside the file "Configuration/Backend/Routes.php" of any extension.
Example of a Configuration/Backend/Routes.php file:
.. code-block:: php
return [
'myRouteIdentifier' => [
'path' => '/document/edit',
'controller' => Acme\MyExtension\Controller\MyExampleController::class . '::methodToCall'
]
];
The called method in the controller to be called receives a PSR-7 compliant Request object and a PSR-7 Response object, and has to return a PSR-7 Response object.
The UriBuilder generates any kind of URL for the Backend, may it be a module, a typical route or an AJAX call. The
UriBuilder returns a PSR-7-conform Uri object that can be casted to string when needed.
Usage:
.. code-block:: php
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
$uri = $uriBuilder->buildUriFromRoute('myRouteIdentifier', array('foo' => 'bar'));
See https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/BackendRouting/Index.html for more details.
Impact
======
Handling of existing modules works the same as before and fully transparent. Any existing registration of entrypoints
can be moved to the new registration file in Configuration/Backend/Routes.php.
.. index:: PHP-API, Backend
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _feature-65791:
=============================================================================================
Feature: #65791 - Use PHP configured sendmail path, if [MAIL][transport] = sendmail is active
=============================================================================================
See :issue:`65791`
Description
===========
The install tool setting `[MAIL][transport_sendmail_command]` is now retrieved automatically from
PHP runtime configuration `sendmail_path` during installation (instead of '/usr/sbin/sendmail -bs').
Impact
======
There are no impacts on current installations.
New installations will have `[MAIL][transport_sendmail_command]` automatically set during installation
using `sendmail_path` from PHP runtime configuration. It can still be changed manually.
As this setting is only used if `[MAIL][transport]` is set to `sendmail`, it doesn't have impact on
other transport schemes.
.. index:: LocalConfiguration
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _feature-66366:
============================================
Feature: #66366 - Introduced MediaViewHelper
============================================
See :issue:`66366`
Description
===========
In order to comfortably render video, audio and all other file types with a registered Renderer class (`RenderingRegistry`
introduced with #61800) in FE, the `MediaViewHelper` has been added.
The `MediaViewHelper` first checks if there is a Renderer present for the given file. If not, it will as fallback
render an image tag. This way it is a replacement for the `ImageViewHelper` in most cases when rendering video and
audio tags.
Examples:
---------
.. code-block:: html
<code title="Image Object">
<f:media file="{file}" width="400" height="375" />
</code>
<output>
<img alt="alt set in image record" src="fileadmin/_processed_/323223424.png" width="396" height="375" />
</output>
<code title="MP4 Video Object">
<f:media file="{file}" width="400" height="375" />
</code>
<output>
<video width="400" height="375" controls><source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"></video>
</output>
<code title="MP4 Video Object with loop and autoplay option set">
<f:media file="{file}" width="400" height="375" additionalConfig="{loop: '1', autoplay: '1'}" />
</code>
<output>
<video width="400" height="375" controls loop><source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"></video>
</output>
.. index:: Fluid, FAL, Frontend
@@ -0,0 +1,75 @@
.. include:: /Includes.rst.txt
.. _feature-66371:
=====================================================================
Feature: #66371 - Introduce autoplay option for video and audio files
=====================================================================
See :issue:`66371`
Description
===========
The `RenderingRegistry` added with #61800 introduced the option to render video
and audio tags with the new `MediaViewHelper` added with #66366.
To improve the usability of this feature an autoplay checkbox has been added to
the `sys_file_reference` records to enable the editor to configure this option
on a per file basis.
To make the autoplay option available in sys_file_reference records, make use of
the new palettes `videoOverlayPalette` and `audioOverlayPalette` in your TCA.
However, the autoplay property of the `sys_file_reference` is only taken into
account if the view helper does not explicitly specify an autoplay option.
Examples:
---------
Example config of an sys_file_reference field in TCA:
.. code-block:: php
'media' => array(
'exclude' => 1,
'label' => 'Media',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'media',
array(
'foreign_types' => array(
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => array(
'showitem' => '
--palette--;;audioOverlayPalette,
--palette--;;filePalette',
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => array(
'showitem' => '
--palette--;;videoOverlayPalette,
--palette--;;filePalette',
)
)
),
'wav,mpeg,mp4,ogg'
)
)
.. code-block:: html
<code title="MP4 Video Object with autoplay option set regardless of sys_file_reference checkbox">
<f:media file="{file}" width="400" height="375" additionalConfig="{autoplay: '1'}" />
</code>
<output>
<video width="400" height="375" controls autoplay><source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"></video>
</output>
<code title="MP4 Video Object without autoplay option set will respect the configuration of the sys_file_reference record">
<f:media file="{file}" width="400" height="375" />
</code>
<output>
<video width="400" height="375" controls><source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"></video>
</output>
.. index:: FAL, TCA, Backend, Frontend
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _feature-67056:
===================================================================
Feature: #67056 - Add option to disable move buttons TCA group type
===================================================================
See :issue:`67056`
Description
===========
The move buttons of the TCA type `group` can now be explicitly disabled with the
`hideMoveIcons` option. Before these icons where only automatically removed if
`maxitems` was set to 1.
.. code-block:: php
'options' => array(
'label' => 'Options',
'config' => array(
'type' => 'group',
'internal_type' => 'db',
'allowed' => 'pages',
'maxitems' => 9999,
'hideMoveIcons' => TRUE,
),
),
Impact
======
Move buttons can now always be hidden for `group` fields
.. index:: TCA, Backend
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _feature-67875:
===================================================
Feature: #67875 - Override CategoryRegistry entries
===================================================
See :issue:`67875`
Description
===========
The `makeCategorizable` method of the `\TYPO3\CMS\Core\Utility\ExtensionManagementUtility`
class has been extended with a new parameter `override` to set a new category configuration for
an already registered table / field combination.
If the parameter is set to `TRUE`, previously defined registry entries are cleared for the
current table / field combination before adding the new configuration.
The intended usecase for this method is to add additional TCA types for a previously registered table.
A good example is the `tt_content` table:
1. The basic TCA is defined in the `frontend` Extension.
2. After the processing of the normal TCA definition, the default categorized tables (from the install
tool setting `SYS/defaultCategorizedTables`) are initialized and the categories tab is added to the
`showitem` configuration for all TCA types that exist so far.
3. Now the TCA overrides are processed. The `css_styled_content` Extension defines additional TCA
types. After the types are defined the `addOrOverride()` method is called to add the category
tab to them.
Impact
======
The current behavior of the existing functionality is not changed. Only new functionality is added.
Example
=======
.. code-block:: php
// This example is from the tt_content TCA overrides file from the css_styled_content Extension.
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable('css_styled_content', 'tt_content', 'categories', array(), TRUE);
.. index:: PHP-API, TCA, Backend
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _feature-67880:
======================================
Feature: #67880 - Added count to split
======================================
See :issue:`67880`
Description
===========
A new property `returnCount` is added to the stdWrap property `split`.
When dealing with comma separated values like the content of `field:records` or similar,
we might need to know how many items are present inside the csv.
Example:
.. code-block:: typoscript
# should return 9
1 = TEXT
1 {
value = x,y,z,1,2,3,a,b,c
split.token = ,
split.returnCount = 1
}
.. index:: TypoScript, Frontend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _feature-67932:
===========================================================
Feature: #67932 - RenderType for rsa encrypted input fields
===========================================================
See :issue:`67932`
Description
===========
EXT:rsaauth defines an own render type for TCA input fields. Those fields will
be encrypted before submitting the form.
Impact
======
In the Backend password fields for backend and frontend users are automatically
encoded before the form is submitted.
Usage
=====
To encrypt your own TCA fields you can add define the render type `rsaInput`.
.. code-block:: php
$GLOBALS['TCA']['be_users']['columns']['password']['config']['renderType'] = 'rsaInput';
.. index:: TCA, Backend
@@ -0,0 +1,74 @@
.. include:: /Includes.rst.txt
.. _feature-68429:
===============================================
Feature: #68429 - Introduced AvatarProvider API
===============================================
See :issue:`68429`
Description
===========
To make providing an avatar image for BE users more flexible an API has been
introduced so you can register AvatarProviders.
The core provides the `DefaultAvatarProvider` by default to handle the image
defined in the user settings.
When an avatar is rendered in the BE the available `AvatarProviders` are asked
if they can provide an `TYPO3\CMS\Backend\Backend\Avatar\Image` for the given
`be_users` record in the requested size. The first `TYPO3\CMS\Backend\Backend\Avatar\Image`
that gets returned is used.
Registering an avatar provider
------------------------------
An avatar provider can be registered within your `ext_localconf.php` file like this:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['avatarProviders']['myCustomProvider'] = [
'provider' => \MyVendor\MyExtension\AvatarProvider\CompanyAvatarProvider::class,
'before' => ['defaultAvatarProvider']
];
The settings are defined as:
* `provider`: The avatar provider class name, which must implement `TYPO3\CMS\Backend\Backend\Avatar\AvatarProviderInterface`.
* `before`/`after`: You can define the ordering how providers are executed. This is used to get the order in which the providers are executed.
For a new avatar provider you have to register a **new key** in `$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['avatarProviders']`.
If your avatar provider extends another one, you may only overwrite necessary settings. An example would be to
extend an existing provider and replace its registered 'provider' class with your new class name.
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['avatarProviders']['defaultAvatarProvider']['provider'] = \MyVendor\MyExtension\AvatarProvider\CustomAvatarProvider::class;
AvatarProviderInterface
-----------------------
The AvatarProviderInterface contains only one method:
`public function getImage(array $backendUser, $size);`
The parameters are defined as:
* `$backendUser`: The record from `be_users` database table.
* `$size`: The requested size of the avatar image.
The return value of the method is expected to be an instance of `TYPO3\CMS\Backend\Backend\Avatar\Image` or NULL
when the provider can not provide an image.
An `TYPO3\CMS\Backend\Backend\Image` object has 3 properties:
* `$url`: Url of avatar image. Needs to be relative to the website root or an absolute URL.
* `$width`: The width of the image.
* `$height`: The height of the image.
.. index:: PHP-API, Backend
@@ -0,0 +1,80 @@
.. include:: /Includes.rst.txt
.. _feature-68700:
=======================================================================
Feature: #68700 - Autoload definition can be provided in ext_emconf.php
=======================================================================
See :issue:`68700`
Description
===========
It is now possible for extensions to provide one or more PSR-4 definitions,
in the ext_emconf.php file.
While it was possible to define a psr-4 section in a composer.json before already, now it is also
possible to define an autoload/psr-4 section in the ext_emconf.php file as well, so that extension authors
do not need to provide a composer.json just for that any more.
This is the new recommended way to register classes for TYPO3.
Example ext_emconf.php:
.. code-block:: php
<?php
$EM_CONF[$_EXTKEY] = array (
'title' => 'Extension skeleton for TYPO3 7',
'description' => 'Description for ext',
'category' => 'Example Extensions',
'author' => 'Helmut Hummel',
'author_email' => 'info@helhum.io',
'author_company' => 'helhum.io',
'shy' => '',
'priority' => '',
'module' => '',
'state' => 'stable',
'internal' => '',
'uploadfolder' => '0',
'createDirs' => '',
'modify_tables' => '',
'clearCacheOnLoad' => 0,
'lockType' => '',
'version' => '0.0.1',
'constraints' =>
array (
'depends' =>
array (
'typo3' => '7.5.0-7.99.99',
),
'conflicts' =>
array (
),
'suggests' =>
array (
),
),
'autoload' =>
array(
'psr-4' =>
array(
'Helhum\\ExtScaffold\\' => 'Classes'
)
)
);
Impact
======
Without providing an autoload section, TYPO3 scans the complete extension directory for PHP class files and registers them all.
This includes test classes or classes of third party libraries, which might lead to unexpected results.
Therefore it is recommended to provide such an autoload section in an extension. It will be ignored in older TYPO3 versions, so
there will be no issue with backwards compatibility.
.. index:: PHP-API
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-68724:
====================================================================================================================
Feature: #68724 - EM: "Get preconfigured distribution" shows only distributions that suite the current TYPO3 version
====================================================================================================================
See :issue:`68724`
Description
===========
As the list of distributions gets longer, it is filtered now to those distributions that suite the current TYPO3 version.
Impact
======
Distributions that require different TYPO3 versions are not shown anymore.
.. index:: ext:extensionmanager
@@ -0,0 +1,119 @@
.. include:: /Includes.rst.txt
.. _feature-68741:
====================================================================================
Feature: #68741 - Introduce new IconFactory as base to replace the icon skinning API
====================================================================================
See :issue:`68741`
Description
===========
The logic for working with icons, icon sizes and icon overlays is now bundled into the new `IconFactory` class.
The new icon factory will replace the old icon skinning API step by step.
All core icons will be registered directly in the `IconRegistry` class, third party extensions must use
`IconRegistry::registerIcon()` to override existing icons or add additional icons to the icon factory.
The `IconFactory` takes care of the correct icon and overlay size and the markup.
IconProvider
------------
The core implements three icon provider classes, which all implement the `IconProviderInterface`.
* `BitmapIconProvider` for all kind of bitmap icons for gif, png and jpg files
* `FontawesomeIconProvider` for font icons from fontawesome.io
* `SvgIconProvider` for svg icons
Third party extensions can provide own icon provider classes, each class must implement the `IconProviderInterface`.
BitmapIconProvider
------------------
The `BitmapIconProvider` has the following option
* `source` The path to the bitmap file, this may also contain the EXT: prefix
FontawesomeIconProvider
-----------------------
The `FontawesomeIconProvider` has the following option
* `name` The name of the icon without the icon prefix e.g. `check` instead of `fa-check`
SvgIconProvider
---------------
The `SvgIconProvider` has the following option
* `source` The path to the svg file, this may also contains the EXT: prefix
Register an icon
----------------
.. code-block:: php
/*
* Put the following code into your ext_localconf.php file of your extension.
*
* @param string $identifier the icon identifier
* @param string $iconProviderClassName the icon provider class name
* @param array $options provider specific options, please reference the icon provider class
*/
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon($identifier, $iconProviderClassName, array $options = array());
Use an icon
-----------
To use an icon, you need at least the icon identifier. The default size is currently 32x32 px.
The third parameter can be used to add an additional icon as overlay, which can be any registered icon.
The `Icon` class provides only the following constants for Icon sizes:
* `Icon::SIZE_SMALL` which currently means 16x16 px
* `Icon::SIZE_DEFAULT` which currently means 32x32 px
* `Icon::SIZE_LARGE` which currently means 48x48 px
All the sizes can change in future, so please make use of the constants for an unified layout.
.. code-block:: php
$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
$iconFactory->getIcon($identifier, Icon::SIZE_SMALL, $overlay)->render();
ViewHelper
----------
The core provides a fluid ViewHelper which makes it really easy to use icons within a fluid view.
.. code-block:: html
{namespace core=TYPO3\CMS\Core\ViewHelpers}
<core:icon identifier="my-icon-identifier" />
<!-- use the "small" size if none given ->
<core:icon identifier="my-icon-identifier" />
<core:icon identifier="my-icon-identifier" size="large" />
<core:icon identifier="my-icon-identifier" overlay="overlay-identifier" />
<core:icon identifier="my-icon-identifier" size="default" overlay="overlay-identifier" />
<core:icon identifier="my-icon-identifier" size="large" overlay="overlay-identifier" />
Impact
======
No impact
.. index:: PHP-API, Backend, Fluid
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _feature-68746:
======================================================
Feature: #68746 - Add annotation for CLI only commands
======================================================
See :issue:`68746`
Description
===========
The PHPDoc annotation `@cli` was added to indicate Extbase CommandController
commands to be usable on CLI only.
In general each defined CommandController can be selected within the Extbase
CommandController Task in the scheduler.
For some commands like `extbase:help:help` running in a scheduler task is not
wanted or needed. Now those commands can be excluded from the scheduler command selection.
Impact
======
Extbase `CommandController` commands annotated with `@cli` are not shown as
command in the scheduler task.
.. index:: CLI, ext:extbase
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _feature-68756:
==============================================
Feature: #68756 - Add config "base" to stdWrap
==============================================
See :issue:`68756`
Description
===========
The following function was updated and added with a new optional parameter $base:
`TYPO3\CMS\Core\Utility\GeneralUtility::formatSize($sizeInBytes, $labels = '', $base = 0)`
This affects the function:
`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_bytes`
Until now it was not possible to set the base parameter via TypoScript if you add custom labels.
Impact
======
The ability to set the base (1000 or 1024) via TypoScript configuration has been added.
With the `base` property it can be defined whether to use a base of 1000 or 1024 to calculate with
Thus::
bytes.labels = " | K| M| G"
bytes.base = 1000
.. index:: PHP-API, TypoScript
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _feature-68757:
================================================================================
Feature: #68757 - Provide untouched newPassword in felogin password_changed hook
================================================================================
See :issue:`68757`
Description
===========
The new parameter `newPasswordUnencrypted` in the EXT:felogin password_changed
hook won't be salted if EXT:saltedpaswords is enabled. It is now possible to
work with the real new password.
.. index:: PHP-API, ext:saltedpasswords, ext:felogin
@@ -0,0 +1,20 @@
.. include:: /Includes.rst.txt
.. _feature-68773:
======================================================================================
Feature: #68773 - Show a special image for official distributions in Extension Manager
======================================================================================
See :issue:`68773`
Description
===========
For official distributions a special image is displayed in the "Get preconfigured
distribution" list. So it is easier now to distinguish the official distributions
from others.
.. index:: Backend, ext:extensionmanager
@@ -0,0 +1,19 @@
.. include:: /Includes.rst.txt
.. _feature-68804:
================================================================
Feature: #68804 - Colored output for CLI-relevant error messages
================================================================
See :issue:`68804`
Description
===========
Calling `typo3/cli_dispatch.phpsh` via the command line will now show a
colored error message when an invalid or no CLI key as first parameter is given.
.. index:: CLI
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-68837:
===================================================
Feature: #68837 - Closures for Command Line Scripts
===================================================
See :issue:`68837`
Description
===========
For registering new command line scripts through the CLI API ("cliKey"), it is
now possible to use PHP closures instead of reference to PHP scripts.
Example usage inside ext_localconf.php:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys']['myclikey'] = array(
function() {
$controller = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Acme\MyExtension\CommandLineTool::class);
$controller->main();
},
'_CLI_lowlevel'
);
.. index:: PHP-API, CLI
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _feature-69095:
======================================================
Feature: #69095 - Introduce icon state for IconFactory
======================================================
See :issue:`69095`
Description
===========
A state (default or disabled) for icons has been added. The state "disabled" marks an icon as disabled and shows the icon with 50% opacity.
Use an icon
-----------
The method `IconFactory::getIcon()` has now a fourth parameter for the state.
The `\TYPO3\CMS\Core\Type\Icon\IconState` class provides only the following constants for icon states:
* `State::STATE_DEFAULT` which currently means 100% opacity
* `State::STATE_DISABLED` which currently means 50% opacity
The states may change in future, so please make use of the constants for an unified layout.
.. code-block:: php
$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
$iconFactory->getIcon($identifier, Icon::SIZE_SMALL, $overlay, IconState::cast(IconState::STATE_DEFAULT))->render();
ViewHelper
----------
The core provides a Fluid ViewHelper which makes it really easy to use icons within a Fluid view.
This ViewHelper has an argument for the new state parameter.
.. code-block:: html
{namespace core=TYPO3\CMS\Core\ViewHelpers}
<core:icon identifier="my-icon-identifier" state="disabled" />
.. index:: PHP-API, Backend, Fluid
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _feature-69119:
===========================================================
Feature: #69119 - Add a basic search to the filelist module
===========================================================
See :issue:`69119`
Description
===========
A basic recursive file search by file name has been added to be able to search
for files in the file list module like it was possible with EXT:dam.
The search happens recursively from the currently chosen folder in the folder
tree. This way it is possible to search whole mount points or just single folders
with a lot of files.
The search results will be displayed similar to the regular file list although
some features of the regular list view are missing. There is no possibility to
order the search results yet. Also the buttons for localization and clipboard
commands are missing in this first implementation. Regular file command links
like editing, renaming and deleting are already implemented. By default the
search results are ordered by the file identifier, i.e. the file path ascending
from A-Z.
.. index:: Backend, FAL
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-69389:
===============================================
Feature: #69389 - Add spinning feature for icon
===============================================
See :issue:`69389`
Description
===========
The Icon API has now a support for spinning icons. While registering an icon a new property `spinning` is available:
.. code-block:: php
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon(
'my-spinning-icon',
\TYPO3\CMS\Core\Imaging\IconProvider\FontawesomeIconProvider::class,
array(
'name' => 'times',
'spinning' => TRUE
)
);
Impact
======
Icons can now be animated.
.. index:: PHP-API, Backend
@@ -0,0 +1,116 @@
.. include:: /Includes.rst.txt
.. _feature-69401:
========================================================================
Feature: #69401 - Adopt ext:form to support the Extbase/ Fluid MVC stack
========================================================================
See :issue:`69401`
Description
===========
Short summery
-------------
The form extension - including the custom data model, controller logic,
property validation, views and templating - has been adopted to support
the Extbase/ Fluid MVC stack. This allows better customization and
control of the generated behavior and markup by simply modifying Fluid
templates or utilizing own custom view helper logic. At the same time
the rewrite must not break current setups, i.e. the frontend rendering
must be as compatible as possible.
Details
-------
Fluid Rendering
^^^^^^^^^^^^^^^
The rendering of the frontend output is based on Fluid. Form relies on
the native Fluid viewhelpers of the core and ships 2 new viewhelpers
for optimal rendering of the SELECT object including the support of
OPTGROUP objects. Furthermore a viewhelper is included to optimize the
output of text mails.
To support existing setups a compatibility mode is introduced. The mode
is activated by default. This has no impact on the rendering as long as
no "old" TypoScript settings (like .layout =) are present. If old
rendering settings are used a compatibility theme is loaded which
guarantees maximum backwards compatibility including all the different
wrap-abilities like `containerWrap` and `elementWrap`.
For new installations it is recommended to switch off the compatibility
mode and use own Fluid templates to customize the output.
For each form object and view a Fluid partial is available. There are 3
views: the form itself (show), the confirmation page (confirmation) and
the email (postProcessor/ mail). The patch allows to customize the
frontend output for every single view, e.g. one can have a custom Fluid
partial for the BUTTON object of the confirmation view.
The `partialRootPath` can be overridden or extended to customize the form
objects on a global scope. Furthermore it is possible to set a partial
path for each form element on a local scope.
.. code-block:: typoscript
10 = BUTTON
10 {
label = My button
name = myButton
partialPath = FlatElements/MyButton
}
The Fluid rendering would look for a MyButton.html located in the
defined `partialRootPath`.
In addition it is now possible to decide if an element should be
rendered for a specific view. The visualisation can be adopted by using
the TypoScript settings `visibleInShowAction`, `visibleInConfirmationAction`
and `visibleInMail`. As an example, this is utilized to hide the FIELDSET
object on the confirmation page which was the default behaviour in
earlier versions of form.
Extensibility
^^^^^^^^^^^^^
It is now possible to register custom form objects and attributes
easily only by using TypoScript and Fluid. Form attributes can now be
cObjects and use stdWrap. This is only possible if the form was not
designed within the form wizard.
Furthermore 2 new signal slots are implemented to allow the
manipulation of the form objects and the submitted data.
Validation
^^^^^^^^^^
The validators are now using the extbase property mapping validation
process.
Additional information
^^^^^^^^^^^^^^^^^^^^^^
The session handling was dropped since it was unstable (see #58765). Now
form relies on the concepts of Extbase.
The unit tests have been adopted to reflect the code changes.
Future
^^^^^^
Further patches are needed to adopt the form wizard. The wizard still
works as it used to after applying this patch but it is not able to
reflect the new features like choosing a partial path for a single
element.
Another patch will take care of the documentation.
A few more patches will come which will fix some issues regarding the
validators and filters.
.. index:: ext:form, Fluid, ext:extbase, TypoScript
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _feature-69409:
=============================================================================
Feature: #69409 - ext:form allows value attribute for OPTION object in wizard
=============================================================================
See :issue:`69409`
Description
===========
Now it is possible to add a value to the OPTION object using the
wizard. Furthermore the table within the field options of the
SELECT configuration has been improved. There were no labels shown
which has been fixed now.
.. index:: ext:form, Backend
@@ -0,0 +1,27 @@
.. include:: /Includes.rst.txt
.. _feature-69416:
========================================================================
Feature: #69416 - Plugins (AbstractPlugin) can load custom language file
========================================================================
See :issue:`69416`
Description
===========
:php:`AbstractPlugin::pi_loadLL()` takes an optional argument specifying path to a
language file. It allows placing language files in other paths like in Extbase
structure "Resources/Private/Language". Previously language file had to be
located in the directory set in the `scriptRelPath` property.
Impact
======
Possibility to put language label files in other paths.
.. index:: PHP-API, Frontend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _feature-69459:
==================================================================
Feature: #69459 - Show tt_content preview in page module via Fluid
==================================================================
See :issue:`69459`
Description
===========
A new PageTSconfig option allows to render a preview of a single content element in the Backend via Fluid.
The following option allows to override the default output of a content element via PageTSconfig:
.. code-block:: typoscript
mod.web_layout.tt_content.preview.media = EXT:site_mysite/Resources/Private/Templates/Preview/Media.html
All content elements with CType "media" will then be rendered by the Fluid Template which can be rendered like:
.. code-block:: html
<h4>{header}</h4>
<f:format.crop maxCharacters="200">{bodytext}</f:format.crop>
All properties of the tt_content record are available in the template directly.
Any data of the flexform field `pi_flexform` is available with the property `pi_flexform_transformed` as an array.
.. note::
If a PHP hook already is set to render the element, it will take precedence over the Fluid-based preview.
.. index:: TSConfig, Fluid, FlexForm
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-69496:
============================================================================
Feature: #69496 - Extract title from PDF when indexing in ext:indexed_search
============================================================================
See :issue:`69496`
Description
===========
Indexed search is now able to natively extract the title when indexing PDF documents.
Impact
======
The title of indexed PDF documents is now extracted.
.. index:: Frontend, ext:indexed_search
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-69512:
===============================================================
Feature: #69512 - Support \*.typoscript files as text file type
===============================================================
See :issue:`69512`
Description
===========
The file type **typoscript** has been added to the list of text file types.
Impact
======
Files with the type **typoscript** can now be edited through the file list module.
.. index:: TypoScript, Backend
@@ -0,0 +1,80 @@
.. include:: /Includes.rst.txt
.. _feature-69543:
================================================================================
Feature: #69543 - Introduced $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext']
================================================================================
See :issue:`69543`
Description
===========
Now we got the `RendererRegistry` with the `VideoTagRenderer`, `AudioTagRenderer` and `MediaViewHelper` in the
core we needed also a way to define a list of file extensions of the files that can be handled by these. This list
can then be used in the TCA for allowing sys_file_references to these files.
.. code-block:: php
// Comma list of file extensions perceived as media files by TYPO3.
// Lowercase and no spaces between
$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'] = 'gif,jpg,jpeg,bmp,png,pdf,svg,ai,mov,avi';
TCA example:
------------
.. code-block:: php
'media' => array(
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.media',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('media', array(
'foreign_types' => array(
'0' => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
)
)
), $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'])
),
Extending this list:
--------------------
If you want to extend this list you can add the desired extension name to list in the `ext_localconf.php` of your extension.
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'] .= ',myext';
.. index:: TCA, Backend, LocalConfiguration
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _feature-69568:
============================================
Feature: #69568 - FormEngine data processing
============================================
See :issue:`69568`
Description
===========
Warning: The `FormEngine` data structure will change in the future and extensions must
not rely on array or class structures at the moment.
The FormEngine construct to render records has been split to two main parts where the first
data processing part takes care of gathering and processing all data needed for the second part
to render final form data.
The data processing is done via `FormDataCompiler` that returns a data array that can be given
to the outer most render container. The array contains all main data required by the
render part like final `TCA` as well as the processed database row.
Extensions can change the data processing by registering additional items in the data processing
chain. For casual `TCA` based database records, the `FormDataGroup` `TcaDatabaseRecord` is
used to define relevant data provider within
`$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord']`. Additional
data provider can be added at specific positions using the `depends` and `before` keywords
relative to other providers.
.. index:: PHP-API, Backend, TCA
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _feature-69602:
==================================================================
Feature: #69602 - Simplify handling of backend layouts in frontend
==================================================================
See :issue:`69602`
Description
===========
To avoid complex TypoScript for integrators, the handling of backend layouts has
been simplified for the frontend.
To get the correct backend layout, the following TypoScript code can be used:
.. code-block:: typoscript
page.10 = FLUIDTEMPLATE
page.10 {
file.stdWrap.cObject = CASE
file.stdWrap.cObject {
key.data = pagelayout
default = TEXT
default.value = EXT:sitepackage/Resources/Private/Templates/Home.html
3 = TEXT
3.value = EXT:sitepackage/Resources/Private/Templates/1-col.html
4 = TEXT
4.value = EXT:sitepackage/Resources/Private/Templates/2-col.html
}
}
Using `data = pagelayout` is the same as using as
.. code-block:: typoscript
field = backend_layout
ifEmpty.data = levelfield:-2,backend_layout_next_level,slide
ifEmpty.ifEmpty = default
.. index:: TypoScript, Frontend

Some files were not shown because too many files have changed in this diff Show More