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.