[TASK] Extract flex form language handling to compatibility6
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Configuration / DefaultConfiguration.php
index 0b70415..96a4917 100644 (file)
@@ -38,7 +38,7 @@ return array(
                'im_useStripProfileByDefault' => TRUE,                  // Boolean: If set, the im_stripProfileCommand is used with all IM Image operations by default. See tsRef for setting this parameter explocit for IMAGE generation.
                'jpg_quality' => 70,                                                    // Integer: Default JPEG generation quality
                'png_truecolor' => TRUE,
-               'colorspace' => 'RGB',                                                  // String: Specifiy the colorspace to use. Some ImageMagick versions (like 6.7.0 and above) use the sRGB colorspace, so all images are darker then the original. <br />Possible Values: CMY, CMYK, Gray, HCL, HSB, HSL, HWB, Lab, LCH, LMS, Log, Luv, OHTA, Rec601Luma, Rec601YCbCr, Rec709Luma, Rec709YCbCr, RGB, sRGB, Transparent, XYZ, YCbCr, YCC, YIQ, YCbCr, YUV
+               'colorspace' => 'RGB',                                                  // String: Specify the colorspace to use. Some ImageMagick versions (like 6.7.0 and above) use the sRGB colorspace, so all images are darker then the original. <br />Possible Values: CMY, CMYK, Gray, HCL, HSB, HSL, HWB, Lab, LCH, LMS, Log, Luv, OHTA, Rec601Luma, Rec601YCbCr, Rec709Luma, Rec709YCbCr, RGB, sRGB, Transparent, XYZ, YCbCr, YCC, YIQ, YCbCr, YUV
        ),
        'SYS' => array(
                // System related concerning both frontend and backend.
@@ -85,8 +85,8 @@ return array(
                 * @deprecated since 4.6 - will be removed in 6.2.
                 */
                'curlTimeout' => 0,                                             // Integer: Timeout value for cURL requests in seconds. 0 means to wait indefinitely. Deprecated since 4.6 - will be removed in 6.2. See below for http options.
-               'textfile_ext' => 'txt,ts,typoscript,html,htm,css,tmpl,js,sql,xml,csv,xlf',             // Text file extensions. Those that can be edited. Executable PHP files may not be editable in webspace if disallowed!
-               'mediafile_ext' => 'gif,jpg,jpeg,bmp,png,pdf,svg,ai,mov,avi',// Commalist of file extensions perceived as media files by TYPO3. Lowercase and no spaces between!
+               'textfile_ext' => 'txt,ts,typoscript,html,htm,css,tmpl,js,sql,xml,csv,xlf',     // Text file extensions. Those that can be edited. Executable PHP files may not be editable in webspace if disallowed!
+               'mediafile_ext' => 'gif,jpg,jpeg,bmp,png,pdf,svg,ai,mov,avi,youtube,vimeo',     // Commalist of file extensions perceived as media files by TYPO3. Lowercase and no spaces between!
                'binPath' => '',                                                // String: List of absolute paths where external programs should be searched for. Eg. <code>/usr/local/webbin/,/home/xyz/bin/</code>. (ImageMagick path have to be configured separately)
                'binSetup' => '',                                               // String (textarea): List of programs (separated by newline or comma). By default programs will be searched in default paths and the special paths defined by 'binPath'. When PHP has openbasedir enabled the programs can not be found and have to be configured here. Example: <code>perl=/usr/bin/perl,unzip=/usr/local/bin/unzip</code>
                't3lib_cs_convMethod' => '',                    // String (values: "iconv", "recode", "mbstring", default is homemade PHP-code). Defines which of these PHP-features to use for various charset conversion functions in \TYPO3\CMS\Core\Charset\CharsetConverter. Will speed up charset conversion radically.
@@ -95,7 +95,6 @@ return array(
                'dbClientCompress' => FALSE,                    // Boolean: if TRUE, data exchange between TYPO3 and database server will be compressed. This may improve performance if (1) database serever is on the different server and (2) network connection speed to database server is 100mbps or less. CPU usage will be higher if this option is used but database operations will be executed faster due to much less (up to 3 times) database network traffic. This option has no effect if MySQL server is localhost.
                'setDBinit' => '',                                              // String (textarea): These commands are executed after the database connection was established. Hint: The previous default "SET NAMES utf8;" is not required any more and will be removed automatically if set!
                'setMemoryLimit' => 0,                                  // Integer: memory_limit in MB: If more than 16, TYPO3 will try to use ini_set() to set the memory limit of PHP to the value. This works only if the function ini_set() is not disabled by your sysadmin.
-               'serverTimeZone' => 1,                                  // Integer: GMT offset of servers time (from time()). Default is "1" which is "GMT+1" (central european time). This value can be used in extensions that are GMT aware and wants to convert times to/from other timezones.
                'phpTimeZone' => '',                                    // String: timezone to force for all date() and mktime() functions. A list of supported values can be found at <a href="http://php.net/manual/en/timezones.php" target="_blank">php.net</a>. If this is not set, a valid fallback will be searched for by PHP (php.ini's <a href="http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone" target="_blank">date.timezone</a> setting, server defaults, etc); and if no fallback is found, the value of "UTC" is used instead.
                'systemLog' => '',                                              // <p>String: semi-colon separated list. Defines one or more logging methods. Possible methods:</p><dl><dt>file,&lt;abs-path-to-file&gt;[,&lt;level&gt;]</dt><dd>logs to a file</dd><dt>mail,&lt;to&gt;[/&lt;from&gt;][,&lt;level&gt;]</dt><dd>sends the log entries via mail</dd><dt>syslog,&lt;facility&gt;,[,&lt;level&gt;]</dt><dd>uses the operating system's log. Facility may be one of LOCAL0..LOCAL7, USER (on Windows USER is the only valid type).</dd><dt>error_log[,,&lt;level&gt;]</dt><dd>uses the PHP error log</dd></dl><p>The &lt;level&gt; is the individual logging level (see <a href="#SYS-systemLogLevel">[SYS][systemLogLevel]</a>).</p>
                'systemLogLevel' => 0,                                  // <p>Integer (0, 1, 2, 3, 4): Only messages with same or higher severity are logged.</p><ul><li>0: info</li><li>1: notice</li><li>2: warning</li><li>3: error</li><li>4: fatal error</li></ul>
@@ -104,7 +103,7 @@ return array(
                'UTF8filesystem' => FALSE,                              // Boolean: If TRUE then TYPO3 uses utf-8 to store file names. This allows for accented Latin letters as well as any other non-latin characters like Cyrillic and Chinese.
                'systemLocale' => '',                                   // String: locale used for certain system related functions, e.g. escaping shell commands. If problems with filenames containing special characters occur, the value of this option is probably wrong. See <a href="http://php.net/manual/en/function.setlocale.php" target="_blank">setlocale()</a>.
                'lockingMode' => 'simple',                              // String: *deprecated* Define which locking mode is used to control requests to pages being generated. Can be one of either "disable" (no locking), "simple" (checks for file existence), "flock" (using PHPs <a href="http://php.net/flock" target="_blank">flock()</a> function), "semaphore" (using PHPs <a href="http://php.net/sem-acquire" target="_blank">sem_acquire()</a> function). Default is "simple". (This option is deprecated since TYPO3 CMS 7 and will be removed in TYPO3 CMS 8. The option is only used by extensions using the old Locker.)
-               'reverseProxyIP' => '',                                 // String: list of IP addresses. If TYPO3 is behind one or more (intransparent) reverese proxies the IP addresses must be added here.
+               'reverseProxyIP' => '',                                 // String: list of IP addresses. If TYPO3 is behind one or more (intransparent) reverse proxies the IP addresses must be added here.
                'reverseProxyHeaderMultiValue' => 'none',       // String: "none","first","last": defines which values of a proxy header (eg HTTP_X_FORWARDED_FOR) to use, if more than one is found. "none" discards the value, "first" and "last" use the first/last of the values in the list.
                'reverseProxyPrefix' => '',                             // String: optional prefix to be added to the internal URL (SCRIPT_NAME and REQUEST_URI).
                'reverseProxySSL' => '',                                // String: '*' or list of IP addresses of proxies that use SSL (https) for the connection to the client, but an unencrypted connection (http) to the server. If '*' all proxies defined in <a href="#SYS-reverseProxyIP">[SYS][reverseProxyIP]</a> use SSL.
@@ -257,14 +256,20 @@ return array(
                                'static' => \TYPO3\CMS\Core\Resource\Collection\StaticFileCollection::class,
                                'folder' => \TYPO3\CMS\Core\Resource\Collection\FolderBasedFileCollection::class,
                                'category' => \TYPO3\CMS\Core\Resource\Collection\CategoryBasedFileCollection::class,
-                       )
+                       ),
+                       'onlineMediaHelpers' => array(
+                               'youtube' => \TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\YouTubeHelper::class,
+                               'vimeo' => \TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\VimeoHelper::class,
+                       ),
                ),
                'FileInfo' => array(
                        // Static mapping for file extensions to mime types.
                        // In special cases the mime type is not detected correctly.
                        // Use this array only if the automatic detection does not work correct!
                        'fileExtensionToMimeType' => array(
-                               'svg' => 'image/svg+xml'
+                               'svg' => 'image/svg+xml',
+                               'youtube' => 'video/youtube',
+                               'vimeo' => 'video/vimeo',
                        )
                ),
                'livesearch' => array(),        // Array: keywords used for commands to search for specific tables
@@ -350,14 +355,20 @@ return array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDateTimeFields::class
                                                ),
                                        ),
