TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-39721:
|
||||
|
||||
=========================================================
|
||||
Breaking: #39721 - Prototype.js and Scriptaculous removed
|
||||
=========================================================
|
||||
|
||||
See :issue:`39721`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The JavaScript libraries prototype.js and scriptaculous have been removed from the TYPO3 Core.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any TYPO3 Extension that uses prototype.js or scriptaculous for usage in the Backend or Frontend will not work anymore.
|
||||
|
||||
The TypoScript properties `page.javascriptLibs.Prototype` and `page.javascriptLibs.Scriptaculous.*` have been removed
|
||||
and have no effect anymore, leading to not including prototype in websites where this TypoScript option is set.
|
||||
This might lead to broken websites when updating.
|
||||
|
||||
The shipped Fluid ViewHelper for backend modules does no longer have the according properties anymore and will throw a fatal
|
||||
error:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<f:be.container loadPrototype="false" loadScriptaculous="false" scriptaculousModule="someModule,someOtherModule">
|
||||
|
||||
Using the PageRenderer directly in any module, and calling one of the related methods will result in a fatal error.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
PageRenderer->setPrototypePath()
|
||||
PageRenderer->setScriptaculousPath()
|
||||
PageRenderer->getPrototypePath()
|
||||
PageRenderer->getScriptaculousPath()
|
||||
PageRenderer->loadPrototype()
|
||||
PageRenderer->loadScriptaculous()
|
||||
|
||||
Including the JavaScript files in a custom extension or custom frontend without using the API will lead to a 404 error
|
||||
when referencing one of the files.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances that use prototype.js or scriptaculous in the Frontend.
|
||||
|
||||
Instances with third-party extensions that
|
||||
|
||||
require these libraries or set one of the options in the mentioned ViewHelper.
|
||||
|
||||
Instances that link to one of the JavaScript files directly.
|
||||
|
||||
Instances that use the PageRenderer API directly and use on of the methods above.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
The preferred substitution is jQuery and RequireJS that are loaded by default in any TYPO3 Backend module, if any
|
||||
third-party code is needed based on prototype and/or scriptaculous. Alternatively, it is possible to ship a separate
|
||||
prototype.js and scriptaculous library in a third-party extension if no migration is possible with jQuery.
|
||||
|
||||
|
||||
.. index:: JavaScript, TypoScript, Frontend, Backend
|
||||
@@ -0,0 +1,69 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-52705:
|
||||
|
||||
=======================================================
|
||||
Breaking: #52705 - Default log configuration is changed
|
||||
=======================================================
|
||||
|
||||
See :issue:`52705`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
FileWriter behavior has changed
|
||||
-------------------------------
|
||||
|
||||
The FileWriter of the logging Framework now appends a hash to its default log file which is used when no log file name
|
||||
is provided in the configuration.
|
||||
|
||||
The new default log file might now look like this (the hash depends on the current encryption key):
|
||||
|
||||
::
|
||||
|
||||
typo3temp/logs/typo3_7ac500bce5.log
|
||||
|
||||
|
||||
Default configuration has changed
|
||||
---------------------------------
|
||||
|
||||
For security reasons we want the default log file of TYPO3 to contain a random hash to make guessing the file name harder.
|
||||
|
||||
Therefore the :code:`logFile` configuration is removed for the default :code:`FileWriter` configuration.
|
||||
|
||||
Additionally the "deprecated" :code:`FileWriter` configuration is removed because it is not used by the core.
|
||||
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If the log file configuration is **not** overwritten the TYPO3 default log file will change from
|
||||
:code:`typo3temp/logs/typo3.log` to :code:`typo3temp/logs/typo3_<hash>.log`.
|
||||
|
||||
Installations with Extensions making use of the changed / removed log configurations might break.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All instances that expect the default log file to be :code:`typo3temp/logs/typo3.log` for some reason.
|
||||
|
||||
All instances that expect the :code:`logFile` configuration to be present in the :code:`writerConfiguration` for some reason.
|
||||
|
||||
All instances that use the "deprecated" log configuration in their Extensions.
|
||||
|
||||
All instances that use Extensions which extend the FileWriter and access the :code:`$defaultLogFile` class property
|
||||
which is replaced by :code:`$defaultLogFileTemplate` and the :code:`getDefaultLogFileName()` method.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Adjust the log configuration according to your needs in your :code:`LocalConfiguration.php`.
|
||||
|
||||
Adjust any Extension code affected by the changes if needed.
|
||||
|
||||
|
||||
.. index:: PHP-API, LocalConfiguration
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-55759:
|
||||
|
||||
==========================================================
|
||||
Breaking: #55759 - HTML in link titles not working anymore
|
||||
==========================================================
|
||||
|
||||
See :issue:`55759`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
By introducing proper handling of double quotes in link titles (TypoLink fields) the processing of the link title is adjusted.
|
||||
Escaping will be done automatically now.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Existing link titles, which contain HTML escape sequences, will not be shown correctly anymore in Frontend.
|
||||
|
||||
Example: A link title `Some "special" title` will be output as `Some &quot;special&quot; title`
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation using links with titles containing HTML escape sequences like `"` or `>`
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Change the affected link titles to contain the plain characters, the correct encoding will be taken care of automatically.
|
||||
|
||||
Example: `Some "special" title`
|
||||
|
||||
If you need to encode a TypoLink manually in code, use the `TypoLinkCodecService` class, which provides a convenient way
|
||||
to encode a TypoLink from its fragments.
|
||||
|
||||
|
||||
.. index:: Frontend, Backend
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-56133:
|
||||
|
||||
==========================================================
|
||||
Breaking: #56133 - New BE user permission "Files: replace"
|
||||
==========================================================
|
||||
|
||||
See :issue:`56133`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A new feature was introduced to replace files in the file list. For this feature an new permission was introduce "Files: replace".
|
||||
This permission is now also checked when a BE user uploads a file with the same name.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
BE users need the permission "Files: replace" before they are allowed to replace a file by uploading a file with the same name.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
An upgrade wizard was added to set this permission for all BE users that already are allowed to write files as this was the old permissions check.
|
||||
|
||||
|
||||
.. index:: FAL, Backend
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-56951:
|
||||
|
||||
===========================================================
|
||||
Breaking: #56951 - Remove unused methods in PagePositionMap
|
||||
===========================================================
|
||||
|
||||
See :issue:`56951`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Remove unused methods in PagePositionMap
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
A fatal error will be thrown if one of the removed methods is used.
|
||||
The removed methods are:
|
||||
|
||||
`insertQuadLines`
|
||||
`JSimgFunc`
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations that use one of the removed methods.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use proper styling for a tree list.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-63838:
|
||||
|
||||
===================================================================
|
||||
Breaking: #63838 - Changed OpcodeCacheUtility being a service class
|
||||
===================================================================
|
||||
|
||||
See :issue:`63838`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `OpcodeCacheUtility` has been migrated to a service class called `OpcodeCacheService`, all methods are not static anymore.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Calling `OpcodeCacheUtility` will throw a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All third-party extensions using the utility class will be affected.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Create an instance of `OpcodeCacheService` and call its method by the object operator `->`.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
GeneralUtility::makeInstance(OpcodeCacheService::class)->clearAllActive($cacheEntryPathAndFilename);
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-64200:
|
||||
|
||||
=================================================================
|
||||
Breaking: #64200 - Custom [cObject].cache.* TypoScript evaluation
|
||||
=================================================================
|
||||
|
||||
See :issue:`64200`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `stdWrap.cache.` property is now available as first-class function to all
|
||||
content objects. This skips the rendering even for content objects that evaluate
|
||||
`stdWrap` after rendering (e.g. `COA`).
|
||||
|
||||
Additionally, stdWrap support is added to key, lifetime and tags.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If you've previously used the `cache.` property in your custom cObject,
|
||||
this will now fail, because `cache.` is unset to avoid double caching.
|
||||
|
||||
`stdWrap.cache` continues to exist and can be used as before. However
|
||||
the top level `stdWrap` of certain cObjects (e.g. `TEXT` cObject)
|
||||
will not evaluate `cache.` as part of `stdWrap`, but before starting
|
||||
the rendering of the cObject. In conjunction the storing will happen
|
||||
after the `stdWrap` processing right before the content is returned.
|
||||
|
||||
Top level `cache.` will not evaluate the hook
|
||||
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore']`
|
||||
any more.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations with custom `cObject` implementations which make use of the `cache.` property.
|
||||
|
||||
Installations that purposely rely on the content object being evaluated before the cache is tried.
|
||||
|
||||
Installations that rely on the order of the `cache.` evaluation.
|
||||
|
||||
Installations that make use of the hook
|
||||
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore']`
|
||||
on top level `cache.`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Rename your property or rely on the Core implementation.
|
||||
|
||||
If you need `cache.` being evaluated as part of `stdWrap`, please move it down one level
|
||||
by writing `stdWrap.cache` instead.
|
||||
|
||||
If you used the hook
|
||||
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore']`,
|
||||
please use `stdWrap` and the available hooks inside `stdWrap` to achieve your goal.
|
||||
|
||||
|
||||
.. index:: PHP-API, TypoScript, Frontend
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-64714:
|
||||
|
||||
=============================================================
|
||||
Breaking: #64714 - Catch exceptions for inaccessible storages
|
||||
=============================================================
|
||||
|
||||
See :issue:`64714`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Changed `\TYPO3\CMS\Core\Resource\Exception\ResourcePermissionsUnavailableException` to extend
|
||||
from `\TYPO3\CMS\Core\Resource\Exception` instead of `\RuntimeExtension`
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If a call to `\TYPO3\CMS\Core\Resource\Driver\LocalDriver->getPermissions()` throws an exception and
|
||||
your extension catches `\RuntimeExtension` it breaks on permission read errors.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
To write a compatible extension you can do following in your catch block:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
} catch(\RuntimeException $e) {
|
||||
// Do exception handling
|
||||
} catch(\TYPO3\CMS\Core\Resource\Exception\ResourcePermissionsUnavailableException $e) {
|
||||
// Do same exception handling
|
||||
}
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL, Backend
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-65305:
|
||||
|
||||
====================================================
|
||||
Breaking: #65305 - DriverInterface has been extended
|
||||
====================================================
|
||||
|
||||
See :issue:`65305`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `getFolderInFolder()` and `getFileInFolder()` functions have been added to `DriverInterface`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any FAL driver extension will stop working due to the change in the interface.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation with a custom FAL driver, like WebDAV or Dropbox.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
The functions `getFolderInFolder()` and `getFileInFolder()` must be added to the custom FAL driver.
|
||||
A non-hierarchical driver needs to throw a "not implemented" exception when calling these functions.
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL, Backend
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-66602:
|
||||
|
||||
=========================================================
|
||||
Breaking: #66602 - Check jumpUrl referer has been removed
|
||||
=========================================================
|
||||
|
||||
See :issue:`66602`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The following method has been removed:
|
||||
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
TypoScriptFrontendController::checkJumpUrlReferer()
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Calls to this method will result in a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances with third-party extensions calling this method.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend, ext:jumpurl
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67545:
|
||||
|
||||
======================================================
|
||||
Breaking: #67545 - PreFileAdd signal behaviour changed
|
||||
======================================================
|
||||
|
||||
See :issue:`67545`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In order to check whether an uploaded file exists already before uploading or to determine user preferences about present
|
||||
files only when needed, the final name of the file is needed. As the final name can be altered by the `PreFileAdd` signal,
|
||||
which originally always received the temporary uploaded file path as parameter, the signal will now receive an empty string
|
||||
in `$sourceFilePath`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All `PreFileAdd` slot methods that depend on the `$sourceFilePath` param must be adapted to handle the new empty string value.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All extensions that use the `PreFileAdd` signal and depend on the `$sourceFilePath` param.
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL, Backend
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67546:
|
||||
|
||||
=======================================================================
|
||||
Breaking: #67546 - Cleanup Flash message rendering in FlashMessageQueue
|
||||
=======================================================================
|
||||
|
||||
See :issue:`67546`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The rendering of flash messages has changed when using the view helper.
|
||||
Now the rendering output of `\TYPO3\CMS\Core\Messaging\FlashMessageQueue::renderFlashMessages()`
|
||||
is adapted to being exactly the same.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions using the rendered output of `\TYPO3\CMS\Core\Messaging\FlashMessageQueue::renderFlashMessages()`
|
||||
and in addition using HTML tags in flash messages for styling purposes will get their HTML flash message output
|
||||
properly HTML encoded. Thus the HTML tags will be visible in the rendered flash message output.
|
||||
|
||||
Since `\TYPO3\CMS\Backend\Template\DocumentTemplate` also uses this rendering type, modules using this class
|
||||
will also be affected.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All extensions that use modules with `\TYPO3\CMS\Backend\Template\DocumentTemplate` or are using
|
||||
`\TYPO3\CMS\Core\Messaging\FlashMessageQueue::renderFlashMessages()` directly.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Remove all HTML from flash messages.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67557:
|
||||
|
||||
======================================================
|
||||
Breaking: #67557 - Language file of Opendocs was moved
|
||||
======================================================
|
||||
|
||||
See :issue:`67557`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The language file :file:`locallang_opendocs.xlf` of EXT:opendocs has been moved to
|
||||
:file:`Resources/Private/locallang.xlf`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Inclusion of the file via `$this->getLanguageService()->includeLLFile()` or usage in
|
||||
`<f:translate key="LLL:EXT:opendocs/locallang_opendocs.xlf:foobar" />.` will fail.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Every extension relying on the existence of :file:`locallang_opendocs.xlf` will be affected.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use :file:`Resources/Private/Language/locallang.xlf`, if required.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, ext:opendocs
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67565:
|
||||
|
||||
=============================================================
|
||||
Breaking: #67565 - Deprecated backend related methods removed
|
||||
=============================================================
|
||||
|
||||
See :issue:`67565`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The following deprecated methods have been removed:
|
||||
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
DocumentTemplate::formWidthText()
|
||||
PageLayoutView::getBackendLayoutConfiguration()
|
||||
PageLayoutView::wordWrapper()
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Calls to these methods will result in a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances with third-party extensions calling one of these methods.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,63 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67577:
|
||||
|
||||
================================================
|
||||
Breaking: #67577 - rte_enabled and flag handling
|
||||
================================================
|
||||
|
||||
See :issue:`67577`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Content elements of type `text` and `text with image` contained a field "RTE enabled" that
|
||||
could be unchecked to disable the rich text editor. This field has been removed together with the
|
||||
`TCA` richtext `flag` handling.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The field is removed from database and the flag information is lost.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All instances will no longer show the "RTE enabled" field below `text` and `text with image`
|
||||
content elements below the text field, the `TCA` `flag` is obsolete, see example below.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
A typical rich text configuration in `TCA` looked like:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
'content' => array(
|
||||
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.text',
|
||||
'config' => array(
|
||||
'type' => 'text',
|
||||
'cols' => '48',
|
||||
'rows' => '5',
|
||||
'wizards' => array(
|
||||
'RTE' => array(
|
||||
...
|
||||
)
|
||||
)
|
||||
),
|
||||
'defaultExtras' => 'richtext:rte_transform[flag=otherField|mode=ts_css]',
|
||||
),
|
||||
|
||||
|
||||
With this configuration RTE was only rendered if `otherField` had the value 1. This flag is obsolete now:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
'defaultExtras' => 'richtext:rte_transform[mode=ts_css]',
|
||||
|
||||
|
||||
.. index:: TCA, RTE, Backend
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67646:
|
||||
|
||||
============================================================
|
||||
Breaking: #67646 - PHP library inclusion in frontend removed
|
||||
============================================================
|
||||
|
||||
See :issue:`67646`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The PHP library inclusion into the TYPO3 Frontend has been removed without substitution.
|
||||
Previously it was used to include plain PHP scripts during the Frontend request.
|
||||
|
||||
The method `PageGenerator::getIncFiles()` has been removed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The TypoScript options `config.includeLibrary` and `config.includeLibs` have no effect anymore.
|
||||
Any calls to `PageGenerator::getIncFiles()` will result in a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation using the TypoScript options named above.
|
||||
Any third party code using the method named above.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use hooks during the Frontend set up to execute custom PHP code.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend, TypoScript
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67654:
|
||||
|
||||
===========================================================
|
||||
Breaking: #67654 - Remove $GLOBALS[FILEICONS] functionality
|
||||
===========================================================
|
||||
|
||||
See :issue:`67654`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The global variable `$GLOBALS['FILEICONS']` was in use for displaying icons before the sprite icons for files were introduced in TYPO3 v4.4.
|
||||
|
||||
The `$FILEICONS` has been removed completely as well as the function call `BackendUtility::getFileIcon()`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any usage on `$GLOBALS['FILEICONS']` will have no effect anymore.
|
||||
|
||||
Any calls on `BackendUtility::getFileIcon()` will result in a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances that populate or make use of `$GLOBALS['FILEICONS']` or installations with extensions calling `BackendUtility::getFileIcon()` directly.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use sprite icons via `IconUtility::getSpriteIconForFile()`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67749:
|
||||
|
||||
=============================================================
|
||||
Breaking: #67749 - Force class auto loading for various hooks
|
||||
=============================================================
|
||||
|
||||
See :issue:`67749`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Some hook registrations now rely on class auto loading.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Hooks may not be called any longer if class auto loader can not find the class.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances using
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals']
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['setup']['accessLevelCheck']
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Make sure the hook classes are found with the casual auto loading mechanism
|
||||
that is also used for all other PHP classes. The hook registration can be
|
||||
simplified to an empty value, example:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals'][\TYPO3\CMS\Saltedpasswords\Evaluation\FrontendEvaluator::class] = '';
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67753:
|
||||
|
||||
================================================
|
||||
Breaking: #67753 - Drop "Show secondary options"
|
||||
================================================
|
||||
|
||||
See :issue:`67753`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
When editing records, the checkbox at the bottom "Show secondary options (palettes)" has been dropped, palettes are now
|
||||
always shown and the collapse buttons are no longer rendered.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
|
||||
PageTSconfig
|
||||
------------
|
||||
|
||||
Setting `options.enableShowPalettes` has no effect anymore and can be removed from `PageTSconfig`.
|
||||
|
||||
|
||||
TCA
|
||||
---
|
||||
|
||||
Setting `canNotCollapse` in `ctrl` and `palettes` section are obsolete and can be dropped:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TCA']['aTable']['ctrl']['canNotCollapse'] = 1; // Obsolete
|
||||
$GLOBALS['TCA']['aTable']['palettes']['aPaletteName']['canNotCollapse'] = 1; // Obsolete
|
||||
|
||||
|
||||
PHP
|
||||
---
|
||||
|
||||
The following method has been dropped. If an extension calls it, a PHP fatal error will be thrown.
|
||||
This was an internal method and external usage is unlikely:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
\TYPO3\CMS\Backend\Controller\EditDocumentController->functionMenus()
|
||||
|
||||
|
||||
The following properties have been dropped, calling those may trigger a PHP warning level error, external usage is unlikely:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
\TYPO3\CMS\Backend\Controller\EditDocumentController->MOD_MENU
|
||||
\TYPO3\CMS\Backend\Controller\EditDocumentController->MOD_SETTINGS
|
||||
\TYPO3\CMS\Backend\Form\FormEngine->palettesCollapsed
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
In the rare case that an extension uses one of the above methods or properties, a fatal PHP error may be triggered.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
The above properties can be dropped, the `PageTS` and `TCA` settings have no effect anymore.
|
||||
|
||||
|
||||
.. index:: TCA, TSConfig, PHP-API, Backend
|
||||
@@ -0,0 +1,42 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67792:
|
||||
|
||||
==========================================================
|
||||
Breaking: #67792 - Class aliases of Indexed Search removed
|
||||
==========================================================
|
||||
|
||||
See :issue:`67792`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The class aliases of the Indexed Search extension are removed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
These class aliases are not available anymore:
|
||||
|
||||
- `tx_indexedsearch`
|
||||
- `Tx_IndexedSearch_Controller_SearchController`
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any third party code using the old class aliases.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use the new class names:
|
||||
|
||||
- `\TYPO3\CMS\IndexedSearch\Controller\SearchFormController`
|
||||
- `\TYPO3\CMS\IndexedSearch\Controller\SearchController`
|
||||
|
||||
|
||||
.. index:: PHP-API, ext:indexed_search
|
||||
@@ -0,0 +1,90 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67811:
|
||||
|
||||
==========================
|
||||
Breaking: #67811 - Rte API
|
||||
==========================
|
||||
|
||||
See :issue:`67811`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The RTE implementation was based on the main classes `\TYPO3\CMS\Backend\Rte\AbstractRte`,
|
||||
`\TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase` and `\TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi`. These
|
||||
three main API were removed or changed method signatures and internal method calls.
|
||||
|
||||
The functionality to render RTE standalone and out of a context of `FormEngine` was dropped.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Main API changes
|
||||
----------------
|
||||
|
||||
* Method `TYPO3\CMS\Backend\Utility\BackendUtility::RTEgetObj()` is deprecated and no longer used.
|
||||
`FormEngine` now creates a `RichTextElement` with `NodeFactory` and `makeInstance()`, the
|
||||
created object is not a singleton but a prototype.
|
||||
|
||||
* With the deprecation of `RTEgetObj` method `transformContent` from `AbstractRte` has been inlined to
|
||||
`DataHandler`.
|
||||
|
||||
* Method `isAvailable` from `AbstractRte` has been dropped. Every valid browser and browser version
|
||||
for TYPO3 CMS 7 can render the default richtext editor. Custom checks may be implement via
|
||||
`NodeResolverInterface` in `FormEngine`.
|
||||
|
||||
* Property `RTE_errors` in `TYPO3\CMS\Core\Authentication\BackendUserAuthentication` has been dropped along
|
||||
with the `RTEgetObj()` deprecation.
|
||||
|
||||
|
||||
RTE registration
|
||||
----------------
|
||||
|
||||
* Different richtext implementations can no longer register in `$GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_reg']`.
|
||||
Instead, registration must be done in `FormEngine` via `NodeFactory` API, the method `drawRTE` has been dropped.
|
||||
|
||||
* Transformations are not available via `AbstractRte` anymore, hooks within `RteHtmlParser` can
|
||||
be used for custom transformations.
|
||||
|
||||
|
||||
PHP classes
|
||||
-----------
|
||||
|
||||
* `\TYPO3\CMS\Backend\Rte\AbstractRte` has been dropped.
|
||||
|
||||
* `\TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase` has been dropped and its functionality was moved to
|
||||
`\TYPO3\CMS\Rtehtmlarea\Form\Element\RichtextElement`. All methods and properties except
|
||||
the main entry method `render()` used by `FormEngine` are protected.
|
||||
|
||||
* `\TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi` has been refactored. Method `main()` receives
|
||||
a configuration array instead of an instance of the parent object. Some methods were dropped
|
||||
and are no longer called.
|
||||
|
||||
|
||||
RTE Plugin Configuration
|
||||
------------------------
|
||||
|
||||
* Parameter `$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['anExtensionKey']['plugins']['aPluginName']['addIconsToSkin']`
|
||||
was dropped, plugin property `relativePathToSkin` is no longer evaluated.
|
||||
|
||||
* A couple of helper methods were added to `RteHtmlAreaApi`
|
||||
|
||||
* This API may get further changes in the future.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Extensions that extend one of the above mentioned extensions or API.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Adapt the code using these methods.
|
||||
|
||||
|
||||
.. index:: PHP-API, RTE, Backend
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67815:
|
||||
|
||||
======================================================================
|
||||
Breaking: #67815 - Remove tceforms.js because we don't need it anymore
|
||||
======================================================================
|
||||
|
||||
See :issue:`67815`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Since the value slider is based on bootstrap, the last code from `tceforms.js` is not needed anymore.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All instances which include `sysext/backend/Resources/Public/JavaScript/tceforms.js` will produce a 404 Not Found error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All instances which include `sysext/backend/Resources/Public/JavaScript/tceforms.js`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Remove all references to the file.
|
||||
|
||||
|
||||
.. index:: JavaScript, Backend
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67824:
|
||||
|
||||
===========================================
|
||||
Breaking: #67824 - typo3/ext folder removed
|
||||
===========================================
|
||||
|
||||
See :issue:`67824`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The folder `typo3/ext` does not exist in the default core package anymore.
|
||||
The functionality to have global extensions in this directory is not touched.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
In case global extensions are moved to this directory during
|
||||
deployment or rollout, the directory must be created before, now.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances that use global extensions within `typo3/ext`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Create directory `typo3/ext` before moving extensions into this folder.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67825:
|
||||
|
||||
====================================================================
|
||||
Breaking: #67825 - Remove colorpicker options "dim" and "tableStyle"
|
||||
====================================================================
|
||||
|
||||
See :issue:`67825`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
`TCA` colorpicker options "dim" and "tableStyle" have been removed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The TCA options won't have any effect anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any extension that has a colorpicker wizard configured in `TCA` and uses `dim`
|
||||
or `tableStyle` options is effected.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Both options can de safely removed.
|
||||
|
||||
|
||||
.. index:: TCA, Backend
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67890:
|
||||
|
||||
=========================================================================================
|
||||
Breaking: #67890 - Redesign FluidTemplateDataProcessorInterface to DataProcessorInterface
|
||||
=========================================================================================
|
||||
|
||||
See :issue:`67890`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `FluidTemplateDataProcessorInterface` introduced with #66907 has been refactored to `DataProcessorInterface`.
|
||||
|
||||
This decouples it from the Fluid StandaloneView and makes the ContentObjectRenderer available in the process method
|
||||
so the different DataProcessor classes do no have to initiate it on their own.
|
||||
Instead of manipulating the `$data` property of the `ContentObjectRenderer` a new key/value store can be filled/manipulated
|
||||
by the different dataProcessor classes.
|
||||
|
||||
The new interface expects the following `process()` method:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
/**
|
||||
* Process content object data
|
||||
*
|
||||
* @param ContentObjectRenderer $cObj The data of the content element or page
|
||||
* @param array $processorConfiguration The configuration of this processor
|
||||
* @param array $contentObjectConfiguration The configuration of Content Object
|
||||
* @param array $processedData Key/value store of processed data (e.g. to be passed to a Fluid View)
|
||||
* @return array the processed data as key/value store
|
||||
*/
|
||||
public function process(
|
||||
ContentObjectRenderer $cObj,
|
||||
array $contentObjectConfiguration,
|
||||
array $processorConfiguration,
|
||||
array $processedData
|
||||
);
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
This will break all frontend rendering for TYPO3 7.3 installations that use `FLUIDTEMPLATE` `.dataProcessing`.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All TYPO3 7.3 installations that already use the new `FLUIDTEMPLATE` `.dataProcessing` option.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Change the interface of all DataProcessor classes from `FluidTemplateDataProcessorInterface` to the new
|
||||
`DataProcessorInterface` and adjust the `process()` method to match the new parameters and make sure it returns the
|
||||
processed data as the processed data.
|
||||
|
||||
|
||||
.. index:: PHP-API, Fluid, Frontend
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67932:
|
||||
|
||||
=======================================================================
|
||||
Breaking: #67932 - felogin template has been changed for RSA encryption
|
||||
=======================================================================
|
||||
|
||||
See :issue:`67932`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Due to the introduction of the new rsaauth API the felogin template has been changed.
|
||||
|
||||
A new HTML data-attribute had to be added to the password field in order to enable the RSA encryption Javascript code.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If rsaauth is enabled and the template is not updated, no login is possible.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation using a custom felogin template and having rsaauth enabled for frontend.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
The template has to be adjusted and a `data-rsa-encryption` attribute has to be added to the password field in `<!--###TEMPLATE_LOGIN###-->`
|
||||
|
||||
The field definition in your template has to be updated to like this:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input type="password" id="pass" name="pass" value="" data-rsa-encryption="" />
|
||||
|
||||
|
||||
.. index:: Frontend, ext:felogin, ext:rsaauth
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67946:
|
||||
|
||||
===================================================
|
||||
Breaking: #67946 - LowLevel Cleaner Scripts Removed
|
||||
===================================================
|
||||
|
||||
See :issue:`67946`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The shell scripts for checking and cleaning a TYPO3 installation for its integrity have been removed from the Core.
|
||||
They were previously located under :file:`typo3/cleaner_check.sh` and :file:`typo3/cleaner_fix.sh`. The contents have
|
||||
been moved to the documentation for EXT:lowlevel in the respective :file:`README.rst`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any regular system jobs that execute these scripts will exit with the script not found anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation that uses the shell scripts above from the command line directly.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
If such a list is needed, create the files manually again in your system (outside your document root). The code can be
|
||||
found inside :file:`EXT:lowlevel/README.rst`.
|
||||
|
||||
|
||||
.. index:: ext:lowlevel, Backend
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-67987:
|
||||
|
||||
================================================
|
||||
Breaking: #67987 - Removed entry script handling
|
||||
================================================
|
||||
|
||||
See :issue:`67987`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Definition and handling of constants `TYPO3_MOD_PATH` and `PATH_typo3_mod` have been dropped.
|
||||
These constants were important for modules that were still not called through the `mod.php`
|
||||
`_DISPATCH` system that was introduced in TYPO3 CMS version 4.2.
|
||||
It is required to route modules through `typo3/mod.php` from now on in case the module relies
|
||||
on the definition of those constants.
|
||||
|
||||
The following old entry scripts were removed:
|
||||
|
||||
* typo3/sysext/cms/layout/db_layout.php, use `\TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl('web_layout')` to link to the module
|
||||
* typo3/sysext/cms/layout/db_new_content_el.php, use `\TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl('new_content_element')` to link to the module
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Path resolving may fail for scripts that rely on entry points different from `typo3/mod.php`
|
||||
Constants `TYPO3_MOD_PATH` and `PATH_typo3_mod` are not defined anymore and scripts may
|
||||
throw a PHP warning if they try to access these constants.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations may fail if linking to modules that use an entry script with a `conf.php` file that do not
|
||||
use `$MCONF['script'] = '_DISPATCH';`. Those modules must be adapted to the `mod.php` entry point and may
|
||||
need adaption of further references that are defined relative to the entry script.
|
||||
|
||||
Searching for extensions with backend modules that define `TYPO3_MOD_PATH` is a good start to find unwanted usages.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68001:
|
||||
|
||||
========================================================
|
||||
Breaking: #68001 - Removed ExtJS Core and ExtJS Adapters
|
||||
========================================================
|
||||
|
||||
See :issue:`68001`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The functionality of "ExtCore", which acts as a slim ExtJS base functionality similar to what libraries like underscore.js or jQuery do,
|
||||
but is just dated, has been completely removed from the TYPO3 Core.
|
||||
|
||||
The custom adapters which have previously been shipped with ExtJS to allow jQuery functionality to be used
|
||||
with ExtJS underneath have been removed without substitution. The adapters are not compatible with supported
|
||||
jQuery, prototype.js or YUI versions anymore and their usages have been slower than ExtJS's base library natively.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Using TypoScript options `page.javascriptLibs.ExtCore = 1`, `page.javascriptLibs.ExtCore.debug = 1` and `page.javascriptLibs.ExtJs.adapter` have no effect anymore.
|
||||
|
||||
Using `<f:be.container>` ViewHelpers in a custom Backend module, setting the extJsAdapter, property will result in a fatal error.
|
||||
|
||||
Calling `$pageRenderer->loadExtJS()` with a custom third parameter will have no effect anymore.
|
||||
|
||||
Calling the methods `loadExtCore()`, `enableExtCoreDebug()`, `getExtCorePath()` and `setExtCorePath()` of `PageRenderer` will result in fatal errors.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances that use ExtCore in the TYPO3 Frontend
|
||||
|
||||
Extensions that use `<f:be.container>` with an ExtJS Adapter
|
||||
|
||||
Extensions that use the `PageRenderer` object directly to load custom ExtJS or ExtCore.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use alternatives for ExtCore or adapters in custom extensions.
|
||||
|
||||
|
||||
.. index:: PHP-API, Fluid, TypoScript, JavaScript, Backend, Frontend
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68010-1668719172:
|
||||
|
||||
=============================================================================
|
||||
Breaking: #68010 - T3Editor - Event callbacks for codecompletion have changed
|
||||
=============================================================================
|
||||
|
||||
See :issue:`68010`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Due to the rewrite of T3Editor to jQuery, the event callbacks for codecompletion have changed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Plugins for codecompletion written in Prototype will not work anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Every third-party extension providing a T3Editor plugin extending the codecompletion.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Port the plugin to an AMD module. The event callbacks are now part of the module object and not a standalone function anymore.
|
||||
|
||||
Example code:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
CoolPlugin.afterKeyDown = function(currWordObj, compResult) {
|
||||
CoolPlugin.somethingFunky(currWordObj, compResult);
|
||||
};
|
||||
|
||||
|
||||
.. index:: JavaScript, Backend, ext:t3editor
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68010:
|
||||
|
||||
================================================================================
|
||||
Breaking: #68010 - T3Editor - Plugin registration for codecompletion has changed
|
||||
================================================================================
|
||||
|
||||
See :issue:`68010`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Due to the rewrite of T3Editor to jQuery, the plugin registration for codecompletion has changed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Plugins for codecompletion written in Prototype will not work anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Every third-party extension providing a T3Editor plugin extending the codecompletion.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Port the plugin to an AMD module. The plugin must have an `init` method with a configuration object as only parameter. Every parameter that was passed to the old Prototype function must be in that configuration object. Please see the example code below or consult :file:`EXT:t3editor/Resources/Public/JavaScript/Plugins/CodeCompletion/DescriptionPlugin.js`.
|
||||
|
||||
Example code:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
define('Awesome/Extension/Plugins/CodeCompletion/CoolPlugin', [
|
||||
'jquery',
|
||||
'TYPO3/CMS/T3editor/Plugins/CodeCompletion/TsRef',
|
||||
'TYPO3/CMS/T3editor/Plugins/CodeCompletion/TsParser'
|
||||
], function ($, TsRef, TsParser) {
|
||||
var CoolPlugin = {
|
||||
codeCompleteBox: null,
|
||||
codemirror: null
|
||||
};
|
||||
|
||||
CoolPlugin.init = function(configuration) {
|
||||
DescriptionPlugin.codeCompleteBox = configuration.codeCompleteBox;
|
||||
DescriptionPlugin.codemirror = configuration.codemirror;
|
||||
|
||||
DescriptionPlugin.codeCompleteBox.parent().append($('<div />', {class: 'foomatic'}));
|
||||
};
|
||||
|
||||
return CoolPlugin;
|
||||
});
|
||||
|
||||
|
||||
.. index:: JavaScript, Backend, ext:t3editor
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68020:
|
||||
|
||||
============================================
|
||||
Breaking: #68020 - Dropped DisableBigButtons
|
||||
============================================
|
||||
|
||||
See :issue:`68020`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The TSconfig option `mod.web_layout.disableBigButtons` has been dropped, setting it
|
||||
to 0 has no effect anymore.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The option is ignored and instances using this will not get the buttons rendered in
|
||||
page module anymore.
|
||||
|
||||
These methods have been removed, but it is very unlikely an extension is affected:
|
||||
|
||||
* `TYPO3\CMS\Backend\View\PageLayoutView->linkRTEbutton()`
|
||||
* `TYPO3\CMS\Backend\View\PageLayoutView->isRTEforField()`
|
||||
* `TYPO3\CMS\Backend\View\PageLayoutView->getSpecConfForField()`
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances that had User / Page TSconfig with this option may have a slightly
|
||||
different Web -> Page view.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, TSConfig
|
||||
@@ -0,0 +1,59 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68092:
|
||||
|
||||
=================================================================
|
||||
Breaking: #68092 - TCA: Remove wizard hideParent and _HIDDENFIELD
|
||||
=================================================================
|
||||
|
||||
See :issue:`68092`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Wizards defined in `TCA` for display in `FormEngine` allowed to hide the "parent"
|
||||
field with the configuration options `_HIDDENFIELD` on main wizard level, and with
|
||||
the `hideParent` option for single wizards.
|
||||
|
||||
Both options have been dropped.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The configuration options have no effect anymore, the main field will show up.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
A search through the TER code showed not a single extension that used the above options.
|
||||
A 3rd party extension is affected if a `TCA` column configuration is used like:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
'aField' => array(
|
||||
'config' => array(
|
||||
...
|
||||
'wizards' => array(
|
||||
'_HIDDENFIELD' => TRUE,
|
||||
'aWizard' => array(
|
||||
'hideParent' => array(
|
||||
...
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Wizards can not trigger that a main field is not rendered anymore. If this kind of functionality
|
||||
is needed, it is recommended to register an own `renderType` in the `NodeFactory` for this
|
||||
type of field instead to route the element rendering to an own class.
|
||||
|
||||
|
||||
.. index:: TCA, Backend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68116:
|
||||
|
||||
===================================================
|
||||
Breaking: #68116 - Drop RTE.userLinks functionality
|
||||
===================================================
|
||||
|
||||
See :issue:`68116`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Drop RTE.userLinks functionality from the ElementBrowser. The option was broken since 6.0 and has been removed now.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The special option won't show up in the ElementBrowser anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations which use the option `RTE.userLinks`
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use the newly added Tabbing API to add your custom link selection tab.
|
||||
|
||||
|
||||
.. index:: Backend, RTE
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68131:
|
||||
|
||||
==========================================================
|
||||
Breaking: #68131 - Streamline error and exception handling
|
||||
==========================================================
|
||||
|
||||
See :issue:`68131`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
It is not possible any more to change error and exception handling configuration in an ext_localconf.php of an extension.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Error or exception handling configuration overridden in ext_localonf.php files will not work any more.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations with extension that set error or exception handling configuration in ext_localconf.php files.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Configure error and exception handling in LocalConfiguration.php or AdditionalConfiguration.php
|
||||
|
||||
|
||||
|
||||
.. index:: PHP-API, LocalConfiguration
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68150:
|
||||
|
||||
=====================================
|
||||
Breaking: #68150 - $GLOBALS['CLIENT']
|
||||
=====================================
|
||||
|
||||
See :issue:`68150`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The initialization of the `$GLOBALS['CLIENT']` variable has been dropped.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions that use `$GLOBALS['CLIENT']` will cause a PHP notice or may not function properly any more.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations with extensions that use `$GLOBALS['CLIENT']` are affected.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Extensions can still use `GeneralUtility::clientInfo()` API to retrieve the same information.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68178:
|
||||
|
||||
==========================================================================
|
||||
Breaking: #68178 - Drop $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype']
|
||||
==========================================================================
|
||||
|
||||
See :issue:`68178`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Setting `$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype']` has been dropped without replacement.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions that used this setting in forms may end up with an empty `enctype` attribute
|
||||
in `HTML` `form` fields.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Extensions that rely on this variable being set.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Substitute the variable access with `multipart/form-data`.
|
||||
|
||||
|
||||
.. index:: LocalConfiguration, Backend
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68186:
|
||||
|
||||
===========================================================
|
||||
Breaking: #68186 - Adjusted and removed methods in eID area
|
||||
===========================================================
|
||||
|
||||
See :issue:`68186`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
eID scripts now use Request and Response objects to retrieve and output data.
|
||||
|
||||
Due to adjustments of the Core eID scripts a few methods have been adjusted.
|
||||
|
||||
`ExtDirectEidController::routeAction` is now protected and has a changed signature.
|
||||
|
||||
The following methods have been removed:
|
||||
|
||||
* `ExtDirectEidController::actionIsAllowed()`
|
||||
* `ExtDirectEidController::render()`
|
||||
* `EidUtility::isEidRequest()`
|
||||
* `EidUtility::getEidScriptPath()`
|
||||
|
||||
Additionally calling an non-existent eID key will result in a fatal error.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All third party code using those methods will cause a fatal PHP error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations using third party code accessing one of the adjusted (or removed) methods.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No replacement for the mentioned methods is provided. Consider migrating your eID scripts to the new PSR-7 compliant model.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend, Backend
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68193:
|
||||
|
||||
===========================================================================================
|
||||
Breaking: #68193 - ext:indexed_search Drop removeLoginpagesWithContentHash from Indexer.php
|
||||
===========================================================================================
|
||||
|
||||
See :issue:`68193`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The method `\TYPO3\CMS\IndexedSearch\Indexer::removeLoginpagesWithContentHash()` was not used within the core since 6.0
|
||||
and has been removed.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Calling `\TYPO3\CMS\IndexedSearch\Indexer::removeLoginpagesWithContentHash()` will throw a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations with third party code using the mentioned method.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No migration is available.
|
||||
|
||||
|
||||
.. index:: PHP-API, ext:indexed_search
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68206:
|
||||
|
||||
===============================================================
|
||||
Breaking: #68206 - Remove usage of typolist and typohead in RTE
|
||||
===============================================================
|
||||
|
||||
See :issue:`68206`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The transformation for the tags `typolist` and `typohead` have been removed from the RTE.
|
||||
The option and method `internalizeFontTags()` from RteHtmlParser have been removed.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The tags are not processed anymore by the RteHtmlParser.
|
||||
Fonts are not internalized anymore.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations using the custom tags `typolist` and `typohead`.
|
||||
All installations that use the method `internalizeFontTags()` will throw an fatal error.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Substitute the tags by a tag `ul``or `header`.
|
||||
Remove any usage of `internalizeFontTags()`
|
||||
|
||||
|
||||
.. index:: PHP-API, RTE
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68243:
|
||||
|
||||
=========================================================
|
||||
Breaking: #68243 - Move not used FrontendDocumentTemplate
|
||||
=========================================================
|
||||
|
||||
See :issue:`68243`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Move unused FrontendDocumentTemplate to ext:compatibility6.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Installations still using FrontendDocumentTemplate require ext:compatibility6 to be installed.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations still using FrontendDocumentTemplate.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Install ext:compatibility6 or adapt the code to not use the FrontendDocumentTemplate functionality.
|
||||
|
||||
Adapting the code is highly recommended.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68276:
|
||||
|
||||
=====================================================
|
||||
Breaking: #68276 - Remove ExtJS Quicktips if possible
|
||||
=====================================================
|
||||
|
||||
See :issue:`68276`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The method `PageRenderer::enableExtJSQuickTips()`, which was used to enable ExtJS quicktips, has been removed.
|
||||
In some places like RTE or workspaces the Quicktips are still in use, but will be removed as soon as possible.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All calls to the PHP method `PageRenderer::enableExtJSQuickTips()` will throw a fatal error.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances which make use of `PageRenderer::enableExtJSQuickTips()`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No migration, use bootstrap tooltips, which work out of the box as alternative.
|
||||
Simple add `data-toggle="tooltip"` and `data-title="your tooltip"` to any element you want.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<a href="#" data-toggle="tooltip" data-title="My very nice title">My Link</a>
|
||||
|
||||
|
||||
.. index:: JavaScript, Backend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _breaking-68321:
|
||||
|
||||
==========================================================
|
||||
Breaking: #68321 - Move language and images in rtehtmlarea
|
||||
==========================================================
|
||||
|
||||
See :issue:`68321`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
All language files and images have been moved.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Labels and images may be not displayed if TypoScript from the sample files is used.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations that use the TypoScript settings from the provided sample files.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Adjust the path to language and image files according the sample TypoScript files provided by the extension.
|
||||
|
||||
|
||||
.. index:: PHP-API, TypoScript, RTE
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-50349:
|
||||
|
||||
===================================================================
|
||||
Deprecation: #50349 - Reduce SQL queries of page tree in workspaces
|
||||
===================================================================
|
||||
|
||||
See :issue:`50349`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The performance of the calculation of versions of a record has been improved. Therefore the method
|
||||
`\TYPO3\CMS\Backend\Utility::countVersionsOfRecordsOnPage()` has been marked as deprecated and is being replaced with
|
||||
`\TYPO3\CMS\Workspaces\Service\WorkspaceService::hasPageRecordVersions()`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All calls to the PHP method will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances which make use of `\TYPO3\CMS\Backend\Utility::countVersionsOfRecordsOnPage()`
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use `\TYPO3\CMS\Workspaces\Service\WorkspaceService::hasPageRecordVersions()` instead.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, ext:workspaces
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-63603-1668719172:
|
||||
|
||||
============================================================================
|
||||
Deprecation: #63603 - ExtendedFileUtility::$dontCheckForUnique is deprecated
|
||||
============================================================================
|
||||
|
||||
See :issue:`63603`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The ExtendedFileUtility `$dontCheckForUnique` flag has been marked as deprecated and replaced by
|
||||
`$fileUtility->setExistingFileConflictMode()` with the possible options of the `\TYPO3\CMS\Core\Resource\DuplicationBehavior` enumeration.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions still using `ExtendedFileUtility::$dontCheckForUnique` will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations with extensions that use `ExtendedFileUtility::$dontCheckForUnique`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Change the `$fileUtility->dontCheckForUnique = TRUE` to `$fileUtility->setExistingFileConflictMode(DuplicationBehavior::REPLACE)`.
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-63603:
|
||||
|
||||
==========================================================================================================
|
||||
Deprecation: #63603 - FileController and FileListController overwriteExistingFiles changed to string value
|
||||
==========================================================================================================
|
||||
|
||||
See :issue:`63603`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The GET/POST param to tell the FileController and FileListController whether to override a file or not switched from a bool
|
||||
value to a string with the possibilities of the `\TYPO3\CMS\Core\Resource\DuplicationBehavior` enumeration.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions still using `overwriteExistingFiles = 1` will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations with extensions that use the BE upload functionality and supply the file override option.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Change the `<input name="overwriteExistingFiles" value="1">` to `<input name="overwriteExistingFiles" value="replace">`.
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL, Backend
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-63974:
|
||||
|
||||
==============================================================
|
||||
Deprecation: #63974 - Deprecate CSS compressor callback method
|
||||
==============================================================
|
||||
|
||||
See :issue:`63974`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The callback method `compressCssPregCallback()` as defined in
|
||||
EXT:core/Classes/Resource/ResourceCompressor.php has been marked as deprecated due to the overhauled regular expressions.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Usage of the mentioned method is discouraged and will break as of CMS 8.
|
||||
|
||||
|
||||
Affected installations
|
||||
======================
|
||||
|
||||
All installations or extensions using the `compressCssPregCallback()` callback method.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No migration possible for the callback method.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-65790:
|
||||
|
||||
========================================================
|
||||
Deprecation: #65790 - Remove pages.storage_pid and logic
|
||||
========================================================
|
||||
|
||||
See :issue:`65790`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The DB field "pages.storage_pid" and its TCA definition have been moved to the compatibility6 extension as the field
|
||||
and its functionality is discouraged.
|
||||
|
||||
Additionally the method `getStorageSiterootPids()` within the PHP class `TypoScriptFrontendController` has been marked
|
||||
as deprecated. The method is currently only used if the Frontend Login plugin is used without setting
|
||||
a specific folder where the fe_users records are stored in.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any usage of this field in any TypoScript, page or the usage of the method mentioned above in any third-party
|
||||
extension will only work if the compatibility6 extension is installed.
|
||||
|
||||
The Frontend Login functionality will throw a deprecation warning if the TypoScript option
|
||||
`plugin.tx_felogin.storagePid` (via TypoScript directly or the flexform configuration within the plugin) is not set.
|
||||
|
||||
|
||||
Affected installations
|
||||
======================
|
||||
|
||||
All installations making use of `storage_pid` within the pages database table as well as installations using
|
||||
the Frontend Login plugin without having the storagePid option set.
|
||||
|
||||
|
||||
.. index:: PHP-API, Database, TypoScript, Frontend
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-66904:
|
||||
|
||||
====================================================================
|
||||
Deprecation: #66904 - $disable Option in PageRepository->getExtURL()
|
||||
====================================================================
|
||||
|
||||
See :issue:`66904`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The second parameter `$disable` within `PageRepository->getExtURL()` has been marked as deprecated.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation using the method in a third-party extension above with using the second parameter set to
|
||||
`true` will throw a deprecation warning.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Check if redirects are enabled before the actual call to `PageRepository->getExtURL()` in a third-party extension.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67288:
|
||||
|
||||
==========================================================================
|
||||
Deprecation: #67288 - Deprecate Dbal\DatabaseConnection::MetaType() method
|
||||
==========================================================================
|
||||
|
||||
See :issue:`67288`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The following public function has been marked as deprecated as the bugfix requires a signature change:
|
||||
|
||||
* `Dbal\DatabaseConnection->MetaType()`
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Using this function will throw a deprecation warning. Due to missing information the field type cache will
|
||||
be bypassed and the DBMS will be queried for the necessary information on each call.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Switch to `getMetadata()` and the field name for which you need the ADOdb MetaType information.
|
||||
|
||||
|
||||
.. index:: PHP-API, Database, ext:dbal
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67471:
|
||||
|
||||
========================================
|
||||
Deprecation: #67471 - Deprecate init.php
|
||||
========================================
|
||||
|
||||
See :issue:`67471`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In order to move all unneeded files from typo3/, the often used init.php has been deprecated in favor of using the
|
||||
bootstrap initialization code directly in the TYPO3 Backend.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All entry points from third-party extensions using init.php will now throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All instances having extensions that include init.php when not using the mod.php for modules or ajax calls.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use the following code instead of the init.php inclusion if you still need custom entry points:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
define('TYPO3_MODE', 'BE');
|
||||
|
||||
require __DIR__ . '/sysext/core/Classes/Core/Bootstrap.php';
|
||||
\TYPO3\CMS\Core\Core\Bootstrap::getInstance()->run('typo3/');
|
||||
|
||||
|
||||
If using a module, use the mod.php to register your own module.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67506:
|
||||
|
||||
====================================================
|
||||
Deprecation: #67506 - Deprecate IconUtility::getIcon
|
||||
====================================================
|
||||
|
||||
See :issue:`67506`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The method `IconUtility::getIcon()` which was used for generating overlaid icons for records has been marked as deprecated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All calls to the PHP method will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances with third-party extensions modifying the TYPO3 Backend with a custom module or hook and calling `IconUtility::getIcon()`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use `IconUtility::getSpriteIconForRecord()` instead.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67670:
|
||||
|
||||
====================================================================================
|
||||
Deprecation: #67670 - Deprecate custom singleton logic in GeneralUtility::getUserObj
|
||||
====================================================================================
|
||||
|
||||
See :issue:`67670`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The functionality of instantiating classes only once by calling `GeneralUtility::getUserObj($className)` multiple times
|
||||
while having a `$className` that is prepended with an ampersand ("&") has been marked as deprecated.
|
||||
|
||||
|
||||
An example of the deprecated behaviour in the ext_localconf.php of an extension:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['indexed_search']['pi1_hooks']['getResultRows_SQLpointer'] = '&Acme\\MyExtension\\Hooks\\MysqlFulltextIndexHook';
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Any calls to `GeneralUtility::getUserObj()` with a prefixed ampersand will throw a deprecation message.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
TYPO3 Instances with extensions that use `getUserObj()` themselves and/or use hooks built with `getUserObj()` and use references.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Check if the classes that hook into certain parts of your custom extensions really need to be referenced / instantiated once.
|
||||
If so, implement the `SingletonInterface` of the TYPO3 Core, so the underlying function `GeneralUtility::makeInstance()`
|
||||
will register the SingletonInterface only once.
|
||||
|
||||
The modified example from above now looks like this:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['indexed_search']['pi1_hooks']['getResultRows_SQLpointer'] = \Acme\MyExtension\Hooks\MysqlFulltextIndexHook::class;
|
||||
|
||||
|
||||
While the class itself implements the SingletonInterface of the TYPO3 Core to only be instantiated once during a single request:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
<?php
|
||||
namespace \Acme\MyExtension\Hooks;
|
||||
|
||||
class MysqlFulltextIndexHook implements \TYPO3\CMS\Core\Core\SingletonInterface {
|
||||
...
|
||||
}
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,77 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67737:
|
||||
|
||||
==================================================
|
||||
Deprecation: #67737 - TCA: Drop additional palette
|
||||
==================================================
|
||||
|
||||
See :issue:`67737`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `showitem` string of `TCA` `types` allowed to define an "additional palette" as third
|
||||
semicolon separated name of a field. Such a palette was then rendered after the main field.
|
||||
This handling has been dropped and existing "additional palettes" were migrated to a "normal" palette definition
|
||||
directly after the field.
|
||||
|
||||
Before:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
'types' => array(
|
||||
'aType' => array(
|
||||
'showitem' => 'aField;aLabel;anAdditionalPaletteName',
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
The behavior before was: If the field `aField` is rendered, then the
|
||||
palette `anAdditionalPaletteName` is rendered, too. This functionality has been dropped, the migrated field now looks
|
||||
like this:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
'types' => array(
|
||||
'aType' => array(
|
||||
'showitem' => 'aField;aLabel, --palette--;;anAdditionalPaletteName',
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
A casual field name in `showitem` now only has a label override as additional
|
||||
information, like `aField;aLabel`, while a palette is referenced as
|
||||
`--palette--;aLabel;paletteName`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All extensions that use "additional palette" syntax are migrated to the new syntax, but will
|
||||
throw a deprecation message.
|
||||
|
||||
The "additional palette" handling was sometimes misused as "poor-mans-access-control":
|
||||
If access to the main field was not allowed, the palette fields were not rendered either. This
|
||||
changed, the main field and the palette are decoupled, it may happen that additional fields
|
||||
are now rendered for users that should not have access to it. Adapting the `exclude` config
|
||||
definition of the palette fields and user or group access records is necessary in those cases.
|
||||
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Extensions that use the "additional palette" handling.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
An automatic migration is in place and logged to `typo3conf/deprecation_*`. The migration code
|
||||
will be dropped with TYPO3 CMS 8, a manual fix of the according `showitem` field is required,
|
||||
the deprecation log gives detailed information on how the definition should look like.
|
||||
|
||||
|
||||
.. index:: TCA, Backend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67769:
|
||||
|
||||
=========================================================
|
||||
Deprecation: #67769 - Deprecate QueryGenerator::formatQ()
|
||||
=========================================================
|
||||
|
||||
See :issue:`67769`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The method `QueryGenerator::formatQ()` which was used to format a query string, has been marked as deprecated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All calls to the PHP method will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances which make use of `QueryGenerator::formatQ()`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No migration, use `htmlspecialchars` as alternative.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67790:
|
||||
|
||||
==========================================================
|
||||
Deprecation: #67790 - Deprecate QueryGenerator::JSbottom()
|
||||
==========================================================
|
||||
|
||||
See :issue:`67790`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The method `QueryGenerator::JSbottom()` which was used to append JavaScript code has been marked as deprecated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All calls to the PHP method will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Instances which make use of `QueryGenerator::JSbottom()`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
No migration, use requireJS modules and register the module through `pageRenderer`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, JavaScript
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67932:
|
||||
|
||||
===========================================================
|
||||
Deprecation: #67932 - Deprecated old rsaauth encryption API
|
||||
===========================================================
|
||||
|
||||
See :issue:`67932`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The rsaauth API has been rebuilt to be more generic. Therefore the Ajax Handler `BackendLogin::getRsaPublicKey()` has
|
||||
been marked as deprecated and the eID script `FrontendLoginRsaPublicKey` has been removed.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Any installation using one of the entry points above in a third-party extension.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
There is no reason to use the entry points on your own anymore. Please update your scripts to use the new rsaauth API.
|
||||
For backend requests you should use the provided ajax handler `RsaEncryption::getRsaPublicKey()`.
|
||||
For frontend request you should use the provided eID script `RsaPublicKeyGenerationController`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, ext:rsaauth
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-67991:
|
||||
|
||||
=====================================
|
||||
Deprecation: #67991 - Removed ext:cms
|
||||
=====================================
|
||||
|
||||
See :issue:`67991`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Extension `cms` has been removed. Most functionality has been moved to extension `frontend` with version 6.0 already.
|
||||
The rest of the files have now been moved to other extensions, extension `cms` does not exist anymore.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Language files from EXT:cms are moved to different places into the core. `LLL:EXT:cms/...` references are
|
||||
rewritten dynamically to the new file locations, but this fallback layer is subject to be removed with CMS 8.
|
||||
|
||||
Third party extensions that define a dependency to extension `cms` will get their dependency rewritten to `core`
|
||||
on the fly during extension installation as a compatibility layer.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All 3rd party extensions using language labels from extension `cms` or defining a dependency to extension `cms`
|
||||
in `ext_emconf.php`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Update the dependency constraint in `ext_emconf.php` of the affected extension. A typical substitution is
|
||||
a dependency to extension `frontend`.
|
||||
|
||||
Move the following references to the new location of the language file:
|
||||
|
||||
* typo3/sysext/cms/web_info/locallang.xlf -> typo3/sysext/frontend/Resources/Private/Language/locallang_webinfo.xlf
|
||||
* typo3/sysext/cms/locallang_ttc.xlf -> typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf
|
||||
* typo3/sysext/cms/locallang_tca.xlf -> typo3/sysext/frontend/Resources/Private/Language/locallang_tca.xlf
|
||||
* typo3/sysext/cms/layout/locallang_db_new_content_el.xlf -> typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf
|
||||
* typo3/sysext/cms/layout/locallang.xlf -> typo3/sysext/backend/Resources/Private/Language/locallang_layout.xlf
|
||||
* typo3/sysext/cms/layout/locallang_mod.xlf -> typo3/sysext/backend/Resources/Private/Language/locallang_mod.xlf
|
||||
* typo3/sysext/cms/locallang_csh_webinfo.xlf -> typo3/sysext/frontend/Resources/Private/Language/locallang_csh_webinfo.xlf
|
||||
* typo3/sysext/cms/locallang_csh_weblayout.xlf -> typo3/sysext/frontend/Resources/Private/Language/locallang_csh_weblayout.xlf
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-68074:
|
||||
|
||||
=========================================================
|
||||
Deprecation: #68074 - Deprecate getPageRenderer() methods
|
||||
=========================================================
|
||||
|
||||
See :issue:`68074`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The following public functions have been marked as deprecated as the instance they return is a singleton:
|
||||
|
||||
* `TYPO3\CMS\Backend\Controller\BackendController::getPageRenderer()`
|
||||
* `TYPO3\CMS\Backend\Template\DocumentTemplate::getPageRenderer()`
|
||||
* `TYPO3\CMS\Backend\Template\FrontendDocumentTemplate::getPageRenderer()`
|
||||
* `TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::getPageRenderer()`
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Using one of these functions will throw a deprecation message.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
As the PageRenderer implements a SingletonInterface you can get your own (shared) instance with
|
||||
`\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class)` and work with that one.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-68098:
|
||||
|
||||
======================================================
|
||||
Deprecation: #68098 - Deprecate GeneralUtility methods
|
||||
======================================================
|
||||
|
||||
See :issue:`68098`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The following methods within `GeneralUtility` have been marked as deprecated and will be removed in TYPO3 CMS v8.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
GeneralUtility::modifyHTMLColor()
|
||||
GeneralUtility::modifyHTMLColorAll()
|
||||
GeneralUtility::isBrokenEmailEnvironment()
|
||||
GeneralUtility::normalizeMailAddress()
|
||||
GeneralUtility::formatForTextarea()
|
||||
GeneralUtility::getThisUrl()
|
||||
GeneralUtility::cleanOutputBuffers()
|
||||
|
||||
The functionality `formatForTextarea()` was used in the older days to actually support IE4 and Netscape 3 properly
|
||||
and can now safely be exchanged by `htmlspecialchars()`.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All extensions using these methods directly will throw a deprecation message.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations with extensions that use the methods above handling.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use corresponding functionality from `getIndpEnv()` instead of `getThisUrl()`.
|
||||
|
||||
For the other methods, you can re-implement the functionality yourself in your extension where needed.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-68122:
|
||||
|
||||
==========================================================
|
||||
Deprecation: #68122 - Deprecate GeneralUtility::readLLfile
|
||||
==========================================================
|
||||
|
||||
See :issue:`68122`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Method `GeneralUtility::realLLfile()` was just a wrapper around LocalizationFactory
|
||||
and has been marked as deprecated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extensions using `realLLfile()` to parse localization files should switch to
|
||||
an instance of `LocalizationFactory`.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Extensions using `GeneralUtility::readLLfile()`
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
A typical call now should look like:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
/** @var $languageFactory \TYPO3\CMS\Core\Localization\LocalizationFactory */
|
||||
$languageFactory = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Localization\LocalizationFactory::class);
|
||||
$languageFactory->getParsedData($fileToParse, $language, $renderCharset, $errorMode);
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-68141:
|
||||
|
||||
====================================
|
||||
Deprecation: #68141 - typo3/ajax.php
|
||||
====================================
|
||||
|
||||
See :issue:`68141`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The ajax.php entry-point has been marked as deprecated. All AJAX requests in the Backend using the Ajax API are
|
||||
not affected as they automatically use index.php.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All extensions directly linking to typo3/ajax.php will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations with custom extensions that call typo3/ajax.php without using proper API calls from `BackendUtility`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use `BackendUtility::getAjaxUrl()`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-68183:
|
||||
|
||||
===================================
|
||||
Deprecation: #68183 - typo3/mod.php
|
||||
===================================
|
||||
|
||||
See :issue:`68183`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The mod.php entry-point has been marked as deprecated. All Backend Module requests in the Backend using the Module Url API are
|
||||
not affected as they automatically use index.php.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
All extensions directly linking to typo3/mod.php will throw a deprecation warning.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
Installations with custom extensions that call typo3/mod.php without using proper API calls from `BackendUtility`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Use `BackendUtility::getModuleUrl()`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-20194:
|
||||
|
||||
=======================================================================
|
||||
Feature: #20194 - Configuration for displaying the "Save & View" button
|
||||
=======================================================================
|
||||
|
||||
See :issue:`20194`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The "Save & View" button is configurable by TSConfig "TCEMAIN.preview.disableButtonForDokType" (CSV of "doktype" IDs) to
|
||||
disable the button for custom page "doktypes". The default value is set in the PHP implementation: "254, 255, 199"
|
||||
(Storage Folder, Recycler and Menu Seperator)
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The "Save & View" button is no longer displayed in folders and recycler pages.
|
||||
|
||||
|
||||
.. index:: TSConfig, Backend
|
||||
@@ -0,0 +1,49 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-22175:
|
||||
|
||||
==============================================================
|
||||
Feature: #22175 - Support IEC/SI units in file size formatting
|
||||
==============================================================
|
||||
|
||||
See :issue:`22175`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Size formatting supports two keywords additionally to the list of labels:
|
||||
|
||||
- iec: uses the Ki, Mi, etc prefixes and binary base (power of two, 1024)
|
||||
- si: uses the k, M, etc prefixes and decimal base (power of ten, 1000)
|
||||
|
||||
The default formatting is set to "iec" base size calculations on the same base as before.
|
||||
The fractional part, when present, is changed to two numbers instead of only one.
|
||||
|
||||
The list of labels is still supported and defaults to using binary base. It is also
|
||||
possible to explicitly choose between binary or decimal base when it is used.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Default formatted output of file sizes changes, see example below.
|
||||
|
||||
TypoScript `stdWrap` property `bytes` defaults to a different label set.
|
||||
`bytes.labels = iec`, a specifically defined label string with pipe separated
|
||||
label keywords is obsolete, but can still be used if required. The keyword
|
||||
`iec` resolves to ` | Ki| Mi| Gi| Ti| Pi| Ei| Zi| Yi` (binary base) and `si` resolves
|
||||
to ` | k| M| G| T| P| E| Z| Y` (based on ten).
|
||||
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
echo GeneralUtility::formatSize(85123);
|
||||
// => Before "83.1 K"
|
||||
// => Now "83.13 Ki"
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-33071:
|
||||
|
||||
==============================================================================
|
||||
Feature: #33071 - Add the http header "Content-Language" when rendering a page
|
||||
==============================================================================
|
||||
|
||||
See :issue:`33071`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
By default a header "Content-language: XX" is sent where "XX" is the iso code of the
|
||||
sys_language_content (in the sys_language record, it is represented by the sys_language_isocode field),
|
||||
if that is properly defined by the sys_language record representing the sys_language_uid.
|
||||
Setting "config.disableLanguageHeader" disables that.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
By default in new and existing installations a header "Content-language: XX" is sent where "XX" is the iso code of the
|
||||
sys_language_content if that is properly defined by the sys_language record representing the sys_language_uid.
|
||||
You must set "config.disableLanguageHeader" to disable that and get previous behavior (no header).
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-34922:
|
||||
|
||||
==========================================================================
|
||||
Feature: #34922 - Allow .ts file extension for static TypoScript templates
|
||||
==========================================================================
|
||||
|
||||
See :issue:`34922`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Only these TypoScript file names were allowed:
|
||||
|
||||
- constants.txt
|
||||
- setup.txt
|
||||
- include_static_files.txt
|
||||
|
||||
The ts file extension has been allowed for constants and setup and is prioritised over txt.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
There is a little performance impact when loading the TypoScript from scratch like in the backend and frontend without
|
||||
cache as the new file extension is always tested.
|
||||
|
||||
|
||||
.. index:: Frontend, TypoScript
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-43984:
|
||||
|
||||
============================================================================
|
||||
Feature: #43984 - Add stdWrap functionality to TreatIdAsReference TypoScript
|
||||
============================================================================
|
||||
|
||||
See :issue:`43984`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The new TypoScript property "treatIdAsReference" for the getImgResource object
|
||||
can now be used with stdWrap properties.
|
||||
|
||||
|
||||
.. index:: Frontend, TypoScript
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-45725:
|
||||
|
||||
=========================================================================
|
||||
Feature: #45725 - Added recursive option to folder based file collections
|
||||
=========================================================================
|
||||
|
||||
See :issue:`45725`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Folder based file collections have now an option to fetch all files recursively for
|
||||
the given folder. The option is also available in the TypoScript Object `FILES`.
|
||||
|
||||
Usage:
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
filecollection = FILES
|
||||
filecollection {
|
||||
folders = 1:images/
|
||||
folders.recursive = 1
|
||||
|
||||
renderObj = IMAGE
|
||||
renderObj {
|
||||
file.import.data = file:current:uid
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend, FAL
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-48947:
|
||||
|
||||
===========================================
|
||||
Feature: #48947 - Avatars for backend users
|
||||
===========================================
|
||||
|
||||
See :issue:`48947`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
To improve the user experience in collaborative content editing, avatars for backend users have been introduced.
|
||||
Avatars will be either user defined by uploading a custom image or generated by the system.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The avatars will be shown in the topbar, users list and other places.
|
||||
|
||||
|
||||
.. index:: Backend
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-56133:
|
||||
|
||||
========================================================
|
||||
Feature: #56133 - Replace file feature for fal file list
|
||||
========================================================
|
||||
|
||||
See :issue:`56133`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Now its possible to replace files for a specific record at the extended view in the FAL record list.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Provides a new button "replace" at the extended view in FAL equal to DAM. It's possible to replace a file
|
||||
|
||||
* with a new one -> old file will be overwritten; identifier of the file object will be kept
|
||||
* with a new one -> old file will be deleted; identifier of the file object will be changed to the new filename
|
||||
|
||||
The file replacing also respects unique file names.
|
||||
|
||||
|
||||
.. index:: FAL, Backend
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-56644:
|
||||
|
||||
===============================================================
|
||||
Feature: #56644 - Hook for InlineRecordContainer::checkAccess()
|
||||
===============================================================
|
||||
|
||||
See :issue:`56644`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Hook to post-process `InlineRecordContainer::checkAccess` result.
|
||||
`InlineRecordContainer::checkAccess` is used to check the access to related inline records. It's implemented in the
|
||||
same way as the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/alt_doc.php']['makeEditForm_accessCheck']
|
||||
in the EditDocumentController.
|
||||
|
||||
Register it like this:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms_inline.php']['checkAccess'][] = 'My\\Package\\HookClass->hookMethod';
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-59231:
|
||||
|
||||
============================================================================
|
||||
Feature: #59231 - Hook for AbstractUserAuthentication::checkAuthentication()
|
||||
============================================================================
|
||||
|
||||
See :issue:`59231`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Hook to post-process login failures in `AbstractUserAuthentication::checkAuthentication`.
|
||||
By default the process sleeps for five seconds in case of failing. By using this hook, different solutions for
|
||||
brute force protection can be implemented.
|
||||
|
||||
Register like this:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['postLoginFailureProcessing'][] = 'My\\Package\\HookClass->hookMethod';
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-59384:
|
||||
|
||||
===================================================
|
||||
Feature: #59384 - XML parser options for xml2tree()
|
||||
===================================================
|
||||
|
||||
See :issue:`59384`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
`GeneralUtility::xml2tree()` gets an optional parameter: an array that can hold options for the parser.
|
||||
Those will simply be passed through to the PHP-function xml_parser_set_option().
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
GeneralUtility::xml2tree($xmlData, 999, array(XML_OPTION_SKIP_WHITE => 1));
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
It's just an optional parameter. If you don't specify it, simply no additional initialisation of the XML-parser will be done.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-59570:
|
||||
|
||||
=======================================================
|
||||
Feature: #59570 - Add description-field for file mounts
|
||||
=======================================================
|
||||
|
||||
See :issue:`59570`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A new field "description" has been added to the table sys_filemounts.
|
||||
With the new field it is possible to give a short description what a
|
||||
certain file mount should be used for or which documents it contains, etc.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The new field is optional and can be used in all projects.
|
||||
|
||||
|
||||
.. index:: TCA, Database, Backend
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-61308:
|
||||
|
||||
=======================================================
|
||||
Feature: #61308 - ext:form allows placeholder attribute
|
||||
=======================================================
|
||||
|
||||
See :issue:`61308`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
System extension `form` allows a placeholder attribute in textfields
|
||||
by adding it in a form configuration. However, there is no option to add
|
||||
placeholder using the form wizard, yet.
|
||||
|
||||
|
||||
.. index:: ext:form
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-61903:
|
||||
|
||||
=========================================================
|
||||
Feature: #61903 - PageTS dataprovider for backend layouts
|
||||
=========================================================
|
||||
|
||||
See :issue:`61903`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Over the last year, several extensions appeared on TER that implemented the very same basic feature:
|
||||
Deploying backend layouts without database records by providing them via PageTS.
|
||||
|
||||
Implement a generic PageTS provider for backend layouts to unify those approaches and to make backend layouts reusable
|
||||
across installations.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
It is now possible to define backend layouts via PageTSConfig on every page.
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
mod {
|
||||
web_layout {
|
||||
BackendLayouts {
|
||||
exampleKey {
|
||||
title = Example
|
||||
config {
|
||||
backend_layout {
|
||||
colCount = 1
|
||||
rowCount = 2
|
||||
rows {
|
||||
1 {
|
||||
columns {
|
||||
1 {
|
||||
name = LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:colPos.I.3
|
||||
colPos = 3
|
||||
colspan = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
2 {
|
||||
columns {
|
||||
1 {
|
||||
name = Main
|
||||
colPos = 0
|
||||
colspan = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
icon = EXT:example_extension/Resources/Public/Images/BackendLayouts/default.gif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.. index:: TSConfig, Backend
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-64200:
|
||||
|
||||
==================================================
|
||||
Feature: #64200 - Allow individual content caching
|
||||
==================================================
|
||||
|
||||
See :issue:`64200`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The `stdWrap.cache.` property is now available as first-class function to all
|
||||
content objects. This skips the rendering even for content objects that evaluate
|
||||
`stdWrap` after rendering (e.g. `COA`).
|
||||
|
||||
Usage:
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
page = PAGE
|
||||
page.10 = COA
|
||||
page.10 {
|
||||
cache.key = coaout
|
||||
cache.lifetime = 60
|
||||
#stdWrap.cache.key = coastdWrap
|
||||
#stdWrap.cache.lifetime = 60
|
||||
10 = TEXT
|
||||
10 {
|
||||
cache.key = mycurrenttimestamp
|
||||
cache.lifetime = 60
|
||||
data = date : U
|
||||
strftime = %H:%M:%S
|
||||
noTrimWrap = |10: | |
|
||||
}
|
||||
20 = TEXT
|
||||
20 {
|
||||
data = date : U
|
||||
strftime = %H:%M:%S
|
||||
noTrimWrap = |20: | |
|
||||
}
|
||||
}
|
||||
|
||||
The commented part is `stdWrap.cache.` property available since 4.7,
|
||||
that does not stop the rendering of `COA` including all sub-cObjects.
|
||||
|
||||
Additionally, stdWrap support is added to key, lifetime and tags.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If you've previously used the `cache.` property in your custom cObject,
|
||||
this will now fail, because `cache.` is unset to avoid double caching.
|
||||
You are encouraged to rely on the core methods for caching cObjects or
|
||||
rename your property.
|
||||
|
||||
`stdWrap.cache` continues to exists and can be used as before. However
|
||||
the top level `stdWrap` of certain cObjects (e.g. `TEXT` cObject)
|
||||
will not evaluate `cache.` as part of `stdWrap`, but before starting
|
||||
the rendering of the cObject. In conjunction the storing will happen
|
||||
after the `stdWrap` processing right before the content is returned.
|
||||
|
||||
Top level `cache.` will not evaluate the hook
|
||||
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore']`
|
||||
any more.
|
||||
|
||||
|
||||
.. index:: PHP-API, TypoScript, Frontend
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-65550:
|
||||
|
||||
======================================================================
|
||||
Feature: #65550 - Make table display order configurable in List module
|
||||
======================================================================
|
||||
|
||||
See :issue:`65550`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The new `PageTSconfig` configuration option `mod.web_list.tableDisplayOrder` has been added
|
||||
for the List module to allow flexible configuration of the order in which tables are displayed.
|
||||
The keywords `before` and `after` can be used to specify an order relative to other table names.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
mod.web_list.tableDisplayOrder.<tableName> {
|
||||
before = <tableA>, <tableB>, ...
|
||||
after = <tableA>, <tableB>, ...
|
||||
}
|
||||
|
||||
|
||||
.. index:: TSConfig, Backend
|
||||
@@ -0,0 +1,27 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-65698:
|
||||
|
||||
===========================================================================
|
||||
Feature: #65698 - Additional localization files in backend workspace module
|
||||
===========================================================================
|
||||
|
||||
See :issue:`65698`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The AdditionalResourceService of the workspace module in the backend is extended
|
||||
by the functionality to register custom localization files that are forwarded to
|
||||
the PageRenderer in the end. This way, labels can be accessed in JavaScript using
|
||||
the TYPO3.l10n.localize() function for instance.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
\TYPO3\CMS\Workspaces\Service\AdditionalResourceService::getInstance()->addLocalizationResource(
|
||||
'EXT:my_extension/Resources/Private/Language/locallang.xlf'
|
||||
);
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, ext:workspaces
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-66070:
|
||||
|
||||
========================================================
|
||||
Feature: #66070 - Configure anchor for pagination widget
|
||||
========================================================
|
||||
|
||||
See :issue:`66070`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
This feature allows to add a key "section" to the configuration of a fluid pagination widget. The anchor gets appended
|
||||
to every link of the pagination widget. The "widget.link" viewHelper used by the pagination widget already supports this.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
The following example will render the page browser having a section parameter "#archive" appended to every link
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<f:widget.paginate objects="{plantpestWarnings}" as="paginatedWarnings" configuration="{section: 'archive', itemsPerPage: 10, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 10}">
|
||||
[...]
|
||||
</f:widget.paginate>
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
If the "section" attribute does not get specified or no configuration is supplied at all then no section parameter
|
||||
(#section) will get appended to the links and the pagination widget behaves as usual.
|
||||
|
||||
|
||||
.. index:: Fluid
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67228:
|
||||
|
||||
======================================================================
|
||||
Feature: #67228 - Emit Signal when an IndexRecord is marked as missing
|
||||
======================================================================
|
||||
|
||||
See :issue:`67228`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The new signal `recordMarkedAsMissing` is emitted when the FAL indexer encounters a sys_file record
|
||||
which does not have a corresponding filesystem entry and marks it as missing.
|
||||
It passes the sys_file record uid.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
This can be used by extensions that provide or extend file management capabilities
|
||||
(versioning, synchronizations, recovery etc).
|
||||
|
||||
|
||||
.. index:: PHP-API, FAL, Backend
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67290:
|
||||
|
||||
===============================================================================
|
||||
Feature: #67290 - DBAL: DBMS specific conversion between Meta/MySQL field types
|
||||
===============================================================================
|
||||
|
||||
See :issue:`67290`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
DBAL did a generic translation between MySQL native and DBMS specific field types.
|
||||
|
||||
The translation of field types has been enhanced to allow more specific conversions per DBMS driver.
|
||||
Overrides for PostgreSQL have been added with optimized mappings for BLOB, SERIAL, DOUBLE and INTEGER columns.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Running PostgreSQL, the Upgrade Wizard in the Install Tool will show a lot of field alterations as the optimized mappings will be used.
|
||||
|
||||
|
||||
.. index:: Database, ext:dbal
|
||||
@@ -0,0 +1,56 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67293:
|
||||
|
||||
=============================================
|
||||
Feature: #67293 - Dependency ordering service
|
||||
=============================================
|
||||
|
||||
See :issue:`67293`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In many cases it is necessary to establish a sorted list of items from a set of "dependencies".
|
||||
The ordered list is then used to execute actions in the given order.
|
||||
|
||||
Some examples from the Core are:
|
||||
|
||||
- Hook execution order
|
||||
- Extension loading order
|
||||
- Listing of menu items
|
||||
|
||||
The dependencies are therefore specified in a relative manner, outlining that an item has to be executed/loaded/listed
|
||||
"before" or "after" some other item.
|
||||
|
||||
Typical use case:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['someExt']['someHook'][<some id>] = [
|
||||
'handler' => someClass::class,
|
||||
'runBefore' => [ <some other ID> ],
|
||||
'runAfter' => [ ... ],
|
||||
...
|
||||
];
|
||||
|
||||
In order to evaluate such relative dependencies to finally have a sorted list for `['someHook']`, we introduced a new
|
||||
helper class `\TYPO3\CMS\Core\Service\DependencyOrderingService`, which does the evaluation work for you.
|
||||
|
||||
Example usage:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$hooks = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['someExt']['someHook'];
|
||||
$sortedHooks = GeneralUtility:makeInstance(DependencyOrderingService::class)->orderByDependencies($hooks , 'runBefore', 'runAfter');
|
||||
|
||||
`$sortedHooks` will then contain the content of `$hooks`, but sorted according to the dependencies.
|
||||
|
||||
The `DependencyOrderingService` class also detects cycles in the dependencies and will throw an Exception in case
|
||||
conflicting dependencies have been defined.
|
||||
|
||||
In case the initial list does not specify a dependency for an item, those items will be put last in the final sorted list.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67360:
|
||||
|
||||
=========================================================================
|
||||
Feature: #67360 - Custom attribute name and multiple values for meta tags
|
||||
=========================================================================
|
||||
|
||||
See :issue:`67360`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
`page.meta` is extended to support different attribute names like `property` used for OG tags. You may also supply
|
||||
multiple values for one name, which results in multiple meta tags with the same name to be rendered.
|
||||
|
||||
See http://ogp.me/ for more information about the Open Graph protocol and its properties.
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
page {
|
||||
meta {
|
||||
X-UA-Compatible = IE=edge,chrome=1
|
||||
X-UA-Compatible.attribute = http-equiv
|
||||
|
||||
keywords = TYPO3
|
||||
|
||||
og:site_name = TYPO3
|
||||
og:site_name.attribute = property
|
||||
|
||||
description = Inspiring people to share Normal
|
||||
|
||||
dc\.description = Inspiring people to share [DC tags]
|
||||
|
||||
og:description = Inspiring people to share [OpenGraph]
|
||||
og:description.attribute = property
|
||||
|
||||
og:locale = en_GB
|
||||
og:locale.attribute = property
|
||||
|
||||
og:locale:alternate {
|
||||
attribute = property
|
||||
value {
|
||||
1 = fr_FR
|
||||
2 = de_DE
|
||||
}
|
||||
}
|
||||
|
||||
refresh = 5; url=http://example.com/
|
||||
refresh.attribute = http-equiv
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Meta tags with a different attribute name are supported now like the Open Graph meta tags.
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67545:
|
||||
|
||||
========================================================
|
||||
Feature: #67545 - AJAX call to check whether file exists
|
||||
========================================================
|
||||
|
||||
See :issue:`67545`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A Backend AJAX call to check whether a file exists has been added. The call needs two parameters to work properly.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The method can be called with `TYPO3.settings.ajaxUrls['file_exists']`.
|
||||
The parameters `fileName` and `fileTarget` are required:
|
||||
|
||||
* fileName: Name of the file
|
||||
* fileTarget: Combined identifier of target directory for the file
|
||||
|
||||
|
||||
.. index:: JavaScript, Backend
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67574:
|
||||
|
||||
============================================================
|
||||
Feature: #67574 - Display online status in backend user list
|
||||
============================================================
|
||||
|
||||
See :issue:`67574`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A badge that shows the online status of a backend user has been integrated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The badge will be shown next to the username in the backend user list.
|
||||
|
||||
|
||||
.. index:: Backend, ext:beuser
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67578:
|
||||
|
||||
=========================================================
|
||||
Feature: #67578 - Add description-field for backend-users
|
||||
=========================================================
|
||||
|
||||
See :issue:`67578`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A new field "description" has been added to the table be_users.
|
||||
With the new field it is possible to give a short description
|
||||
about a user, like there is already for be_groups.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
The new field is optional and can be used in all projects.
|
||||
|
||||
|
||||
.. index:: Database, TCA, Backend
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67603:
|
||||
|
||||
==========================================================
|
||||
Feature: #67603 - Introduce TCA > ctrl > descriptionColumn
|
||||
==========================================================
|
||||
|
||||
See :issue:`67603`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
To annotate database table column fields as internal description for editors and admins a new setting
|
||||
for TCA is introduced. Setting is called `['TCA'][$tableName]['ctrl']['descriptionColumn']` and holds column name.
|
||||
|
||||
This description should only displayed in the backend to guide editors and admins.
|
||||
|
||||
Usage of descriptionColumn is added under different issues.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
None, since annotation itself is added only. Does not impact.
|
||||
|
||||
|
||||
.. index:: TCA, Backend
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67658:
|
||||
|
||||
===============================================================
|
||||
Feature: #67658 - Introduce DataProcessors for splitting values
|
||||
===============================================================
|
||||
|
||||
See :issue:`67658`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Two new DataProcessors are added to allow flexible processing for comma-separated
|
||||
values. To use e.g. with the FLUIDTEMPLATE content object.
|
||||
|
||||
The SplitProcessor allows to split values separated with a delimiter inside a single database field
|
||||
into an array to loop over it.
|
||||
|
||||
The CommaSeparatedValueProcessor allows to split values into a two-dimensional array used for
|
||||
CSV files or tt_content records of CType "table".
|
||||
|
||||
Using the SplitProcessor the following scenario is possible:
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
page.10 = FLUIDTEMPLATE
|
||||
page.10.file = EXT:site_default/Resources/Private/Template/Default.html
|
||||
page.10.dataProcessing.2 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor
|
||||
page.10.dataProcessing.2 {
|
||||
if.isTrue.field = bodytext
|
||||
delimiter = ,
|
||||
fieldName = bodytext
|
||||
removeEmptyEntries = 1
|
||||
filterIntegers = 1
|
||||
filterUnique = 1
|
||||
as = keywords
|
||||
}
|
||||
|
||||
|
||||
In the Fluid template then iterate over the split data:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<f:for each="{keywords}" as="keyword">
|
||||
<li>Keyword: {keyword}</li>
|
||||
</f:for>
|
||||
|
||||
|
||||
Using the CommaSeparatedValueProcessor the following scenario is possible:
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
page.10 = FLUIDTEMPLATE
|
||||
page.10.file = EXT:site_default/Resources/Private/Template/Default.html
|
||||
page.10.dataProcessing.4 = TYPO3\CMS\Frontend\DataProcessing\CommaSeparatedValueProcessor
|
||||
page.10.dataProcessing.4 {
|
||||
if.isTrue.field = bodytext
|
||||
fieldName = bodytext
|
||||
fieldDelimiter = |
|
||||
fieldEnclosure =
|
||||
maximumColumns = 2
|
||||
as = table
|
||||
}
|
||||
|
||||
|
||||
In the Fluid template then iterate over the processed data:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<table>
|
||||
<f:for each="{table}" as="columns">
|
||||
<tr>
|
||||
<f:for each="{columns}" as="column">
|
||||
<td>{column}</td>
|
||||
</f:for>
|
||||
<tr>
|
||||
</f:for>
|
||||
</table>
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend
|
||||
@@ -0,0 +1,77 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67662:
|
||||
|
||||
=========================================
|
||||
Feature: #67662 - DataProcessor for files
|
||||
=========================================
|
||||
|
||||
See :issue:`67662`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A new Files DataProcessor has been introduced, which can be used to prepare data to be handled by a ContentObject
|
||||
implementing the processors, e.g. the FLUIDTEMPLATE ContentObject. The FilesProcessor resolves File References, Files,
|
||||
or Files inside a folder or collection to be used for output in the Frontend. A FLUIDTEMPLATE can then simply iterate
|
||||
over processed data automatically.
|
||||
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
tt_content.image.20 = FLUIDTEMPLATE
|
||||
tt_content.image.20 {
|
||||
file = EXT:myextension/Resources/Private/Templates/ContentObjects/Image.html
|
||||
|
||||
dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
|
||||
dataProcessing.10 {
|
||||
# the field name where relations are set
|
||||
# + stdWrap
|
||||
references.fieldName = image
|
||||
|
||||
# the table name where relations are put, defaults to the currently selected record from $cObj->getTable()
|
||||
# + stdWrap
|
||||
references.table = tt_content
|
||||
|
||||
# A list of sys_file UID records
|
||||
# + stdWrap
|
||||
files = 21,42
|
||||
|
||||
# A list of File Collection UID records
|
||||
# + stdWrap
|
||||
collections = 13,14
|
||||
|
||||
# A list of FAL Folder identifiers and files fetched recursive from all folders
|
||||
# + stdWrap
|
||||
folders = 1:introduction/images/,1:introduction/posters/
|
||||
folders.recursive = 1
|
||||
|
||||
# Property of which the files should be sorted after they have been accumulated
|
||||
# can be any property of sys_file, sys_file_metadata
|
||||
# + stdWrap
|
||||
sorting = description
|
||||
|
||||
# Can be "ascending", "descending" or "random", defaults to "ascending" if none given
|
||||
# + stdWrap
|
||||
sorting.direction = descending
|
||||
|
||||
# The target variable to be handed to the ContentObject again, can be used
|
||||
# in Fluid e.g. to iterate over the objects. defaults to "files" when not defined
|
||||
# + stdWrap
|
||||
as = myfiles
|
||||
}
|
||||
}
|
||||
|
||||
In the Fluid template then iterate over the files:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<ul>
|
||||
<f:for each="{myfiles}" as="file">
|
||||
<li><a href="{file.publicUrl}">{file.name}</a></li>
|
||||
</f:for>
|
||||
</ul>
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend
|
||||
@@ -0,0 +1,74 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67663:
|
||||
|
||||
=============================================================
|
||||
Feature: #67663 - Introduce DataProcessor for media galleries
|
||||
=============================================================
|
||||
|
||||
See :issue:`67663`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The logic for working with galleries and calculating the maximum asset size is done in a separate GalleryProcessor.
|
||||
The GalleryProcessor uses the files already present in the processedData array for his calculations. The FilesProcessor
|
||||
can be used to fetch the files.
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
tt_content.textmedia.20 = FLUIDTEMPLATE
|
||||
tt_content.textmedia.20 {
|
||||
file = EXT:myextension/Resources/Private/Templates/ContentObjects/Image.html
|
||||
|
||||
dataProcessing {
|
||||
|
||||
# Process files
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
|
||||
|
||||
# Calculate gallery info
|
||||
20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
|
||||
20 {
|
||||
|
||||
# filesProcessedDataKey :: Key in processedData array that holds the files (default: files) + stdWrap
|
||||
filesProcessedDataKey = files
|
||||
|
||||
# mediaOrientation :: Media orientation, see: TCA[tt_content][column][imageorient] (default: data.imageorient) + stdWrap
|
||||
mediaOrientation.field = imageorient
|
||||
|
||||
# numberOfColumns :: Number of columns (default: data.imagecols) + stdWrap
|
||||
numberOfColumns.field = imagecols
|
||||
|
||||
# equalMediaHeight :: Equal media height in pixels (default: data.imageheight) + stdWrap
|
||||
equalMediaHeight.field = imageheight
|
||||
|
||||
# equalMediaWidth :: Equal media width in pixels (default: data.imagewidth) + stdWrap
|
||||
equalMediaWidth.field = imagewidth
|
||||
|
||||
# maxGalleryWidth :: Max gallery width in pixels (default: 600) + stdWrap
|
||||
maxGalleryWidth = 1000
|
||||
|
||||
# maxGalleryWidthInText :: Max gallery width in pixels when orientation intext (default: 300) + stdWrap
|
||||
maxGalleryWidthInText = 1000
|
||||
|
||||
# columnSpacing :: Column spacing width in pixels (default: 0) + stdWrap
|
||||
columnSpacing = 0
|
||||
|
||||
# borderEnabled :: Border enabled (default: data.imageborder) + stdWrap
|
||||
borderEnabled.field = imageborder
|
||||
|
||||
# borderWidth :: Border width in pixels (default: 0) + stdWrap
|
||||
borderWidth = 0
|
||||
|
||||
# borderPadding :: Border padding in pixels (default: 0) + stdWrap
|
||||
borderPadding = 10
|
||||
|
||||
# as :: Name of key in processedData array where result is placed (default: gallery) + stdWrap
|
||||
as = gallery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.. index:: TypoScript, Frontend
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67765:
|
||||
|
||||
================================================
|
||||
Feature: #67765 - Introduce TypoLinkCodecService
|
||||
================================================
|
||||
|
||||
See :issue:`67765`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The new `TypoLinkCodecService` class helps to simplify encoding and decoding of TypoLink strings.
|
||||
|
||||
A given TypoLink string can be passed to the `decode` method, which will return an associative array with the decoded parts.
|
||||
The `encode` method takes care of assembling a valid TypoLink string for an array of TypoLink parts.
|
||||
|
||||
The encoding uses proper quoting and escaping, which allows safe usage of characters like `"\<space>`.
|
||||
|
||||
|
||||
.. index:: PHP-API, Frontend, Backend
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67808:
|
||||
|
||||
===============================================================================================
|
||||
Feature: #67808 - Introduce Application classes for entry points and equivalent RequestHandlers
|
||||
===============================================================================================
|
||||
|
||||
See :issue:`67808`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
All entry points are encapsulating all previous initialization code in an Application class depending on the TYPO3_MODE
|
||||
and several context-dependant constraints. Each Application class registers Request Handlers to the TYPO3 Bootstrap to
|
||||
run a certain request type (e.g. eID or TSFE-logic, or AJAX requests in the Backend). Each Application is handed
|
||||
over the Class Loader provided by Composer.
|
||||
|
||||
There are four types of Applications provided by the TYPO3 Core:
|
||||
|
||||
\\TYPO3\\CMS\\Frontend\\Http\\Application
|
||||
-----------------------------------------
|
||||
All incoming web requests coming to index.php in the main directory, handling all TSFE and eID requests.
|
||||
The Application sets TYPO3_MODE=FE very early.
|
||||
The Application checks if all configuration is given, otherwise redirects to the TYPO3 Install Tool.
|
||||
|
||||
\\TYPO3\\CMS\\Backend\\Http\\Application
|
||||
----------------------------------------
|
||||
All incoming web requests for any regular Backend call inside typo3/\*. This handles three types of Request Handlers:
|
||||
|
||||
- The AJAX Request Handler, which is triggered on requests with an "ajaxID" GET Parameter given.
|
||||
- The Backend Module Request Handler, which handles all types of modules triggered on requests with an "M" GET Parameter
|
||||
- The regular Request handler for typical other backend calls on index.php.
|
||||
|
||||
The Application checks if all configuration is given, otherwise redirects to the TYPO3 Install Tool.
|
||||
|
||||
\\TYPO3\\CMS\\Backend\\Console\\Application
|
||||
-------------------------------------------
|
||||
All CLI Requests handled by cli_dispatch.php. Only executes the parts that are necessary for Backend CLI Scripts used
|
||||
with the cliKey syntax. The typical CliRequestHandler is used for handling requests set up by this Application.
|
||||
|
||||
\\TYPO3\\CMS\\Install\\Http\\Application
|
||||
----------------------------------------
|
||||
The install tool Application only runs with a very limited bootstrap set up with a Failsafe Package Manager not taking
|
||||
the ext_localconf.php scripts of installed extensions into account.
|
||||
|
||||
|
||||
.. index:: PHP-API
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67880-1668719172:
|
||||
|
||||
========================================
|
||||
Feature: #67880 - Added count to listNum
|
||||
========================================
|
||||
|
||||
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,
|
||||
in some cases we 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,82 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67932-1668719172:
|
||||
|
||||
=================================
|
||||
Feature: #67932 - New rsaauth API
|
||||
=================================
|
||||
|
||||
See :issue:`67932`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The rsaauth API has been rewritten to be more generic and can now be used easily in more parts of the core as well as
|
||||
in third party extensions.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Form fields (e.g. password fields) can be encrypted before transmission. This helps to improve the security of your and
|
||||
your user's data.
|
||||
|
||||
|
||||
Examples
|
||||
========
|
||||
|
||||
Encode
|
||||
------
|
||||
|
||||
Encoding is done automatically via a JavaScript function which gets a public key and encrypts the data.
|
||||
|
||||
1) Include JavaScript to parse form fields for encryption. You can either choose to include a RequireJS module or a
|
||||
plain Javascript file.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$rsaEncryptionEncoder = GeneralUtility::makeInstance(\TYPO3\CMS\Rsaauth\RsaEncryptionEncoder::class);
|
||||
$rsaEncryptionEncoder->enableRsaEncryption(); // Adds plain JavaScript
|
||||
$rsaEncryptionEncoder->enableRsaEncryption(TRUE); // Adds RequireJS module
|
||||
|
||||
2) Activate encryption for your from fields with the data attribute `data-rsa-encryption`.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input type="password" id="pass" name="pass" value="" data-rsa-encryption="" />
|
||||
|
||||
If you want the encrypted value to be stored in another field, you have to use the RequiredJS module and you can
|
||||
pass the id of that form field as value to the data attribute.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input type="password" id="t3-password" name="p_field" value="" data-rsa-encryption="t3-field-userident" />
|
||||
<input type="hidden" name="userident" id="t3-field-userident" />
|
||||
|
||||
Decode
|
||||
------
|
||||
|
||||
To decode your data you can use the method `TYPO3\CMS\Rsaauth\RsaEncryptionDecoder::decrypt` which can
|
||||
either handle a string or an array as parameter. Data that is handled by \TYPO3\CMS\Core\DataHandling\DataHandler will
|
||||
be decoded automatically before processing.
|
||||
|
||||
Notice: A RSA public key can only be used once to decrypt data. If you encrypt multiple fields in your form
|
||||
you have to pass an array to the decrypt function with all data you want to decrypt. The function parses the
|
||||
values for a `rsa:` prefix so you can be sure that non-matching data will not be changed.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$rsaEncryptionDecoder = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Rsaauth\RsaEncryptionDecoder::class);
|
||||
|
||||
// Decrypt a single string
|
||||
$password = $loginData['uident'];
|
||||
$decryptedPassword = $rsaEncryptionDecoder->decrypt($password);
|
||||
|
||||
// Decrypt an array
|
||||
if ($this->isRsaAvailable()) {
|
||||
$parameters['be_user_data'] = $this->getRsaEncryptionDecoder()->decrypt($parameters['be_user_data']);
|
||||
}
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend, ext:rsaauth
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-67950:
|
||||
|
||||
===================================================================
|
||||
Feature: #67950 - Move CE table options from flexform to tt_content
|
||||
===================================================================
|
||||
|
||||
See :issue:`67950`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The CE table (processing) configuration
|
||||
|
||||
* `Table caption`
|
||||
* `Field delimiter`
|
||||
* `Text enclosure`
|
||||
* `Table header position`
|
||||
* `Use table footer`
|
||||
|
||||
were in EXT:css_styled_content configured/saved in a flexform. This has now been moved to regular database fields.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
When EXT:css_styled_content isn't installed a Migration wizard is shown in the install tool to move the flexform values
|
||||
to regular database fields in the tt_content table.
|
||||
|
||||
|
||||
.. index:: FlexForm, Backend, ext:css_styled_content
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-68022:
|
||||
|
||||
=============================================================
|
||||
Feature: #68022 - Added base date attribute to DateViewHelper
|
||||
=============================================================
|
||||
|
||||
See :issue:`68022`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The DateViewHelper has been improved with an optional attribute named `base`.
|
||||
The attribute can be used to define a base-date when using a relative time specification for `date`.
|
||||
If `date` is a `DateTime` object, `base` is ignored.
|
||||
|
||||
The possible relative date format specification can be found in:
|
||||
http://www.php.net/manual/en/datetime.formats.relative.php
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<f:format.date format="Y" base="{dateObject}">-1 year</f:format.date>
|
||||
|
||||
This will result in the output `2016` assuming the `dateObject` is some date in 2017.
|
||||
|
||||
|
||||
.. index:: Fluid
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-68047:
|
||||
|
||||
======================================================
|
||||
Feature: #68047 - Emit a signal for each mapped object
|
||||
======================================================
|
||||
|
||||
See :issue:`68047`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The signal `afterMappingSingleRow` is emitted whenever the DataMapper creates an object.
|
||||
|
||||
|
||||
.. index:: PHP-API, Backend
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-68094:
|
||||
|
||||
==============================================
|
||||
Feature: #68094 - Database Query DataProcessor
|
||||
==============================================
|
||||
|
||||
See :issue:`68094`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A new Database Query DataProcessor has been introduced, which can be used to fetch data from the Database
|
||||
to be handled by a ContentObject implementing the processors, e.g. the FLUIDTEMPLATE ContentObject.
|
||||
|
||||
The Database Query Processor works like the code from the Content Object CONTENT, except for just handing
|
||||
over the result as array. A FLUIDTEMPLATE can then simply iterate over processed data automatically.
|
||||
|
||||
.. code-block:: typoscript
|
||||
|
||||
tt_content.mycontent.20 = FLUIDTEMPLATE
|
||||
tt_content.mycontent.20 {
|
||||
file = EXT:myextension/Resources/Private/Templates/ContentObjects/MyContent.html
|
||||
|
||||
dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
|
||||
dataProcessing.10 {
|
||||
# regular if syntax
|
||||
if.isTrue.field = records
|
||||
|
||||
# the table name from which the data is fetched from
|
||||
# + stdWrap
|
||||
table = tt_address
|
||||
|
||||
# All properties from .select can be used directly
|
||||
# + stdWrap
|
||||
colPos = 1
|
||||
pidInList = 13,14
|
||||
|
||||
# The target variable to be handed to the ContentObject again, can be used
|
||||
# in Fluid e.g. to iterate over the objects. defaults to "records" when not defined
|
||||
# + stdWrap
|
||||
as = myrecords
|
||||
|
||||
# The fetched records can also be processed by DataProcessors.
|
||||
# All configured processors are applied to every row of the result.
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
|
||||
10 {
|
||||
references.fieldName = image
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
In the Fluid template then iterate over the files:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<ul>
|
||||
<f:for each="{myrecords}" as="record">
|
||||
<li>
|
||||
<f:image image="{record.files.0}" />
|
||||
<a href="{record.data.www}">{record.data.first_name} {record.data.last_name}</a>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
|
||||
|
||||
.. index:: Frontend, Fluid
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user