Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

TYPO3.CMS/Releases/7.5/Breaking

From TYPO3Wiki
Jump to: navigation, search

Contents

Breaking: #24186 - HTMLparser - fixAttrib.['class'].list does not assign first element, when attribute value not in list

Description

The HTMLparser now assigns the first class of fixAttrib.class.list when none of the given class name values are found in the configured list. Until now the class attribute of the rendered HTML tag was just empty in that case.

Impact

A HTML element that had no class before could now have been assigned a class.

Migration

Add a class from the configured list to the HTML element or add a class at the first position of fixAttrib.class.list.

Breaking: #30863 - Streamlined parameters for adding inline language files

Description

The method addInlineLanguageLabelFile of the PageRenderer handles the optional parameter $stripFromSelectionName, a string that should be removed from any label key in the given file. This did not work until now, so the label keys were never stripped. As this functionality is now working it could end up with different label keys in the output.

Impact

Inline Javascript label keys could have changed.

Affected Installations

Any third party code using PageRenderer->addInlineLanguageLabelFile() with the parameter $stripFromSelectionName set to anything but an empty string.

Migration

Change the call to PageRenderer->addInlineLanguageLabelFile() with $stripFromSelectionName = or adjust your Javascript to handle the now correctly rendered label keys.

Breaking: #52156 - Replaced JumpURL features with hooks

Description

JumpURL handling

The generation and handling of JumpURLs has been removed from the frontend extension and has been moved to a new core extension called "jumpurl".

URL handler hooks

New hooks were introduced in TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer and \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController that allow custom URL generation and handling.

This is how you can register a hook for manipulating URLs during link generation:

// Place this in your ext_localconf.php file
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['urlProcessing']['urlHandlers']['myext_myidentifier']['handler'] =
    \Company\MyExt\MyUrlHandler::class;

// The class needs to implement the UrlHandlerInterface:
class MyUrlHandler implements \TYPO3\CMS\Frontend\Http\UrlHandlerInterface {}

This is how you can handle URLs in a custom way:

// Place this in your ext_localconf.php file
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['urlProcessing']['urlProcessors']['myext_myidentifier']['processor']
    = \Company\MyExt\MyUrlProcessor::class;

// The class needs to implement the UrlProcessorInterface:
class MyUrlProcessor implements \TYPO3\CMS\Frontend\Http\UrlProcessorInterface {}

External URL page handling

The core functionality for redirecting the user to an external URL when he hits a page with doktype "external" is moved from the \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController to the \TYPO3\CMS\Frontend\Page\ExternalPageUrlHandler class.

ResourceStorage adjustment

The method \TYPO3\CMS\Core\Resource\ResourceStorage::dumpFileContents() accepts an additional parameter for overriding the mime type that is sent in the Content-Type header when delivering a file.

Impact

Unless the jumpurl extension is installed, no JumpURL related feature will work anymore.

If an extension tightly integrates into the JumpURL process it might break, because some of the related methods have been removed, disabled or changed.

These methods have been removed and their functionality has been moved to the new jumpurl extension:

\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::locDataJU()

\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::locDataCheck()

The $initP parameter of the method \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::getMailTo() has been removed.

The method \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::setExternalJumpUrl() has been marked as deprecated and is an alias for the new initializeRedirectUrlHandlers() method that does no jumpurl handling any more. The new method only checks if the current page is a link to an external URL and sets the redirectUrl property.

The method \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::jumpUrl() has also been marked as deprecated and is an alias for the new redirectToExternalUrl() method. The jumpurl handling has been removed from this method. It loops over all registered URL handlers and handles the redirection to the redirectUrl.

Affected installations

All CMS 7.4 installations that use the JumpURL features or that use Extensions that rely on these features or one of the removed methods.

Migration

If you want to use the JumpURL features you need to install the jumpurl extension. Your configuration should work as before.

Please note that the configuration of the filelink <t3tsref:filelink> TypoScript function has changed. Passing the jumpurl parameter in the configuration has been marked as deprecated and will be removed in future versions.

You can now pass arbitrary configuration options for the typolink call that is used to generate the file link in the typolinkConfiguration parameter:

