TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -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'],
|
||||
],
|
||||
];
|
||||
@@ -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',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -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',
|
||||
],
|
||||
];
|
||||
@@ -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'],
|
||||
],
|
||||
*/
|
||||
];
|
||||
@@ -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'],
|
||||
],
|
||||
];
|
||||
Reference in New Issue
Block a user