-                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaGroup::class => array(
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordOverrideValues::class => array(
                                                'depends' => array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class,
                                                ),
                                        ),
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaGroup::class => array(
+                                               'depends' => array(
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordOverrideValues::class,
+                                               ),
+                                       ),
                                        \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseSystemLanguageRows::class => array(
                                                'depends' => array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaGroup::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordOverrideValues::class,
                                                ),
                                        ),
                                        \TYPO3\CMS\Backend\Form\FormDataProvider\DatabasePageLanguageOverlayRows::class => array(
@@ -404,18 +415,33 @@ return array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsOverrides::class
                                                ),
                                        ),
-                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlex::class => array(
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesRemoveUnusedColumns::class => array(
+                                               'depends' => array(
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesShowitem::class
+                                               ),
+                                       ),
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexFetch::class => array(
                                                'depends' => array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\UserTsConfig::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\PageTsConfigMerged::class,
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesShowitem::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesRemoveUnusedColumns::class,
+                                               ),
+                                       ),
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare::class => array(
+                                               'depends' => array(
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexFetch::class,
+                                               ),
+                                       ),
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexProcess::class => array(
+                                               'depends' => array(
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare::class,
                                                ),
                                        ),
                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => array(
                                                'depends' => array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlex::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexProcess::class,
                                                ),
                                        ),
                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class => array(
@@ -430,19 +456,20 @@ return array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\PageTsConfigMerged::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesShowitem::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesRemoveUnusedColumns::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class,
+                                                       // GeneralUtility::getFlexFormDS() needs unchanged databaseRow values as string
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexFetch::class,
                                                ),
                                        ),