lib.myfilelink = TEXT
lib.myfilelink.value = fileadmin/myfile.txt
lib.myfilelink.filelink {
    typolinkConfiguration.jumpurl = 1
    typolinkConfiguration.jumpurl.secure = 1
}

Breaking: #63000 - Migrate EXT:cshmanual to Extbase

Description

The extension "cshmanual" has been migrated to a newer code base by using Extbase and Fluid.

Impact

Any call to the previous public methods of the old controller HelpModuleController will fail as the code base changed.

Affected installations

Any installation using an extension which calls the previously available methods directly.

Migration

Use the Extbase controller or Repository class.

Breaking: #65317 - TypoScriptParser sortList sanitizes input on numerical sort

Description

When calling the := sortList() with a "numeric" modifier of the TypoScript parser with a string, the sort() method differs between PHP versions. In order to make this behavior more strict, a check is done before the elements are sorted to only have numeric values in the list, otherwise an Exception is thrown.

Impact

An exception is thrown if non-numerical values are given for a numeric sort in TypoScripts sortList.

Affected Installations

All installations using sortList numeric with non-numerical values.

Migration

Either remove the non-numerical values from the list or change the sort order to be non-numerical (ascending / descending).

Breaking: #66190 - Remove flash and chart from ExtJS

Description

The flash and chart module is removed from ExtJS. In order to reduce ExtJS components this is a first step.

Impact

Extensions which use the flash and chart module from ExtJS will not work anymore.

Affected Installations

Installations that use flash or chart module of ExtJS.

Migration

Don't use cores ExtJS anymore, as we migrate away from it. Use other JS frameworks which implement such functionality for you.

Breaking: #67098 - Correct required-parameter in TextfieldViewHelper

Description

The value comparison of the required parameter has been corrected. Prior to this change, a textfield was required as soon as it had a parameter "required" set to any value even if this value was set to FALSE, the textfield was still required.

Impact

Textfields with required="FALSE" are not required any longer.

Affected Installations

Every installation that uses the textfield viewhelper with the required attribute.

Migration

No migration is necessary.

Breaking: #68354 - Uniform extension directory structure of EXT:indexed_search

Description

The directory structure of the extension "Indexed Search" has been streamlined.

Impact

All language files are now located in directory Resources/Private/Language, the template files in Resources/Private/Templates. Icons from pi/res directory have been moved to Resources/Public/Icons, images to Resources/Public/Images.

Affected Installations

Installations that use EXT:indexed_search that depend on paths that have been moved.

Migration

Make sure your configuration matches with new directory structure.

Breaking: #68401 - SqlParser moved into EXT:dbal

Description

The SQL Parser included with the core has not been in use by anything except EXT:dbal for some time. The SQL parser has been merged with the version in EXT:dbal which now provides parsing and compiling of SQL statements for MySQL as well as other DBMS.

Impact

There is no impact for the core as EXT:dbal was the sole user of the SQL parser and it has been migrated into EXT:dbal.

As the parsing and the compiling of SQL statements has been separated into multiple classes the non-public interface of SqlParser has changed. Classes extending SqlParser need to be adjusted to the new interface.

Affected Installations

Installations with 3rd party extensions that use \TYPO3\CMS\Core\Database\SqlParser.

Migration

Update the code to use \TYPO3\CMS\Dbal\Database\SqlParser instead of \TYPO3\CMS\Core\Database\SqlParser or install EXT:compatibility6 which maps the old class names to the new ones in EXT:dbal.

Breaking: #68562 - Bool values need to be cast to integer for MySQL strict mode

Description

MySQL strict mode doesn't accept as a valid value to store in an integer column if the MySQL server is running in strict mode.

mysqli_real_escape() casts boolean values to string using '1' (for TRUE) and (for FALSE). Due to this special handling is required for boolean values to result in '0' and '1' for FALSE/TRUE.

Impact

All TYPO3 CMS installations using MySQL as DBMS.

Affected Installations

Installations where 3rd party extension are relying on FALSE being cast to when they are storing boolean values in character type columns. In this case new values will get stored as '0'

Migration

Adjust the code to either store boolean values in integer type columns or manually cast the boolean value to string before storing it in the database.

Breaking: #68571 - Removed method ElementBrowser->getMsgBox

Description

