Deprecation: #85902 - IMGMENU/GMENU

See Issue #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.