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 an 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.