The removed method getMsgBox in ElementBrowser used table based styling. The method has been removed since we have better means to display this kind of messages: FlashMessages or Callouts.

Impact

A fatal error will be thrown if the method getMsgBox is used.

Affected Installations

Third party code using the removed method.

Migration

Remove the call to the method and replace the message with a FlashMessage.

Breaking: #68812 - Old Backend Entrypoints moved to deprecation layer

Description

The backend entry points within the typo3/ directory which have been marked as deprecated in favor of using typo3/index.php directly as Entry Point via Request Handling, have been moved to a deprecation.php file.

The following files have therefore been removed from the typo3/ directory directly:

typo3/ajax.php
typo3/alt_clickmenu.php
typo3/alt_db_navframe.php
typo3/alt_doc.php
typo3/alt_file_navframe.php
typo3/browser.php
typo3/db_new.php
typo3/dummy.php
typo3/init.php
typo3/login_frameset.php
typo3/logout.php
typo3/mod.php
typo3/move_el.php
typo3/show_item.php
typo3/tce_db.php
typo3/tce_file.php
typo3/thumbs.php

The typo3/install/ entrypoint is now also redirected with a rewrite rule.

Impact

All references / links to these entry points directly without using the proper API calls will result in a 404 error.

If an Apache webserver is used with the enabled mod_rewrite module, a .htaccess file placed inside typo3/ will rewrite the URLs to the deprecated.php and throw a deprecation warning.

For Nginx and IIS an alternative for the rewrite rules in the shipped typo3/.htaccess within needs to be added.

Affected Installations

Installations with third-party extensions that link directly to these files.

Migration

Move all existing code in extensions that link to the deprecated entry points to use methods like BackendUtility::getModuleUrl() and BackendUtility::getAjaxUrl() or the UriBuilder class.

Breaking: #68814 - Remove of base constant TYPO3_URL_ORG

Description

Base constant TYPO3_URL_ORG defined in SystemEnvironmentBuilder::defineBaseConstants() has been removed. It was for internal usage only and defined at 2 places in the core.

Impact

Constant TYPO3_URL_ORG no longer exists.

Migration

Use TYPO3_URL_GENERAL instead.

Breaking: #69028 - TCA type select - Drop neg_foreign_table

Description

The following TCA keys for type select have been dropped and are no longer handled by the core:

* neg_foreign_table
  • neg_foreign_table_where
  • neg_foreign_table_prefix
  • neg_foreign_table_loadIcons
  • neg_foreign_table_imposeValueField

These setting were used in select for comma separated value relations in addition to foreign_table to allow a second connected table. Relations for neg_foreign_table were stored as negative uids in the field to distinguish them from relations to the table defined in foreign_table.

The functionality has been dropped without substitution and is no longer handled by the TYPO3 core.

Impact

Existing relations to the table defined in neg_foreign_table will be discarded when a record with such a TCA configuration is saved to the database. The display of existing connected records may be misleading.

Affected Installations

This old school feature was never documented well and used by a very small amount of extensions. Searching an instance for the keyword neg_foreign_table will reveal usages.

Migration

In case records from multiple different tables must still be supported, the TCA configuration should be adapted to use a MM intermediate table. For existing migrations a database migration is required.

Breaking: #69057 - Deprecate IconUtility and move methods into IconFactory

Description

While refactoring the IconUtility to the new IconFactory class, several methods have been marked as deprecated. In some cases parameters of the old IconUtility methods are not used anymore. The following list describes the possible breaking changes.

The second parameter $options of method IconUtility::getSpriteIconForFile() is not used anymore. The third parameter $options of method IconUtility::getSpriteIconForRecord() is not used anymore.

The IconUtility signals buildSpriteIconClasses and buildSpriteHtmlIconTag have been dropped and will not be emitted anymore. The IconUtility hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_iconworks.php']['overrideIconOverlay'] has been dropped and will not be called anymore.

Impact

Extensions could break if the methods, signals or hooks above are used.

Affected Installations

Extensions that call the methods with the $options parameter or make use of the signals and hook.

Migration

Make use of the new IconFactory class.

Breaking: #69083 - Renamed identifier for filelist module

Description

The filelist module was rewritten to use Extbase. Therefore the module identifier has been changed from file_list to file_FilelistList.