-                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectValues::class => array(
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaInline::class => array(
                                                'depends' => array(
-                                                       // GeneralUtility::getFlexFormDS() needs unchanged databaseRow values as string
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlex::class,
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectItems::class,
                                                ),
                                        ),
-                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaInline::class => array(
+                                       \TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::class => array(
                                                'depends' => array(
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectValues::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaInline::class,
                                                ),
                                        ),
                                ),
@@ -468,14 +495,9 @@ return array(
                                                        \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class,
                                                ),
                                        ),
-                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectValues::class => array(
-                                               'depends' => array(
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class,
-                                               ),
-                                       ),
                                        \TYPO3\CMS\Backend\Form\FormDataProvider\TcaInline::class => array(
                                                'depends' => array(
-                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectValues::class,
+                                                       \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectItems::class,
                                                ),
                                        ),
                                ),
@@ -486,7 +508,7 @@ return array(
                'allowGlobalInstall' => FALSE,          // Boolean: If set, global extensions in typo3/ext/ are allowed to be installed, updated and deleted etc.
                'allowLocalInstall' => TRUE,            // Boolean: If set, local extensions in typo3conf/ext/ are allowed to be installed, updated and deleted etc.
                'allowSystemInstall' => FALSE,          // Boolean: If set, you can install extensions in the sysext/ dir.
-               'excludeForPackaging' => '(?:\\..*|.*~|.*\\.swp|.*\\.bak)',             // String: List of directories and files which will not be packaged into extensions nor taken into account otherwise by the Extension Manager. Perl regular expression syntax!
+               'excludeForPackaging' => '(?:\\..*(?!htaccess)|.*~|.*\\.swp|.*\\.bak|\\.sass-cache|node_modules|bower_components)',             // String: List of directories and files which will not be packaged into extensions nor taken into account otherwise by the Extension Manager. Perl regular expression syntax!
                'extConf' => array(
                        'saltedpasswords' => serialize(array(
                                'BE.' => array(
@@ -512,7 +534,6 @@ return array(
                        'debug' => FALSE
                ),
                'unzip_path' => '',                                                             // Path to "unzip". Only specify the path here, do not include the program name, it is expected to be called "unzip".
-               'diff_path' => 'diff',                                                  // Path to "diff" including the program name. Example: /somepath/specialdiff<br />For Windows this program can be downloaded here: <a href="http://unxutils.sourceforge.net/" target="_blank">unxutils.sourceforge.net</a>
                'fileadminDir' => 'fileadmin/',                                 // Path to the fileadmin dir. This is relative to PATH_site, DefaultStorage will be created with that configuration, do not access manually but ResourceFactory::getDefaultStorage()
                'RTE_imageStorageDir' => 'uploads/',                    // Default storage directory for Rich Text Editor files
                'lockRootPath' => '',                                                   // This path is used to evaluate if paths outside of PATH_site should be allowed. Ending slash required!
@@ -537,7 +558,7 @@ return array(
                'loginSecurityLevel' => '',                                             // String: Keywords that determines the security level of login to the backend. "normal" means the password from the login form is sent in clear-text, "rsa" uses RSA password encryption (only if the rsaauth extension is installed).
                'showRefreshLoginPopup' => FALSE,                               // Boolean: If set, the Ajax relogin will show a real popup window for relogin after the count down. Some auth services need this as they add custom validation to the login form. If it's not set, the Ajax relogin will show an inline relogin window.
                'adminOnly' => 0,                                                               // <p>Integer (-1, 0, 1, 2)</p><dl><dt>-1</dt><dd>total shutdown for maintenance purposes</dd><dt>0</dt><dd>normal operation, everyone can login (default)</dd><dt>1</dt><dd>only admins can login</dd><dt>2</dt><dd>only admins and regular CLI users can login</dd></dl>
-               'disable_exec_function' => FALSE,                               // Boolean: Don't use exec() function (except for ImageMagick which is disabled by <a href="#GFX-im">[GFX][im]</a>=0). If set, all fileoperations are done by the default PHP-functions. This is nescessary under Windows! On Unix the system commands by exec() can be used, unless this is disabled.
+               'disable_exec_function' => FALSE,                               // Boolean: Don't use exec() function (except for ImageMagick which is disabled by <a href="#GFX-im">[GFX][im]</a>=0). If set, all fileoperations are done by the default PHP-functions. This is necessary under Windows! On Unix the system commands by exec() can be used, unless this is disabled.
                'compressionLevel' => 0,                                                // Determines output compression of BE output. Makes output smaller but slows down the page generation depending on the compression level. Requires a) zlib in your PHP installation and b) special rewrite rules for .css.gzip and .js.gzip (please see _.htacces for an example). Range 1-9, where 1 is least compression and 9 is greatest compression. 'true' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.
                'maxFileSize' => '10240',                                               // Integer: If set this is the max filesize in KB's for file operations in the backend. Can be overridden through $TCA per table field separately.
                'installToolPassword' => '',                                    // String: This is the md5-hashed, salted password for the Install Tool. Set this to '' and access will be totally denied. You may consider to externally protect the typo3/sysext/install/ folder, eg. with a .htaccess file.
@@ -824,22 +845,21 @@ return array(
                // String (exclude).Enter lines of default Page TSconfig.
                'defaultPermissions' => array(),
                'defaultUC' => array(),
-               // The control of fileextensions goes in two catagories. Webspace and Ftpspace. Webspace is folders accessible from a webbrowser (below TYPO3_DOCUMENT_ROOT) and ftpspace is everything else.
+               // The control of file extensions goes in two catagories. Webspace and Ftpspace. Webspace is folders accessible from a webbrowser (below TYPO3_DOCUMENT_ROOT) and ftpspace is everything else.
                // The control is done like this: If an extension matches 'allow' then the check returns TRUE. If not and an extension matches 'deny' then the check return FALSE. If no match at all, returns TRUE.
                // You list extensions comma-separated. If the value is a '*' every extension is matched
-               // If no fileextension, TRUE is returned if 'allow' is '*', FALSE if 'deny' is '*' and TRUE if none of these matches
+               // If no file extension, TRUE is returned if 'allow' is '*', FALSE if 'deny' is '*' and TRUE if none of these matches
                // This configuration below accepts everything in ftpspace and everything in webspace except php3,php4,php5 or php files
                'fileExtensions' => array(
                        'webspace' => array('allow' => '', 'deny' => PHP_EXTENSIONS_DEFAULT),
                        'ftpspace' => array('allow' => '*', 'deny' => '')
                ),
                'customPermOptions' => array(),                                         // Array with sets of custom permission options. Syntax is; 'key' => array('header' => 'header string, language splitted', 'items' => array('key' => array('label, language splitted', 'icon reference', 'Description text, language splitted'))). Keys cannot contain ":|," characters.
-               'fileDenyPattern' => FILE_DENY_PATTERN_DEFAULT,         // A perl-compatible regular expression (without delimiters!) that - if it matches a filename - will deny the file upload/rename or whatever in the webspace. For security reasons, files with multiple extensions have to be denied on an Apache environment with mod_alias, if the filename contains a valid php handler in an arbitary position. Also, ".htaccess" files have to be denied. Matching is done case-insensitive. Default value is stored in constant FILE_DENY_PATTERN_DEFAULT
+               'fileDenyPattern' => FILE_DENY_PATTERN_DEFAULT,         // A perl-compatible regular expression (without delimiters!) that - if it matches a filename - will deny the file upload/rename or whatever in the webspace. For security reasons, files with multiple extensions have to be denied on an Apache environment with mod_alias, if the filename contains a valid php handler in an arbitrary position. Also, ".htaccess" files have to be denied. Matching is done case-insensitive. Default value is stored in constant FILE_DENY_PATTERN_DEFAULT
                'interfaces' => 'backend',                                                      // This determines which interface options is available in the login prompt and in which order (All options: ",backend,frontend")
                'notificationPrefix' => '[TYPO3 Note]',                         // String: Used to prefix the subject of mails sent in the taskcenter
                'explicitADmode' => 'explicitDeny',                                     // Sets the general allow/deny mode for selector box values. Value can be either "explicitAllow" or "explicitDeny", nothing else!
                'niceFlexFormXMLtags' => TRUE,                                          // If set, the flexform XML will be stored with meaningful tags which can be validated with DTD schema. If you rely on custom reading of the XML from pre-4.0 versions you should set this to FALSE if you don't like to change your reader code (internally it is insignificant since \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array() doesn't care for the tags if the index-attribute value is set)
-               'flexFormXMLincludeDiffBase' => TRUE,                           // If set, an additional tag with index "vXX.vDEFbase" is created for translations in flexforms holding the value of the default language when translation was changed. Used to show diff of value. This setting will change whether the system thinks flexform XML looks clean. For example when FALSE XX.vDEFbase fields will be removed in cleaning while accepted if TRUE (of course)
                'compactFlexFormXML' => 0,                                                      // If set, the flexform XML will not contain indentation spaces making XML more compact
                'flexformForceCDATA' => 0,                                                      // Boolean:  If set, will add CDATA to Flexform XML. Some versions of libxml have a bug that causes HTML entities to be stripped from any XML content and this setting will avoid the bug by adding CDATA.
                'explicitConfirmationOfTranslation' => FALSE,           // If set, then the diff-data of localized records is not saved automatically when updated but requires that a translator clicks the special finish_translation/save/close button that becomes available.
@@ -964,6 +984,10 @@ return array(
                        'LiveSearch' => array(
                                'callbackMethod' => \TYPO3\CMS\Backend\Controller\LiveSearchController::class . '->liveSearchAction',
                                'csrfTokenCheck' => TRUE
+                       ),
+                       'OnlineMedia::add' => array(
+                               'callbackMethod' => \TYPO3\CMS\Backend\Controller\OnlineMediaController::class . '->addAjaxAction',
+                               'csrfTokenCheck' => TRUE
                        )
                ),
                'toolbarItems' => array(), // Array: Registered toolbar items classes
@@ -1016,7 +1040,7 @@ return array(
                'eID_include' => array(),               // Array of key/value pairs where key is "tx_[ext]_[optional suffix]" and value is relative filename of class to include. Key is used as "?eID=" for index_ts.php to include the code file which renders the page from that point. (Useful for functionality that requires a low initialization footprint, eg. frontend ajax applications)
                'disableNoCacheParameter' => FALSE,             // Boolean: If set, the no_cache request parameter will become ineffective. This is currently still an experimental feature and will require a website only with plugins that don't use this parameter. However, using "&amp;no_cache=1" should be avoided anyway because there are better ways to disable caching for a certain part of the website (see COA_INT/USER_INT documentation in TSref).
                'cacheHash' => array(),         // Array: Processed values of the cHash* parameters, handled by core bootstrap internally
-               'cHashExcludedParameters' => 'L',               // String: The the given parameters will be ignored in the cHash calculation. Example: L,tx_search_pi1[query]
+               'cHashExcludedParameters' => 'L, pk_campaign, pk_kwd, utm_source, utm_medium, utm_campaign, utm_term, utm_content',             // String: The the given parameters will be ignored in the cHash calculation. Example: L,tx_search_pi1[query]
                'cHashOnlyForParameters' => '',         // String: Only the given parameters will be evaluated in the cHash calculation. Example: tx_news_pi1[uid]
                'cHashRequiredParameters' => '',                // Optional: Configure Parameters that require a cHash. If no cHash is given but one of the parameters are set, then TYPO3 triggers the configured cHash Error behaviour
                'cHashExcludedParametersIfEmpty' => '',         // Optional: Configure Parameters that are only relevant for the chash if there's an associated value available. And asterisk "*" can be used to skip all empty parameters.