Deprecation: #85902 - IMGMENU/GMENU¶
See forge#85902
Description¶
Rendering a Hierarchical Menu via TypoScript previously allowed various rendering methods, namely textual (TMENU
),
but also rendering menu items as images (GMENU
) or as a image map (IMGMENU
). Both graphical possibilities
have been marked as deprecated, as it is considered bad practice building websites
nowadays - images with a fixed width, and text within images has various drawbacks in terms of accessibility and
responsive renderings.
The following PHP classes have been marked as deprecated:
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject
TYPO3\CMS\Frontend\ContentObject\Menu\ImageMenuContentObject
The related TypoScript menu objects GMENU
and GMENUITEM
as well as IMGMENU
and IMGMENUITEM
have been
marked as deprecated.
On top the following TypoScript options within a MENU item, regarding TMENU have been marked as deprecated:
imgNamePrefix
imgNameNotRandom
The following TMENU item properties should not be used anymore.
RO_chBgColor
beforeImg
beforeImgTagParams
beforeImgLink
beforeROImg
RO
afterImg
afterImgTagParams
afterImgLink
afterROImg
The following item states have been marked as deprecated ("RO" for "rollover" in graphics-related items).
IFSUBRO
ACTRO
ACTIFSUBRO
CURRO
CURIFSUBRO
USRRO
USERDEF1RO
USERDEF2RO
The following previously public properties are now marked as internal and trigger a PHP E_USER_DEPRECATED
error,
partly due to preparations of refactoring the PHP code once GMENU functionality is removed, and partly
due to the highly connected functionality within the PHP classes:
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuNumber
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->entryLevel
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->spacerIDList
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->doktypeExcludeList
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->alwaysActivePIDlist
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->imgNamePrefix
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->imgNameNotRandom
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->debug
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->GMENU_fixKey
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->MP_array
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->conf
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->mconf
[not scanned]
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->tmpl
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->sys_page
[not scanned]
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->id
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->nextActive
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuArr
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->hash
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->result
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->rL_uidRegister
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->INPfixMD5
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->I
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMresult
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMfreezePrefix
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMmenuItems
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMsubmenuObjSuffixes
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMextraScript
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMcObj
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->alternativeMenuTempArray
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->nameAttribute
The following methods have changed visibility:
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->subMenu()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->link()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->procesItemStates()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->changeLinksForAccessRestrictedPages()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isNext()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isActive()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isCurrent()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isSubMenu()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isItemState()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->accessKey()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->userProcess()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->setATagParts()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getPageTitle()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getMPvar()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getDoktypeExcludeWhere()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getBannedUids()
TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuTypoLink()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_RO()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_init()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_beforeLinking()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_afterLinking()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_beforeAllWrap()
TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_finish()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->getBeforeAfter()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_init()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_beforeLinking()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_afterLinking()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_beforeAllWrap()
TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_finish()
The following functionality has been marked as deprecated as well:
TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->setJS('mouseOver')
Impact¶
Instantiating any of the deprecated PHP classes, or calling any of the PHP methods will trigger a
PHP E_USER_DEPRECATED
error, as well as setting any of the previously public properties.
Using GMENU
or IMGMENU
or any of the TypoScript settings will also raise a PHP E_USER_DEPRECATED
error.
Affected Installations¶
TYPO3 installations using GMENU
or IMGMENU
TypoScript functionality, roll-over functionality within menus
in Frontend, or image-related functionality related to HMENU
, or extending HMENU
with their custom menus.
Migration¶
Migrate to TMENU
by using "before" and "after" functionality to effectively render images with GIFBUILDER
.