1.. include:: ../../Includes.txt 2 3=================================== 4Deprecation: #85902 - IMGMENU/GMENU 5=================================== 6 7See :issue:`85902` 8 9Description 10=========== 11 12Rendering a Hierarchical Menu via TypoScript previously allowed various rendering methods, namely textual (`TMENU`), 13but also rendering menu items as images (`GMENU`) or as a image map (`IMGMENU`). Both graphical possibilities 14have been marked as deprecated, as it is considered bad practice building websites 15nowadays - images with a fixed width, and text within images has various drawbacks in terms of accessibility and 16responsive renderings. 17 18The following PHP classes have been marked as deprecated: 19 20* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject` 21* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\ImageMenuContentObject` 22 23The related TypoScript menu objects `GMENU` and `GMENUITEM` as well as `IMGMENU` and `IMGMENUITEM` have been 24marked as deprecated. 25 26On top the following TypoScript options within a MENU item, regarding TMENU have been marked as deprecated: 27 28* imgNamePrefix 29* imgNameNotRandom 30 31The following TMENU item properties should not be used anymore. 32 33* RO_chBgColor 34* beforeImg 35* beforeImgTagParams 36* beforeImgLink 37* beforeROImg 38* RO 39* afterImg 40* afterImgTagParams 41* afterImgLink 42* afterROImg 43 44The following item states have been marked as deprecated ("RO" for "rollover" in graphics-related items). 45 46* IFSUBRO 47* ACTRO 48* ACTIFSUBRO 49* CURRO 50* CURIFSUBRO 51* USRRO 52* USERDEF1RO 53* USERDEF2RO 54 55The following previously public properties are now marked as internal and trigger a PHP :php:`E_USER_DEPRECATED` error, 56partly due to preparations of refactoring the PHP code once GMENU functionality is removed, and partly 57due to the highly connected functionality within the PHP classes: 58 59* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuNumber` 60* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->entryLevel` 61* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->spacerIDList` 62* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->doktypeExcludeList` 63* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->alwaysActivePIDlist` 64* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->imgNamePrefix` 65* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->imgNameNotRandom` 66* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->debug` 67* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->GMENU_fixKey` 68* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->MP_array` 69* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->conf` 70* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->mconf` 71* [not scanned] :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->tmpl` 72* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->sys_page` 73* [not scanned] :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->id` 74* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->nextActive` 75* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuArr` 76* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->hash` 77* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->result` 78* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->rL_uidRegister` 79* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->INPfixMD5` 80* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->I` 81* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMresult` 82* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMfreezePrefix` 83* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMmenuItems` 84* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMsubmenuObjSuffixes` 85* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMextraScript` 86* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->WMcObj` 87* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->alternativeMenuTempArray` 88* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->nameAttribute` 89 90The following methods have changed visibility: 91 92* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->subMenu()` 93* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->link()` 94* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->procesItemStates()` 95* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->changeLinksForAccessRestrictedPages()` 96* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isNext()` 97* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isActive()` 98* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isCurrent()` 99* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isSubMenu()` 100* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->isItemState()` 101* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->accessKey()` 102* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->userProcess()` 103* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->setATagParts()` 104* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getPageTitle()` 105* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getMPvar()` 106* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getDoktypeExcludeWhere()` 107* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->getBannedUids()` 108* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->menuTypoLink()` 109 110* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_RO()` 111* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_init()` 112* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_beforeLinking()` 113* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_afterLinking()` 114* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_beforeAllWrap()` 115* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject->extProc_finish()` 116 117* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->getBeforeAfter()` 118* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_init()` 119* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_beforeLinking()` 120* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_afterLinking()` 121* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_beforeAllWrap()` 122* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\TextMenuContentObject->extProc_finish()` 123 124The following functionality has been marked as deprecated as well: 125 126* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->setJS('mouseOver')` 127 128 129Impact 130====== 131 132Instantiating any of the deprecated PHP classes, or calling any of the PHP methods will trigger a 133PHP :php:`E_USER_DEPRECATED` error, as well as setting any of the previously public properties. 134 135Using `GMENU` or `IMGMENU` or any of the TypoScript settings will also raise a PHP :php:`E_USER_DEPRECATED` error. 136 137 138Affected Installations 139====================== 140 141TYPO3 installations using `GMENU` or `IMGMENU` TypoScript functionality, roll-over functionality within menus 142in Frontend, or image-related functionality related to `HMENU`, or extending `HMENU` with their custom menus. 143 144 145Migration 146========= 147 148Migrate to `TMENU` by using "before" and "after" functionality to effectively render images with `GIFBUILDER`. 149 150.. index:: Frontend, TypoScript, PartiallyScanned, ext:frontend 151