Impact

All links pointing to the filelist module using the old identifier will break.

Affected Installations

All installations that reference the filelist module by its old name.

Migration

There is a upgrade wizard to change the backend user settings of users whose start module is the filelist module. All other links to the module have to be changed manually to use file_FilelistList as module identifier.

Breaking: #69148 - Backend Module Dispatching removed

Description

Dispatching Backend modules through custom dispatchers have been removed. The corresponding Extbase functionality called "ModuleRunner" and its Interface have been removed as well.

Impact

Any dispatcher registered via $TBE_MODULES['_dispatcher'] is not evaluated anymore.

Affected Installations

All TYPO3 Instances with an extension that registers a custom backend module dispatcher.

Migration

Use a custom RequestHandler.

Breaking: #69161 - Removed includeCsh setting from ContainerViewHelper

Description

Include CSH setting in <f:be.container> is not needed anymore and has therefore been removed. The JavaScript will be loaded automatically when ext:cshmanual is enabled.

Impact

Using <f:be.container> ViewHelpers in a custom Backend module, setting the includeCsh property, will result in a fatal error.

Affected Installations

Extensions that use <f:be.container> which set the setting includeCsh

Migration

Remove the property from the template. When ext:cshmanual is enabled the JavaScript is loaded automatically.

Breaking: #69168 - Removed non-tabbed view of Content Element Wizard

Description

The "New Content Element Wizard" view to show possible content elements to create now only shows the elements in a tabbed view. The non-tabbed view variant has been removed without substitution.

The TSconfig option mod.wizards.newContentElement.renderMode has been removed.

Migration

Remove the TSconfig option mod.wizards.newContentElement.renderMode from any configuration settings.

Breaking: #69224 - Fix wrong usage of enumerations in InformationStatus::mapStatusToInt()

Description

The InformationStatus enumeration provides a mapStatusToInt() method. * The method expects a string but should expect an enum of itself. * The method logic is not what is expected from an enumeration method as it does not do any logic comparison. Therefore it has been replaced by isGreaterThan() as this was the logic that has been checked everywhere mapStatusToInt() has been used.

Impact

The method InformationStatus::mapStatusToInt() has been replaced by InformationStatus::isGreaterThan() and all usages have been replaced by the new method / logic. As the InformationStatus Enum has been introduced in 7.4 it should not be used by any public API and therefore the change should not have much impact.

Breaking: #69276 - ElementBrowserController::$browser removed

Description

The $browser member variable of \TYPO3\CMS\Recordlist\Controller\ElementBrowserController has been removed.

Impact

Any third party code accessing $GLOBAL['SOBE']->browser will break.

Affected Installations

Installations using third party code, which accesses $GLOBAL['SOBE']->browser.

Migration

If the code is extending one of the ElementBrowser tree classes, the protected member variable $elementBrowser can be used to access the underlying ElementBrowser instance.

If your code is using the ElementBrowser tree classes, an instance of ElementBrowser has to be injected using the setter.

Breaking: #69291 - Changed registration of backend module icons

Description

The sprite icon support for backend modules introduced with CMS 7.3 has been adjusted again. The configuration has been streamlined.

Impact

The specified icon will not be recognized.

Affected Installations

Any installation running TYPO3 CMS 7.3+ having third party extensions which use sprite icons for backend modules.

Migration

Change the configuration from

'configuration' => array(
    'icon' => 'module-web',
),

to

'iconIdentifier' => 'module-web',

Breaking: #69315 - ElementBrowser::main_* protected

Description

The ElementBrowser::main_* methods have been marked protected as the new render method is the main entry point to the class. Additionally the public member ElementBrowserController::mode has been protected as well.

The ElementBrowserController::content member and the ElementBrowserController::printContent() method have been removed.

Impact

Any code calling the protected or removed methods or using the protected member will fail with a fatal error. Any code using the removed member will receive only an empty value. (PHP fallback for non-existing class members)

Affected Installations

Any installation using third party code calling the mentioned methods or member.

Migration

Ensure the intended mode is passed in via the mode GET-parameter and call the new ElementBrowser::render method.

Breaking: #69401 - Adopt form to support the Extbase/ Fluid MVC stack

