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