[FEATURE] Allow .ts file extension for static typoscript templates
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / TypoScript / TemplateService.php
index 1949dfa..c6adb1f 100644 (file)
@@ -788,8 +788,8 @@ class TemplateService {
                                                if (@is_dir($ISF_filePath)) {
                                                        $mExtKey = str_replace('_', '', $ISF_extKey . '/' . $ISF_localPath);
                                                        $subrow = array(
                                                if (@is_dir($ISF_filePath)) {
                                                        $mExtKey = str_replace('_', '', $ISF_extKey . '/' . $ISF_localPath);
                                                        $subrow = array(
-                                                               'constants' => @file_exists(($ISF_filePath . 'constants.txt')) ? GeneralUtility::getUrl($ISF_filePath . 'constants.txt') : '',
-                                                               'config' => @file_exists(($ISF_filePath . 'setup.txt')) ? GeneralUtility::getUrl($ISF_filePath . 'setup.txt') : '',
+                                                               'constants' => $this->getTypoScriptSourceFileContent($ISF_filePath, 'constants'),
+                                                               'config' => $this->getTypoScriptSourceFileContent($ISF_filePath, 'setup'),
                                                                'include_static' => @file_exists(($ISF_filePath . 'include_static.txt')) ? implode(',', array_unique(GeneralUtility::intExplode(',', GeneralUtility::getUrl($ISF_filePath . 'include_static.txt')))) : '',
                                                                'include_static_file' => @file_exists(($ISF_filePath . 'include_static_file.txt')) ? implode(',', array_unique(explode(',', GeneralUtility::getUrl($ISF_filePath . 'include_static_file.txt')))) : '',
                                                                'title' => $ISF_file,
                                                                'include_static' => @file_exists(($ISF_filePath . 'include_static.txt')) ? implode(',', array_unique(GeneralUtility::intExplode(',', GeneralUtility::getUrl($ISF_filePath . 'include_static.txt')))) : '',
                                                                'include_static_file' => @file_exists(($ISF_filePath . 'include_static_file.txt')) ? implode(',', array_unique(explode(',', GeneralUtility::getUrl($ISF_filePath . 'include_static_file.txt')))) : '',
                                                                'title' => $ISF_file,
@@ -822,6 +822,25 @@ class TemplateService {
        }
 
        /**
        }
 
        /**
+        * Retrieves the content of the first existing file by extension order.
+        * Returns the empty string if no file is found.
+        *
+        * @param string $filePath The location of the file.
+        * @param string $baseName The base file name. "constants" or "setup".
+        * @return string
+        */
+       protected function getTypoScriptSourceFileContent($filePath, $baseName) {
+               $extensions = array('.ts', '.txt');
+               foreach ($extensions as $extension) {
+                       $fileName = $filePath . $baseName . $extension;
+                       if (@file_exists($fileName)) {
+                               return GeneralUtility::getUrl($fileName);
+                       }
+               }
+               return '';
+       }
+
+       /**
         * Adds the default TypoScript files for extensions if any.
         *
         * @param string $idList A list of already processed template ids including the current; The list is on the form "[prefix]_[uid]" where [prefix] is "sys" for "sys_template" records, "static" for "static_template" records and "ext_" for static include files (from extensions). The list is used to check that the recursive inclusion of templates does not go into circles: Simply it is used to NOT include a template record/file which has already BEEN included somewhere in the recursion.
         * Adds the default TypoScript files for extensions if any.
         *
         * @param string $idList A list of already processed template ids including the current; The list is on the form "[prefix]_[uid]" where [prefix] is "sys" for "sys_template" records, "static" for "static_template" records and "ext_" for static include files (from extensions). The list is used to check that the recursive inclusion of templates does not go into circles: Simply it is used to NOT include a template record/file which has already BEEN included somewhere in the recursion.