Description

The postProcessor interface and the mail postProcessor have changed.

Validators and filters have been moved to other folders and both class names and algorithms have changed.

Impact

Own postProcessors, validators and filters will possibly fail with an error.

Affected Installations

Installations with own postProcessors, validators and filters.

Migration

Adopt own postProcessors, validators and filters to comply with the current implementation.

Breaking: #69561 - Replace sprite icons with IconFactory in ContextMenu

Description

SpriteIcon and standalone image support have been replaced with IconFactory in the context menu. All menu icons now need to be registered through the IconRegistry.

Impact

The UserTsConfig options for items icon and spriteIcon have no effect anymore, and will deliver a blank placeholder image if iconName is not set.

Affected Installations

All installations that add or modify items in the ContextMenu.

Migration

Register the icon through the IconRegistry and set the iconName in the item configuration.

// Register Icon
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon(
    'contextmenu-example',
    \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
    array(
        'source' => 'EXT:example/Resources/Public/Icons/contextmenu-example.svg'
    ))
);
options.contextMenu.table {
    virtual_root.items {
        9999 = ITEM
        9999 {
            name = contextmenuExample
            label = LLL:EXT:example/Resources/Private/Language/locallang.xlf:contextmenu-example
            iconName = contextmenu-example
            callbackAction = exampleCallback
        }
    }
}

Breaking: #69568 - FormEngine related classes

Description

The following classes have been removed:

  • \TYPO3\CMS\Backend\Form\DataPreprocessor
  • \TYPO3\CMS\Backend\Form\FormEngine
  • \TYPO3\CMS\Backend\Form\FlexFormsHelper

The following hook has been removed:

  • $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass']

Impact

Code trying to instantiate these classes will fatal.

Affected Installations

A rather low number of extensions should be affected by this change. Searching for the above class names should reveal them.

Migration

The methods and classes have been moved to different classes and solutions. Extensions needs adaption.

The hook getMainFieldsClass has been substituted with a much more fine grained and flexible API. Use FormDataProvider to change data given to the render engine of FormEngine from now on.

Breaking: #69699 - TCA ctrl typeicons removed

Description

The TCA['ctrl']['typeicons'] key has been removed.

Impact

If still used, a fallback default icon may be displayed instead.

Affected Installations

Searching for typeicons keyword should reveal extensions using this functionality.

Migration

Until further works on the icon API have been finished, TCA['ctrl']['typeicon_classes'] should be used as documented in the TCA reference.

Breaking: #69795 - Unused DTM Tabmenu code removed

Description

All DynTabMenu JavaScript and CSS code which was previously used to render Tab Menus in the TYPO3 Backend has been removed without substitution.

Impact

All logic that requires EXT:backend/Resources/Public/JavaScript/tabmenu.js directly and/or use the JavaScript code of DTM_activate() or DTM_toggle() directly have been removed.

Affected Installations

TYPO3 Installations with custom extensions that use the logic mentioned above.

Migration

Use DocumentTemplate::getDynamicTabMenu() directly to use the Bootstrap-based API shipped with the TYPO3 Core.

Breaking: #69904 - Remove Setting diff_path from DefaultConfiguration

Description

Creating a diff view of text has been replaced with a PHP library instead of using diff on the command line. Thus we no longer need to be able to configure the path.

Impact

The setting [BE][diff_path] will no longer have any effect.

Affected Installations

Any Installation that had to define a path different than diff

Migration

Delete the line from LocalConfiguration.php if the UpgradeWizard should fail to do so.

Breaking: #69930 - Remove option "serverTimeZone"

Description

The option $TYPO3_CONF_VARS['SYS']['serverTimeZone'] which was introduced when there was no clean way to fetch the timezone option in the PHP4 environment, has been removed. It was solved in PHP 5.1.0 which introduced date_default_timezone_get() which is used by the TYPO3 Core by default.

Impact

Accessing the option will result in a PHP notice, as it has been removed in TYPO3 CMS 7. Extensions making use of this option will result in an unexpected behaviour as possible calculations are wrong.

Affected Installations

Any TYPO3 installation which uses a third-party extensions that uses this option.

Migration

Use native timezone support by PHP directly. See date_default_timezone_get() for more information.