Breaking: #69916 - Registered AJAX handlers replaced by routes

See forge#69916

Description

AJAX handlers registered in the core by ExtensionManagementUtility::registerAjaxHandler() have been replaced by AJAX routes, which are registered inside any extension under Configuration/Backend/AjaxRoutes.php.

The routes registered in AjaxRoutes.php are available via JavaScript via TYPO3.settings.ajaxUrls[routeIdentifier].

Impact

Calling removed AJAX identifiers will result in an error. Please see the table below for migration.

Affected Installations

All 3rd party extensions using one of the removed handlers is affected.

Migration

Please see the table to get the new AJAX identifier.

EXT:backend

Old identifier New identifier New AJAX ID
SC_alt_db_navframe::expandCollapse sc_alt_db_navframe_expandtoggle /ajax/sc-alt-db-navframe/expandtoggle
SC_alt_file_navframe::expandCollapse sc_alt_file_navframe_expandtoggle /ajax/sc-alt-file-navframe/expandtoggle
TYPO3_tcefile::process file_process /ajax/file/process
TYPO3_tcefile::fileExists file_exists /ajax/file/exists
t3lib_TCEforms_inline::createNewRecord record_inline_create /ajax/inline/create
t3lib_TCEforms_inline::getRecordDetails record_inline_details /ajax/inline/record-details
t3lib_TCEforms_inline::synchronizeLocalizeRecords record_inline_synchronizelocalize /ajax/inline/synchronizelocalize
t3lib_TCEforms_inline::setExpandedCollapsedState record_inline_expandcollapse /ajax/inline/expandcollapse
t3lib_TCEforms_suggest::searchRecord record_suggest /ajax/wizard/suggest/search
ShortcutMenu::getShortcutEditForm shortcut_editform /ajax/shortcut/editform
ShortcutMenu::saveShortcut shortcut_saveform /ajax/shortcut/saveform
ShortcutMenu::render shortcut_list /ajax/shortcut/list
ShortcutMenu::delete shortcut_remove /ajax/shortcut/remove
ShortcutMenu::create shortcut_create /ajax/shortcut/create
SystemInformationMenu::load systeminformation_render /ajax/system-information/render
ModuleMenu::reload modulemenu /ajax/module-menu
BackendLogin::login login /ajax/login
BackendLogin::logout logout /ajax/logout
BackendLogin::refreshLogin login_refresh /ajax/login/refresh
BackendLogin::isTimedOut login_timedout /ajax/login/timedout
ExtDirect::getAPI ext_direct_api /ajax/ext-direct/api
ExtDirect::route ext_direct_route /ajax/ext-direct/route
DocumentTemplate::getFlashMessages flashmessages_render /ajax/flashmessages/render
ContextMenu::load contextmenu /ajax/context-menu
DataHandler::process record_process /ajax/record/process
UserSettings::process usersettings_process /ajax/user-settings/process
ImageManipulationWizard::getHtmlForImageManipulationWizard wizard_image_manipulation /ajax/wizard/image-manipulation
LiveSearch livesearch /ajax/livesearch
OnlineMedia::add online_media_create /ajax/online-media/create

EXT:beuser

Old identifier New identifier New AJAX ID
PermissionAjaxController::dispatch user_access_permissions /users/access/permissions

EXT:context_help

Old identifier New identifier New AJAX ID
ContextHelpAjaxController::dispatch context_help /context-help

EXT:opendocs

Old identifier New identifier New AJAX ID
TxOpendocs::renderMenu opendocs_menu /opendocs/menu
TxOpendocs::closeDocument opendocs_close /opendocs/close

EXT:recycler

Old identifier New identifier New AJAX ID
RecyclerAjaxController::dispatch recycler /recycler

EXT:rsaauth

Old identifier New identifier New AJAX ID
BackendLogin::getRsaPublicKey rsa_publickey /rsa/publickey
RsaEncryption::getRsaPublicKey rsa_publickey /rsa/publickey

EXT:rtehtmlarea

Old identifier New identifier New AJAX ID
rtehtmlarea::spellchecker rtehtmlarea_spellchecker /rte/spellchecker

EXT:t3editor

Old identifier New identifier New AJAX ID
T3Editor::saveCode t3editor_save /t3editor/save
T3Editor::getPlugins t3editor_get_plugins /t3editor/get-plugins
T3Editor_TSrefLoader::getTypes t3editor_tsref /t3editor/tsref
T3Editor_TSrefLoader::getDescription t3editor_tsref /t3editor/tsref
CodeCompletion::loadTemplates t3editor_codecompletion_loadtemplates /t3editor/codecompletion/load-templates
  • T3Editor_TSrefLoader::getTypes and T3Editor_TSrefLoader::getDescription have been combined. The separation is done by the new parameter fetch being either "types" or "description".

EXT:taskcenter

Old identifier New identifier New AJAX ID
Taskcenter::saveCollapseState taskcenter_collapse /taskcenter/collapse
Taskcenter::saveSortingState taskcenter_sort /taskcenter/sort

EXT:workspaces

Old identifier New identifier New AJAX ID
Workspaces::setWorkspace workspace_switch /workspaces/switch