diff --git a/typo3/sysext/backend/Classes/Form/FormEngine.php b/typo3/sysext/backend/Classes/Form/FormEngine.php index 7fc64f08a0a28e9cbc9e553f95caae4e05b1615d..b8ac1438c705d86b5885191940e8b5e024be549b 100644 --- a/typo3/sysext/backend/Classes/Form/FormEngine.php +++ b/typo3/sysext/backend/Classes/Form/FormEngine.php @@ -1231,31 +1231,32 @@ class FormEngine { FormEngineValidation.registerReady(); }'; + $pageRenderer = $this->getPageRenderer(); foreach ($this->requireJsModules as $moduleName => $callbacks) { if (!is_array($callbacks)) { $callbacks = array($callbacks); } foreach ($callbacks as $callback) { - $this->getPageRenderer()->loadRequireJsModule($moduleName, $callback); + $pageRenderer->loadRequireJsModule($moduleName, $callback); } } - $this->getPageRenderer()->loadPrototype(); - $this->getPageRenderer()->loadJquery(); - $this->getPageRenderer()->loadExtJS(); + $pageRenderer->loadPrototype(); + $pageRenderer->loadJquery(); + $pageRenderer->loadExtJS(); // rtehtmlarea needs extjs quick tips (?) - $this->getPageRenderer()->enableExtJSQuickTips(); + $pageRenderer->enableExtJSQuickTips(); $beUserAuth = $this->getBackendUserAuthentication(); // Make textareas resizable and flexible ("autogrow" in height) $textareaSettings = array( 'autosize' => (bool)$beUserAuth->uc['resizeTextareas_Flexible'] ); - $this->getPageRenderer()->addInlineSettingArray('Textarea', $textareaSettings); + $pageRenderer->addInlineSettingArray('Textarea', $textareaSettings); $this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tbe_editor.js'); - $this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ValueSlider'); + $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ValueSlider'); // Needed for FormEngine manipulation (date picker) $dateFormat = ($GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? array('MM-DD-YYYY', 'HH:mm MM-DD-YYYY') : array('DD-MM-YYYY', 'HH:mm DD-MM-YYYY')); - $this->getPageRenderer()->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat); + $pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat); // support placeholders for IE9 and lower $clientInfo = GeneralUtility::clientInfo(); @@ -1264,13 +1265,13 @@ class FormEngine { } // @todo: remove scriptaclous once suggest & flex form foo is moved to RequireJS, see #55575 - $this->getPageRenderer()->loadScriptaculous(); + $pageRenderer->loadScriptaculous(); $this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/jsfunc.tceforms_suggest.js'); - $this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation'); - $this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader'); + $pageRenderer->loadRequireJsModule('TYPO3/CMS/Filelist/FileListLocalisation'); + $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DragUploader'); - $this->getPageRenderer()->addInlineLanguagelabelFile( + $pageRenderer->addInlineLanguagelabelFile( \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('lang') . 'locallang_core.xlf', 'file_upload' ); @@ -1329,11 +1330,12 @@ class FormEngine { */ public function printNeededJSFunctions() { // set variables to be accessible for JS - $this->getPageRenderer()->addInlineSetting('FormEngine', 'formName', 'editform'); - $this->getPageRenderer()->addInlineSetting('FormEngine', 'backPath', ''); + $pageRenderer = $this->getPageRenderer(); + $pageRenderer->addInlineSetting('FormEngine', 'formName', 'editform'); + $pageRenderer->addInlineSetting('FormEngine', 'backPath', ''); // Integrate JS functions for the element browser if such fields or IRRE fields were processed - $this->getPageRenderer()->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };'); + $pageRenderer->addInlineSetting('FormEngine', 'legacyFieldChangedCb', 'function() { ' . $this->TBE_EDITOR_fieldChanged_func . ' };'); return $this->JSbottom('editform'); } diff --git a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php index 1858b961259ef321069da177c4f2e3b0a747f389..2ec11b0c8c2c54febfdae072f5236c57361f3057 100644 --- a/typo3/sysext/backend/Classes/Template/DocumentTemplate.php +++ b/typo3/sysext/backend/Classes/Template/DocumentTemplate.php @@ -354,7 +354,7 @@ function jumpToUrl(URL) { /** * @var PageRenderer */ - protected $pageRenderer; + protected $pageRenderer = NULL; /** * Alternative template file @@ -385,7 +385,7 @@ function jumpToUrl(URL) { */ public function __construct() { // Initializes the page rendering object: - $this->getPageRenderer(); + $this->initPageRenderer(); // load Legacy CSS Support $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/LegacyCssClasses'); @@ -433,38 +433,48 @@ function jumpToUrl(URL) { } } + /** + * Initializes the page renderer object + */ + protected function initPageRenderer() { + if ($this->pageRenderer !== NULL) { + return; + } + $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); + $this->pageRenderer->setLanguage($GLOBALS['LANG']->lang); + $this->pageRenderer->enableConcatenateFiles(); + $this->pageRenderer->enableCompressCss(); + $this->pageRenderer->enableCompressJavascript(); + // Add all JavaScript files defined in $this->jsFiles to the PageRenderer + foreach ($this->jsFilesNoConcatenation as $file) { + $this->pageRenderer->addJsFile( + $GLOBALS['BACK_PATH'] . $file, + 'text/javascript', + TRUE, + FALSE, + '', + TRUE + ); + } + // Add all JavaScript files defined in $this->jsFiles to the PageRenderer + foreach ($this->jsFiles as $file) { + $this->pageRenderer->addJsFile($GLOBALS['BACK_PATH'] . $file); + } + if ((int)$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] === 1) { + $this->pageRenderer->enableDebugMode(); + } + } + /** * Gets instance of PageRenderer configured with the current language, file references and debug settings * * @return PageRenderer - * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. This method will become protected then. + * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. */ public function getPageRenderer() { - if (!isset($this->pageRenderer)) { - $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); - $this->pageRenderer->setLanguage($GLOBALS['LANG']->lang); - $this->pageRenderer->enableConcatenateFiles(); - $this->pageRenderer->enableCompressCss(); - $this->pageRenderer->enableCompressJavascript(); - // Add all JavaScript files defined in $this->jsFiles to the PageRenderer - foreach ($this->jsFilesNoConcatenation as $file) { - $this->pageRenderer->addJsFile( - $GLOBALS['BACK_PATH'] . $file, - 'text/javascript', - TRUE, - FALSE, - '', - TRUE - ); - } - // Add all JavaScript files defined in $this->jsFiles to the PageRenderer - foreach ($this->jsFiles as $file) { - $this->pageRenderer->addJsFile($GLOBALS['BACK_PATH'] . $file); - } - } - if ((int)$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] === 1) { - $this->pageRenderer->enableDebugMode(); - } + GeneralUtility::logDeprecatedFunction(); + $this->initPageRenderer(); + return $this->pageRenderer; } diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst index b215cd34995342e533a3e6b93e5b81d43a48cf0e..ba3bfbfd209f7a2688879d2cfe7ebcf5a9bd07c3 100644 --- a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst +++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-68074-DeprecateGetPageRenderer.rst @@ -16,9 +16,7 @@ The following public functions have been marked for deprecation as the instance Impact ====== -Using ``BackendController::getPageRenderer`` or ``FrontendDocumentTemplate::getPageRenderer`` will throw a deprecation message. -The public functions ``DocumentTemplate::getPageRenderer`` and ``TypoScriptFrontendController::getPageRenderer`` will become -protected methods with TYPO3 CMS 8. As those functions have to be used within the classes themselves no deprecation message can be thrown. +Using one of these functions will throw a deprecation message. Migration diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php index ec06c9d4370e27ba86f9440cf53d12a33dd650ea..803810c012acbdecd5e3191bc71c01319478325d 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Be/TriggerViewHelper.php @@ -55,11 +55,4 @@ class TriggerViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendV return ''; } - /** - * @return PageRenderer - */ - protected function getPageRenderer() { - return $this->objectManager->get(PageRenderer::class); - } - } diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php index dfbca23d3a4b42d079a858b05034b710f1ccea19..0c1f3ab125796b763128a24890125bbd04633514 100644 --- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php +++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php @@ -798,7 +798,7 @@ class TypoScriptFrontendController { /** * @var PageRenderer */ - protected $pageRenderer; + protected $pageRenderer = NULL; /** * The page cache object, use this to save pages to the cache and to @@ -890,6 +890,7 @@ class TypoScriptFrontendController { $this->clientInfo = GeneralUtility::clientInfo(); $this->uniqueString = md5(microtime()); $this->csConvObj = GeneralUtility::makeInstance(CharsetConverter::class); + $this->initPageRenderer(); // Call post processing function for constructor: if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-PostProc'])) { $_params = array('pObj' => &$this); @@ -901,6 +902,18 @@ class TypoScriptFrontendController { $this->initCaches(); } + /** + * Initializes the page renderer object + */ + protected function initPageRenderer() { + if ($this->pageRenderer !== NULL) { + return; + } + $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); + $this->pageRenderer->setTemplateFile('EXT:frontend/Resources/Private/Templates/MainPage.html'); + $this->pageRenderer->setBackPath(TYPO3_mainDir); + } + /** * @param string $contentType * @internal Should only be used by TYPO3 core for now @@ -978,14 +991,12 @@ class TypoScriptFrontendController { * Gets instance of PageRenderer * * @return PageRenderer - * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. This method will become protected then. + * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8. */ public function getPageRenderer() { - if (!isset($this->pageRenderer)) { - $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); - $this->pageRenderer->setTemplateFile('EXT:frontend/Resources/Private/Templates/MainPage.html'); - $this->pageRenderer->setBackPath(TYPO3_mainDir); - } + GeneralUtility::logDeprecatedFunction(); + $this->initPageRenderer(); + return $this->pageRenderer; } @@ -2529,7 +2540,7 @@ class TypoScriptFrontendController { if ($this->pSetup['pageHeaderFooterTemplateFile']) { $file = $this->tmpl->getFileName($this->pSetup['pageHeaderFooterTemplateFile']); if ($file) { - $this->getPageRenderer()->setTemplateFile($file); + $this->pageRenderer->setTemplateFile($file); } } } @@ -3387,7 +3398,9 @@ class TypoScriptFrontendController { $this->additionalJavaScript = $this->config['INTincScript_ext']['additionalJavaScript']; $this->additionalCSS = $this->config['INTincScript_ext']['additionalCSS']; $this->divSection = ''; - if (!empty($this->config['INTincScript_ext']['pageRenderer'])) { + if (empty($this->config['INTincScript_ext']['pageRenderer'])) { + $this->initPageRenderer(); + } else { /** @var PageRenderer $pageRenderer */ $pageRenderer = unserialize($this->config['INTincScript_ext']['pageRenderer']); $this->pageRenderer = $pageRenderer; @@ -3410,7 +3423,7 @@ class TypoScriptFrontendController { $this->convOutputCharset(implode(LF, $this->additionalFooterData), 'FD'), $this->convOutputCharset($this->divSection, 'TDS'), ), - $this->getPageRenderer()->renderJavaScriptAndCssForProcessingOfUncachedContentObjects($this->content, $this->config['INTincScript_ext']['divKey']) + $this->pageRenderer->renderJavaScriptAndCssForProcessingOfUncachedContentObjects($this->content, $this->config['INTincScript_ext']['divKey']) ); // Replace again, because header and footer data and page renderer replacements may introduce additional placeholders (see #44825) $this->recursivelyReplaceIntPlaceholdersInContent(); @@ -4464,7 +4477,7 @@ class TypoScriptFrontendController { $this->languageDependencies = array(); // Setting language key and split index: $this->lang = $this->config['config']['language'] ?: 'default'; - $this->getPageRenderer()->setLanguage($this->lang); + $this->pageRenderer->setLanguage($this->lang); // Finding the requested language in this list based // on the $lang key being inputted to this function.