TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:00 +02:00
commit f9941541b7
1178 changed files with 135377 additions and 0 deletions
+555
View File
@@ -0,0 +1,555 @@
<?php
use TYPO3\CMS\Backend\Controller;
use TYPO3\CMS\Backend\Security\SudoMode\Access\AccessLifetime;
/**
* Definitions for routes provided by EXT:backend
* Contains all AJAX-based routes for entry points
*
* Currently the "access" property is only used so no token creation + validation is made
* but will be extended further.
*/
return [
// Rename resource
'resource_rename' => [
'path' => '/resource/rename',
'methods' => ['POST'],
'target' => Controller\Resource\ResourceController::class . '::renameResourceAction',
'inheritAccessFromModule' => 'media_management',
],
// Gather resource information
'resource_gather' => [
'path' => '/resource/gather',
'methods' => ['GET'],
'target' => Controller\Resource\ResourceController::class . '::gatherInformationAction',
'inheritAccessFromModule' => 'media_management',
],
// Replace resource
'resource_replace' => [
'path' => '/resource/replace',
'methods' => ['POST'],
'target' => Controller\Resource\ResourceController::class . '::replaceResourceAction',
'inheritAccessFromModule' => 'media_management',
],
// Link resource
'link_resource' => [
'path' => '/link/resource',
'methods' => ['POST'],
'target' => Controller\LinkController::class . '::resourceAction',
],
// File processing
'file_process' => [
'path' => '/file/process',
'target' => Controller\File\FileController::class . '::processAjaxRequest',
'inheritAccessFromModule' => 'media_management',
],
// Check if file exists
'file_exists' => [
'path' => '/file/exists',
'target' => Controller\File\FileController::class . '::fileExistsInFolderAction',
'inheritAccessFromModule' => 'media_management',
],
// Get details of a file reference in FormEngine
'file_reference_details' => [
'path' => '/file/reference/details',
'target' => Controller\FormFilesAjaxController::class . '::detailsAction',
],
// Create a new file reference in FormEngine
'file_reference_create' => [
'path' => '/file/reference/create',
'methods' => ['POST'],
'target' => Controller\FormFilesAjaxController::class . '::createAction',
],
// Synchronize localization of a file reference in FormEngine
'file_reference_synchronizelocalize' => [
'path' => '/file/reference/synchronizelocalize',
'methods' => ['POST'],
'target' => Controller\FormFilesAjaxController::class . '::synchronizeLocalizeAction',
],
// Expand / Collapse a file reference in FormEngine
'file_reference_expandcollapse' => [
'path' => '/file/reference/expandcollapse',
'methods' => ['POST'],
'target' => Controller\FormFilesAjaxController::class . '::expandOrCollapseAction',
],
// Get record details of a child record in IRRE
'record_inline_details' => [
'path' => '/record/inline/details',
'target' => Controller\FormInlineAjaxController::class . '::detailsAction',
],
// Create new inline element
'record_inline_create' => [
'path' => '/record/inline/create',
'target' => Controller\FormInlineAjaxController::class . '::createAction',
],
// Synchronize localization
'record_inline_synchronizelocalize' => [
'path' => '/record/inline/synchronizelocalize',
'target' => Controller\FormInlineAjaxController::class . '::synchronizeLocalizeAction',
],
// Expand / Collapse inline record
'record_inline_expandcollapse' => [
'path' => '/record/inline/expandcollapse',
'target' => Controller\FormInlineAjaxController::class . '::expandOrCollapseAction',
],
// Site configuration inline create route
'site_configuration_inline_create' => [
'path' => '/siteconfiguration/inline/create',
'target' => Controller\SiteInlineAjaxController::class . '::newInlineChildAction',
'inheritAccessFromModule' => 'site_configuration',
],
// Validate slug input
'record_slug_suggest' => [
'path' => '/record/slug/suggest',
'target' => Controller\FormSlugAjaxController::class . '::suggestAction',
],
// Site configuration inline open existing "record" route
'site_configuration_inline_details' => [
'path' => '/siteconfiguration/inline/details',
'target' => Controller\SiteInlineAjaxController::class . '::openInlineChildAction',
'inheritAccessFromModule' => 'site_configuration',
],
// Add a flex form section container
'record_flex_container_add' => [
'path' => '/record/flex/containeradd',
'target' => Controller\FormFlexAjaxController::class . '::containerAdd',
],
// FormEngine suggest wizard result generator
'record_suggest' => [
'path' => '/wizard/suggest/search',
'target' => \TYPO3\CMS\Backend\Controller\Wizard\SuggestWizardController::class . '::searchAction',
],
// Fetch the tree-structured data from a record for the tree selection
'record_tree_data' => [
'path' => '/record/tree/fetchData',
'target' => Controller\FormSelectTreeAjaxController::class . '::fetchDataAction',
],
// Get data for page tree
'page_tree_data' => [
'path' => '/page/tree/fetchData',
'target' => Controller\Page\TreeController::class . '::fetchDataAction',
],
// Get rootline for page tree
'page_tree_rootline' => [
'path' => '/page/tree/fetchRootline',
'target' => Controller\Page\TreeController::class . '::fetchRootlineAction',
],
// Get data for page tree
'page_tree_filter' => [
'path' => '/page/tree/filterData',
'target' => Controller\Page\TreeController::class . '::filterDataAction',
],
// Get page tree configuration
'page_tree_configuration' => [
'path' => '/page/tree/fetchConfiguration',
'target' => Controller\Page\TreeController::class . '::fetchConfigurationAction',
],
// Get page tree configuration for element browser and link handler
'page_tree_browser_configuration' => [
'path' => '/browser/page/tree/fetchConfiguration',
'target' => Controller\Page\TreeController::class . '::fetchReadOnlyConfigurationAction',
],
// Set temporary mount point
'page_tree_set_temporary_mount_point' => [
'path' => '/page/tree/setTemporaryMountPoint',
'target' => Controller\Page\TreeController::class . '::setTemporaryMountPointAction',
],
// Get data for file storage tree
'filestorage_tree_data' => [
'path' => '/filestorage/tree/fetchData',
'methods' => ['GET'],
'target' => Controller\FileStorage\TreeController::class . '::fetchDataAction',
],
// Get rootline for file storage tree
'filestorage_tree_rootline' => [
'path' => '/filestorage/tree/fetchRootline',
'target' => Controller\FileStorage\TreeController::class . '::fetchRootlineAction',
],
// Get filtered data for filestorage tree
'filestorage_tree_filter' => [
'path' => '/filestorage/tree/filterData',
'methods' => ['GET'],
'target' => Controller\FileStorage\TreeController::class . '::filterDataAction',
],
// Bookmark management API
'bookmark_list' => [
'path' => '/bookmark/list',
'methods' => ['GET'],
'target' => Controller\BookmarkController::class . '::listAction',
],
'bookmark_create' => [
'path' => '/bookmark/create',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::createAction',
],
'bookmark_update' => [
'path' => '/bookmark/update',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::updateAction',
],
'bookmark_delete' => [
'path' => '/bookmark/delete',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::deleteAction',
],
'bookmark_reorder' => [
'path' => '/bookmark/reorder',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::reorderAction',
],
'bookmark_delete_multiple' => [
'path' => '/bookmark/delete-multiple',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::deleteMultipleAction',
],
'bookmark_move' => [
'path' => '/bookmark/move',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::moveAction',
],
// Bookmark group management
'bookmark_group_create' => [
'path' => '/bookmark/group/create',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::createGroupAction',
],
'bookmark_group_update' => [
'path' => '/bookmark/group/update',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::updateGroupAction',
],
'bookmark_group_delete' => [
'path' => '/bookmark/group/delete',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::deleteGroupAction',
],
'bookmark_group_reorder' => [
'path' => '/bookmark/group/reorder',
'methods' => ['POST'],
'target' => Controller\BookmarkController::class . '::reorderGroupsAction',
],
// Flush caches from the clear cache toolbar item
'clearcache_group_pages' => [
'path' => '/cache/group/pages/flush',
'methods' => ['POST'],
'target' => Controller\ClearCacheController::class . '::flushCacheGroupPagesAction',
],
'clearcache_group_all' => [
'path' => '/cache/group/all/flush',
'methods' => ['POST'],
'target' => Controller\ClearCacheController::class . '::flushCacheGroupAllAction',
],
'clearcache_page' => [
'path' => '/cache/page/flush',
'methods' => ['POST'],
'target' => Controller\ClearCacheController::class . '::flushCachePageAction',
],
// Render systeminformation toolbar item
'systeminformation_render' => [
'path' => '/system-information/render',
'target' => \TYPO3\CMS\Backend\Controller\SystemInformationController::class . '::renderMenuAction',
'parameters' => [
'skipSessionUpdate' => 1,
],
],
// Reload the module menu
'modulemenu' => [
'path' => '/module-menu',
'target' => Controller\BackendController::class . '::getModuleMenu',
],
'topbar' => [
'path' => '/topbar',
'target' => Controller\BackendController::class . '::getTopbar',
],
// Log in into backend
'login' => [
'path' => '/login',
'target' => \TYPO3\CMS\Backend\Controller\AjaxLoginController::class . '::loginAction',
'access' => 'public',
],
// Log out from backend
'logout' => [
'path' => '/logout',
'target' => \TYPO3\CMS\Backend\Controller\AjaxLoginController::class . '::logoutAction',
'access' => 'public',
],
// Preflight check for login form
'login_preflight' => [
'path' => '/login/preflight',
'target' => \TYPO3\CMS\Backend\Controller\AjaxLoginController::class . '::preflightAction',
'access' => 'public',
],
// Refresh login of backend
'login_refresh' => [
'path' => '/login/refresh',
'target' => \TYPO3\CMS\Backend\Controller\AjaxLoginController::class . '::refreshAction',
],
// Check if backend session has timed out
'login_timedout' => [
'path' => '/login/timedout',
'target' => \TYPO3\CMS\Backend\Controller\AjaxLoginController::class . '::isTimedOutAction',
'access' => 'public',
'parameters' => [
'skipSessionUpdate' => 1,
],
],
// Switch user
'switch_user' => [
'path' => '/switch/user',
'methods' => ['POST'],
'target' => Controller\SwitchUserController::class . '::switchUserAction',
],
'switch_user_exit' => [
'path' => '/switch/user/exit',
'methods' => ['POST'],
'target' => Controller\SwitchUserController::class . '::exitSwitchUserAction',
],
// Multi-factor authentication configuration
'mfa' => [
'path' => '/mfa',
'target' => Controller\MfaAjaxController::class . '::handleRequest',
'sudoMode' => [
'group' => 'mfa',
'lifetime' => AccessLifetime::medium,
],
],
// Load context menu for
'contextmenu' => [
'path' => '/context-menu',
'target' => Controller\ContextMenuController::class . '::getContextMenuAction',
],
// Load context menu for
'contextmenu_clipboard' => [
'path' => '/context-menu/clipboard',
'target' => Controller\ContextMenuController::class . '::clipboardAction',
],
// Process data handler commands
'record_process' => [
'path' => '/record/process',
'target' => Controller\SimpleDataHandlerController::class . '::processAjaxRequest',
],
// Process user settings
'usersettings_process' => [
'path' => '/usersettings/process',
'target' => Controller\UserSettingsController::class . '::processAjaxRequest',
],
// Open the image manipulation wizard
'wizard_image_manipulation' => [
'path' => '/wizard/image-manipulation',
'target' => \TYPO3\CMS\Backend\Controller\Wizard\ImageManipulationController::class . '::getWizardContent',
],
// Search records
'livesearch' => [
'path' => '/livesearch/search',
'target' => Controller\LiveSearchController::class . '::searchAction',
],
// Get livesearch form
'livesearch_form' => [
'path' => '/livesearch/form',
'target' => Controller\LiveSearchController::class . '::formAction',
],
// Save a newly added online media
'online_media_create' => [
'path' => '/online-media/create',
'target' => Controller\OnlineMediaController::class . '::createAction',
],
// Get icon from IconFactory
'icons' => [
'path' => '/icons',
'target' => \TYPO3\CMS\Core\Controller\IconController::class . '::getIcon',
],
// Encode typolink parts on demand
'link_browser_encodetypolink' => [
'path' => '/link-browser/encode-typolink',
'target' => \TYPO3\CMS\Backend\Controller\LinkBrowserController::class . '::encodeTypoLink',
],
// Localization Wizard
'wizard_localization_get_record' => [
'path' => '/wizard/localization/record',
'target' => Controller\Wizard\LocalizationController::class . '::getRecord',
],
'wizard_localization_get_targets' => [
'path' => '/wizard/localization/targets',
'target' => Controller\Wizard\LocalizationController::class . '::getTargets',
],
'wizard_localization_get_sources' => [
'path' => '/wizard/localization/sources',
'target' => Controller\Wizard\LocalizationController::class . '::getSources',
],
'wizard_localization_get_modes' => [
'path' => '/wizard/localization/modes',
'target' => Controller\Wizard\LocalizationController::class . '::getModes',
],
'wizard_localization_get_handlers' => [
'path' => '/wizard/localization/handlers',
'target' => Controller\Wizard\LocalizationController::class . '::getHandlers',
],
'wizard_localization_get_content' => [
'path' => '/wizard/localization/content',
'target' => Controller\Wizard\LocalizationController::class . '::getContent',
],
'wizard_localization_localize' => [
'path' => '/wizard/localization/localize',
'target' => Controller\Wizard\LocalizationController::class . '::localize',
],
// column selector
'show_columns' => [
'path' => '/show/columns',
'methods' => ['POST'],
'target' => \TYPO3\CMS\Backend\Controller\ColumnSelectorController::class . '::updateVisibleColumnsAction',
],
'show_columns_selector' => [
'path' => '/show/columns/selector',
'target' => \TYPO3\CMS\Backend\Controller\ColumnSelectorController::class . '::showColumnsSelectorAction',
],
// Record download in records module
'record_download_settings' => [
'path' => '/record/download/settings',
'target' => \TYPO3\CMS\Backend\Controller\RecordListDownloadController::class . '::downloadSettingsAction',
],
// Toggle record visibility
'record_toggle_visibility' => [
'path' => '/record/toggle-visibility',
'methods' => ['POST'],
'target' => \TYPO3\CMS\Backend\Controller\RecordListController::class . '::toggleRecordVisibilityAction',
],
// Endpoint to generate a password
'password_generate' => [
'path' => '/password/generate',
'target' => \TYPO3\CMS\Core\Controller\PasswordGeneratorController::class . '::generate',
],
'security_csp_control' => [
'access' => 'systemMaintainer',
'path' => '/security/csp/control',
'target' => \TYPO3\CMS\Backend\Security\ContentSecurityPolicy\CspAjaxController::class . '::handleRequest',
'inheritAccessFromModule' => 'content_security_policy',
],
'sudo_mode_control' => [
'path' => '/sudo-mode/verify',
'target' => Controller\Security\SudoModeController::class . '::verifyAction',
],
// Get TSRef
'codeeditor_tsref' => [
'path' => '/code-editor/tsref',
'target' => \TYPO3\CMS\Backend\Controller\CodeEditor\TypoScriptReferenceController::class . '::loadReference',
],
// Load code completion templates
'codeeditor_codecompletion_loadtemplates' => [
'path' => '/code-editor/codecompletion/load-templates',
'target' => \TYPO3\CMS\Backend\Controller\CodeEditor\CodeCompletionController::class . '::loadCompletions',
],
'color_scheme_update' => [
'path' => '/color-scheme/update',
'target' => Controller\ColorSchemeController::class . '::updateAction',
],
// QR Code
'qrcode_generator' => [
'path' => '/qrcode/generate',
'target' => Controller\QrCodeController::class . '::getQrCodeAction',
'methods' => ['GET'],
],
'qrcode_download' => [
'path' => '/qrcode/download',
'target' => Controller\QrCodeController::class . '::downloadAction',
'methods' => ['POST'],
],
'wizard_page_get_doktypes' => [
'path' => '/wizard/page/doktypes',
'target' => Controller\Wizard\PageWizardController::class . '::getDoktypesAction',
'methods' => ['GET'],
],
'wizard_page_get_page_detail' => [
'path' => '/wizard/page/page-detail',
'target' => Controller\Wizard\PageWizardController::class . '::getPageDetailAction',
'methods' => ['GET'],
],
'wizard_page_get_processed_value' => [
'path' => '/wizard/page/processed-value',
'target' => Controller\Wizard\PageWizardController::class . '::getProcessedValueAction',
'methods' => ['GET'],
],
'wizard_config' => [
'path' => '/wizard/config',
'target' => Controller\Wizard\WizardController::class . '::getConfigurationAction',
'methods' => ['GET'],
],
'wizard_submit' => [
'path' => '/wizard/submit',
'target' => Controller\Wizard\WizardController::class . '::submitDataAction',
'methods' => ['POST'],
],
// Switch primary language wizard
'switch_primary_language_count' => [
'path' => '/switch-language/count',
'target' => \Local\Multilanguage\Controller\SwitchPrimaryLanguageController::class . '::countAction',
'methods' => ['GET'],
],
'switch_primary_language_execute' => [
'path' => '/switch-language/execute',
'target' => \Local\Multilanguage\Controller\SwitchPrimaryLanguageController::class . '::executeAction',
'methods' => ['POST'],
],
];
+219
View File
@@ -0,0 +1,219 @@
<?php
use TYPO3\CMS\Backend\Controller\AboutController;
use TYPO3\CMS\Backend\Controller\PageLayoutController;
use TYPO3\CMS\Backend\Controller\PageTsConfig\PageTsConfigActiveController;
use TYPO3\CMS\Backend\Controller\PageTsConfig\PageTsConfigIncludesController;
use TYPO3\CMS\Backend\Controller\PageTsConfig\PageTsConfigRecordsOverviewController;
use TYPO3\CMS\Backend\Controller\RecordListController;
use TYPO3\CMS\Backend\Controller\SetupModuleController;
use TYPO3\CMS\Backend\Controller\SiteConfigurationController;
use TYPO3\CMS\Backend\Controller\SiteSettingsController;
use TYPO3\CMS\Backend\Security\ContentSecurityPolicy\CspModuleController;
use TYPO3\CMS\Backend\View\PageViewMode;
use TYPO3\CMS\Backend\View\SetupModuleViewMode;
use TYPO3\CMS\Backend\View\SetupSettingsViewMode;
/**
* Definitions for modules provided by EXT:backend
*/
return [
'web_layout' => [
'parent' => 'content',
'position' => ['before' => '*'],
'access' => 'user',
'path' => '/module/web/layout',
'iconIdentifier' => 'module-page',
'labels' => 'backend.modules.layout',
'routes' => [
'_default' => [
'target' => PageLayoutController::class . '::mainAction',
],
],
'moduleData' => [
'viewMode' => PageViewMode::LayoutView->value,
'showHidden' => true,
],
],
'records' => [
'parent' => 'content',
'position' => ['after' => 'web_layout'],
'access' => 'user',
'path' => '/module/content/records',
'iconIdentifier' => 'module-list',
'labels' => 'backend.modules.list',
'aliases' => ['web_list'],
'routes' => [
'_default' => [
'target' => RecordListController::class . '::mainAction',
],
],
'moduleData' => [
'clipBoard' => true,
'searchBox' => false,
'collapsedTables' => [],
],
],
'content_status' => [
'parent' => 'content',
'position' => ['after' => 'web_FormFormbuilder', 'before' => 'recycler'],
'access' => 'user',
'path' => '/module/content/status',
'iconIdentifier' => 'module-info',
'labels' => 'backend.modules.status',
'aliases' => ['web_info'],
'navigationComponent' => '@typo3/backend/tree/page-tree-element',
'appearance' => [
'dependsOnSubmodules' => true,
],
'showSubmoduleOverview' => true,
],
'site_configuration' => [
'parent' => 'site',
'position' => ['before' => '*'],
'access' => 'admin',
'path' => '/module/site/configuration',
'iconIdentifier' => 'module-sites',
'labels' => 'backend.modules.site_configuration',
'routes' => [
'_default' => [
'target' => SiteConfigurationController::class . '::overviewAction',
],
'detail' => [
'target' => SiteConfigurationController::class . '::detailAction',
],
'edit' => [
'target' => SiteConfigurationController::class . '::editAction',
],
'save' => [
'target' => SiteConfigurationController::class . '::saveAction',
'methods' => ['POST'],
],
'delete' => [
'target' => SiteConfigurationController::class . '::deleteAction',
'methods' => ['POST'],
],
'editSettings' => [
'target' => SiteSettingsController::class . '::editAction',
],
'saveSettings' => [
'target' => SiteSettingsController::class . '::saveAction',
'methods' => ['POST'],
],
'dumpSettings' => [
'target' => SiteSettingsController::class . '::dumpAction',
'methods' => ['POST'],
],
],
'moduleData' => [
'viewMode' => SetupModuleViewMode::TILES->value,
'settingsMode' => SetupSettingsViewMode::BASIC->value,
],
],
'link_management' => [
'parent' => 'site',
'position' => ['after' => 'site_configuration'],
'access' => 'user',
'path' => '/module/link-management',
'iconIdentifier' => 'module-urls',
'labels' => 'backend.modules.link_management',
'appearance' => [
'dependsOnSubmodules' => true,
],
'showSubmoduleOverview' => true,
],
'about' => [
'parent' => 'help',
'position' => ['before' => '*'],
'access' => 'user',
'path' => '/module/help/about',
'iconIdentifier' => 'module-about',
'labels' => 'backend.modules.about',
'aliases' => ['help_AboutAbout'],
'routes' => [
'_default' => [
'target' => AboutController::class . '::handleRequest',
],
],
],
'pagetsconfig' => [
'parent' => 'site',
'access' => 'admin',
'path' => '/module/pagetsconfig',
'iconIdentifier' => 'module-tsconfig',
'labels' => 'backend.modules.pagetsconfig',
'navigationComponent' => '@typo3/backend/tree/page-tree-element',
],
'pagetsconfig_pages' => [
'parent' => 'pagetsconfig',
'access' => 'admin',
'path' => '/module/pagetsconfig/records',
'iconIdentifier' => 'module-tsconfig',
'labels' => 'backend.modules.pagetsconfig_pages',
'routes' => [
'_default' => [
'target' => PageTsConfigRecordsOverviewController::class . '::handleRequest',
],
],
],
'pagetsconfig_active' => [
'parent' => 'pagetsconfig',
'access' => 'admin',
'path' => '/module/pagetsconfig/active',
'iconIdentifier' => 'module-tsconfig',
'labels' => 'backend.modules.pagetsconfig_active',
'routes' => [
'_default' => [
'target' => PageTsConfigActiveController::class . '::handleRequest',
],
],
'moduleData' => [
'sortAlphabetically' => true,
'displayComments' => true,
'displayConstantSubstitutions' => true,
'pageTsConfigConditions' => [],
],
],
'pagetsconfig_includes' => [
'parent' => 'pagetsconfig',
'access' => 'admin',
'path' => '/module/pagetsconfig/includes',
'iconIdentifier' => 'module-tsconfig',
'labels' => 'backend.modules.pagetsconfig_includes',
'routes' => [
'_default' => [
'target' => PageTsConfigIncludesController::class . '::indexAction',
],
'source' => [
'target' => PageTsConfigIncludesController::class . '::sourceAction',
],
'sourceWithIncludes' => [
'target' => PageTsConfigIncludesController::class . '::sourceWithIncludesAction',
],
],
],
'content_security_policy' => [
'parent' => 'system',
'access' => 'systemMaintainer',
'iconIdentifier' => 'module-security',
'labels' => 'backend.modules.content_security_policy',
'aliases' => ['tools_csp'],
'routes' => [
'_default' => [
'target' => CspModuleController::class . '::mainAction',
],
],
],
'user_setup' => [
'parent' => 'user',
'access' => 'user',
'path' => '/module/user/setup',
'iconIdentifier' => 'module-setup',
'labels' => 'backend.modules.user_settings',
'routes' => [
'_default' => [
'target' => SetupModuleController::class . '::mainAction',
],
],
],
];
+308
View File
@@ -0,0 +1,308 @@
<?php
use TYPO3\CMS\Backend\Controller;
use TYPO3\CMS\Backend\Security\SudoMode\Access\AccessLifetime;
/**
* Definitions for routes provided by EXT:backend
* Contains all "regular" routes for entry points
*
* Please note that this setup is preliminary until all core use-cases are set up here.
* Especially some more properties regarding modules will be added until TYPO3 CMS 7 LTS, and might change.
*
* Currently the "access" property is only used so no token creation + validation is made,
* but will be extended further.
*/
return [
// Login screen of the TYPO3 Backend
'login' => [
'path' => '/login',
'access' => 'public',
'target' => Controller\LoginController::class . '::formAction',
],
// Main backend rendering setup (previously called backend.php) for the TYPO3 Backend
'main' => [
'path' => '/main',
'referrer' => 'required,refresh-always',
'target' => Controller\BackendController::class . '::mainAction',
],
// IFrame dummy-url for browser-history state tracking of web component backend modules
'state-tracker' => [
'path' => '/state-tracker',
'access' => 'public',
'target' => Controller\StateTrackerController::class . '::mainAction',
],
// Logout script for the TYPO3 Backend
'logout' => [
'path' => '/logout',
'target' => Controller\LogoutController::class . '::logoutAction',
],
// Show the password forgotten form for entering the email
'password_forget' => [
'path' => '/login/password-reset/forget',
'access' => 'public',
'target' => Controller\ResetPasswordController::class . '::forgetPasswordFormAction',
],
// Send out the password reset email
'password_forget_initiate_reset' => [
'path' => '/login/password-reset/initiate-reset',
'access' => 'public',
'methods' => ['POST'],
'target' => Controller\ResetPasswordController::class . '::initiatePasswordResetAction',
],
'password_reset_validate' => [
'path' => '/login/password-reset/validate',
'access' => 'public',
'target' => Controller\ResetPasswordController::class . '::passwordResetAction',
],
'password_reset_finish' => [
'path' => '/login/password-reset/finish',
'access' => 'public',
'methods' => ['POST'],
'target' => Controller\ResetPasswordController::class . '::passwordResetFinishAction',
],
'sudo_mode_module' => [
'path' => '/sudo-mode/module',
'target' => Controller\Security\SudoModeController::class . '::moduleAction',
],
'sudo_mode_apply' => [
'path' => '/sudo-mode/apply',
'target' => Controller\Security\SudoModeController::class . '::applyAction',
],
'sudo_mode_error' => [
'path' => '/sudo-mode/error',
'target' => Controller\Security\SudoModeController::class . '::errorAction',
],
// Register login frameset
'login_frameset' => [
'path' => '/login/frame',
'access' => 'public',
'target' => Controller\LoginController::class . '::refreshAction',
],
// Fetch RequestToken via AJAX
'login_request_token' => [
'path' => '/login/request-token',
'access' => 'public',
'methods' => ['POST'],
'target' => Controller\LoginController::class . '::requestTokenAction',
],
// Authentication endpoint for Multi-factor authentication
'auth_mfa' => [
'path' => '/auth/mfa',
'target' => Controller\MfaController::class . '::handleRequest',
],
// Standalone setup endpoint for Multi-factor authentication
'setup_mfa' => [
'path' => '/setup/mfa',
'target' => Controller\MfaSetupController::class . '::handleRequest',
],
// Multi-factor authentication configuration
'mfa' => [
'path' => '/mfa',
'target' => Controller\MfaConfigurationController::class . '::handleRequest',
'sudoMode' => [
'group' => 'mfa',
'lifetime' => AccessLifetime::medium,
],
],
/** Wizards */
// Register add wizard
'wizard_add' => [
'path' => '/wizard/add',
'target' => Controller\Wizard\AddController::class . '::mainAction',
],
// Register list wizard
'wizard_list' => [
'path' => '/wizard/list',
'target' => Controller\Wizard\ListController::class . '::mainAction',
],
// Register edit wizard
'wizard_edit' => [
'path' => '/wizard/edit',
'target' => Controller\Wizard\EditController::class . '::mainAction',
],
// Register wizard element browser
'wizard_element_browser' => [
'path' => '/wizard/record/browse',
'target' => Controller\ElementBrowserController::class . '::mainAction',
],
// Register link wizard
'wizard_link' => [
'path' => '/wizard/link/browse',
'target' => Controller\LinkBrowserController::class . '::mainAction',
],
/** File- and folder-related routes */
// Add new online media
'online_media' => [
'path' => '/online-media',
'target' => Controller\OnlineMediaController::class . '::mainAction',
],
/** DB Records-related routes */
// Record download in records module
'record_download' => [
'path' => '/record/download',
'methods' => ['POST'],
'target' => Controller\RecordListDownloadController::class . '::handleDownloadRequest',
],
// Register record history module
'record_history' => [
'path' => '/record/history',
'target' => Controller\ContentElement\ElementHistoryController::class . '::mainAction',
],
// Register new record
'db_new' => [
'path' => '/record/new',
'target' => Controller\NewRecordController::class . '::mainAction',
'redirect' => [
'enable' => true,
'parameters' => [
'id' => true,
],
],
],
// Register sort pages
'pages_sort' => [
'path' => '/pages/sort',
'target' => Controller\Page\SortSubPagesController::class . '::mainAction',
],
// Register create multiple pages
'pages_new' => [
'path' => '/pages/new',
'target' => Controller\Page\NewMultiplePagesController::class . '::mainAction',
'redirect' => [
'enable' => true,
'parameters' => [
'id' => true,
],
],
],
// Register new content element module (used in a modal)
'new_content_element_wizard' => [
'path' => '/record/content/wizard/new',
'target' => Controller\ContentElement\NewContentElementController::class . '::handleRequest',
],
// Register move page + move content element view
'move_page' => [
'path' => '/page/move',
'target' => Controller\Page\MovePageController::class . '::mainAction',
],
'move_element' => [
'path' => '/record/move',
'target' => Controller\ContentElement\MoveElementController::class . '::mainAction',
],
// Register show item module
'show_item' => [
'path' => '/record/info',
'target' => Controller\ContentElement\ElementInformationController::class . '::mainAction',
],
// Dummy document - displays nothing but background color.
'dummy' => [
'path' => '/empty',
'target' => Controller\DummyController::class . '::mainAction',
],
/** TYPO3 Core Engine-related routes */
/**
* TCE gateway (TYPO3 Core Engine) for database handling
* This script is a gateway for POST forms to \TYPO3\CMS\Core\DataHandling\DataHandler
* that manipulates all information in the database!!
* For syntax and API information, see the document 'TYPO3 Core APIs'
*/
'tce_db' => [
'path' => '/record/commit',
'target' => Controller\SimpleDataHandlerController::class . '::mainAction',
],
/**
* Gateway for TCE (TYPO3 Core Engine) file-handling through POST forms.
* This script serves as the file administration part of the TYPO3 Core Engine.
* Basically it includes two libraries which are used to manipulate files on the server.
*
* For syntax and API information, see the document 'TYPO3 Core APIs'
*/
'tce_file' => [
'path' => '/file/commit',
'target' => Controller\File\FileController::class . '::mainAction',
],
/**
* Main form rendering script
* By sending certain parameters to this script you can bring up a form
* which allows the user to edit the content of one or more database records.
*/
'record_edit' => [
'path' => '/record/edit',
'target' => Controller\EditDocumentController::class . '::mainAction',
'redirect' => [
'enable' => true,
'parameters' => [
'edit' => true,
'defVals' => true,
'columnsOnly' => true,
'module' => true,
],
],
'options' => [
'requestPageContext' => true,
],
],
// Lightweight contextual edit form for the context panel
'record_edit_contextual' => [
'path' => '/record/edit/contextual',
'target' => Controller\ContextualRecordEditController::class . '::mainAction',
],
// Image processing
'image_processing' => [
'path' => '/image/process',
'target' => Controller\File\ImageProcessController::class . '::process',
],
// Clipboard processing
'clipboard_process' => [
'path' => '/clipboard/process',
'methods' => ['POST'],
'target' => Controller\ClipboardController::class . '::processRequest',
],
// Request thumbnail, created on-demand
'resource_request_thumbnail' => [
'path' => '/resource/request-thumbnail',
'methods' => ['GET'],
'target' => Controller\Resource\ResourceController::class . '::requestThumbnailAction',
],
// Language domain
'language_domain' => [
'path' => '/language/domain/{locale}/{cacheBustInfix}/{domain}',
'methods' => ['GET'],
'target' => Controller\JavaScriptLanguageDomainController::class . '::getLanguageDomainAction',
// Do not require a request token
'access' => 'public',
],
];
+59
View File
@@ -0,0 +1,59 @@
<?php
use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction;
/**
* Addons for code editor
*/
return [
'highlightActiveLineGutter' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/view', 'highlightActiveLineGutter')->invoke(),
],
'history' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/commands', 'history')->invoke(),
'keymap' => JavaScriptModuleInstruction::create('@codemirror/commands', 'historyKeymap'),
],
'foldGutter' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/language', 'foldGutter')->invoke(),
'keymap' => JavaScriptModuleInstruction::create('@codemirror/language', 'foldKeymap'),
],
'dropCursor' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/view', 'dropCursor')->invoke(),
],
'indentOnInput' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/language', 'indentOnInput')->invoke(),
],
'bracketMatching' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/language', 'bracketMatching')->invoke(),
],
'closeBrackets' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/autocomplete', 'closeBrackets')->invoke(),
'keymap' => JavaScriptModuleInstruction::create('@codemirror/autocomplete', 'closeBracketsKeymap'),
],
'autocompletion' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/autocomplete', 'autocompletion')->invoke(),
'keymap' => JavaScriptModuleInstruction::create('@codemirror/autocomplete', 'completionKeymap'),
],
'rectangularSelection' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/view', 'rectangularSelection')->invoke(),
],
'crosshairCursor' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/view', 'crosshairCursor')->invoke(),
],
'highlightActiveLine' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/view', 'highlightActiveLine')->invoke(),
],
'highlightSelectionMatches' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/search', 'highlightSelectionMatches')->invoke(),
'keymap' => JavaScriptModuleInstruction::create('@codemirror/search', 'searchKeymap'),
],
'lint' => [
'keymap' => JavaScriptModuleInstruction::create('@codemirror/lint', 'lintKeymap'),
],
/*
'hint/typoscript-hint' => [
'module' => 'TYPO3/CMS/T3editor/Addon/Hint/TypoScriptHint',
'modes' => ['typoscript'],
],
*/
];
+42
View File
@@ -0,0 +1,42 @@
<?php
use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction;
/**
* Mode definitions for code editor
*/
return [
'css' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-css', 'css')->invoke(),
'extensions' => ['css'],
],
'html' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-html', 'html')->invoke(),
'extensions' => ['htm', 'html'],
'default' => true,
],
'javascript' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-javascript', 'javascript')->invoke(),
'extensions' => ['javascript'],
],
'json' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-json', 'json')->invoke(),
'extensions' => ['json'],
],
'php' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-php', 'php')->invoke(),
'extensions' => ['php', 'php5', 'php7', 'phps'],
],
'sql' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-sql', 'sql')->invoke(),
'extensions' => ['sql'],
],
'typoscript' => [
'module' => JavaScriptModuleInstruction::create('@typo3/backend/code-editor/language/typoscript.js', 'typoscript')->invoke(),
'extensions' => ['ts', 'typoscript', 'tsconfig'],
],
'xml' => [
'module' => JavaScriptModuleInstruction::create('@codemirror/lang-xml', 'xml')->invoke(),
'extensions' => ['xml'],
],
];