[TASK] Deprecate VERY old BackendController hooks 87/52187/3
authorBenni Mack <benni@typo3.org>
Mon, 27 Mar 2017 15:34:07 +0000 (17:34 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 27 Mar 2017 17:03:01 +0000 (19:03 +0200)
When the BackendController was just a plain backend.php file (back in TYPO3 6.2)
there were some hooks available to load ExtJS components and JS/CSS files
via include statements and relative paths.

There are now better hooks within BackendController, so CSS and JS resources
can be loaded via PageRenderer and within the BackendController scope.

The obsolete methods and hooks are marked as deprecated.

Resolves: #80491
Releases: master
Change-Id: I9e0e72df7237ab958ec06f7d58a9fa41c75ba890
Reviewed-on: https://review.typo3.org/52187
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/backend/Classes/Controller/BackendController.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-80491-BackendControllerInclusionHooks.rst [new file with mode: 0644]

index bff9371..1e65fe5 100644 (file)
@@ -179,12 +179,15 @@ class BackendController
     /**
      * Add hooks from the additional backend items to load certain things for the main backend.
      * This was previously called from the global scope from backend.php.
+     *
+     * Please note that this method will be removed in TYPO3 v9. it does not throw a deprecation warning as it is protected and still called on every main backend request.
      */
     protected function includeLegacyBackendItems()
     {
         $TYPO3backend = $this;
         // Include extensions which may add css, javascript or toolbar items
         if (is_array($GLOBALS['TYPO3_CONF_VARS']['typo3/backend.php']['additionalBackendItems'])) {
+            GeneralUtility::deprecationLog('The hook $TYPO3_CONF_VARS["typo3/backend.php"]["additionalBackendItems"] is deprecated in TYPO3 v8, and will be removed in TYPO3 v9. Use the "constructPostProcess" hook within BackendController instead.');
             foreach ($GLOBALS['TYPO3_CONF_VARS']['typo3/backend.php']['additionalBackendItems'] as $additionalBackendItem) {
                 include_once $additionalBackendItem;
             }
@@ -192,7 +195,7 @@ class BackendController
 
         // Process ExtJS module js and css
         if (is_array($GLOBALS['TBE_MODULES']['_configuration'])) {
-            foreach ($GLOBALS['TBE_MODULES']['_configuration'] as $moduleConfig) {
+            foreach ($GLOBALS['TBE_MODULES']['_configuration'] as $moduleName => $moduleConfig) {
                 if (is_array($moduleConfig['cssFiles'])) {
                     foreach ($moduleConfig['cssFiles'] as $cssFileName => $cssFile) {
                         $cssFile = GeneralUtility::getFileAbsFileName($cssFile);
@@ -836,9 +839,11 @@ class BackendController
      * @param string $javascript Javascript snippet
      * @return void
      * @throws \InvalidArgumentException
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9. Use the "constructPostProcess" hook within BackendController instead.
      */
     public function addJavascript($javascript)
     {
+        GeneralUtility::logDeprecatedFunction();
         // @todo do we need more checks?
         if (!is_string($javascript)) {
             throw new \InvalidArgumentException('parameter $javascript must be of type string', 1195129553);
@@ -851,9 +856,11 @@ class BackendController
      *
      * @param string $javascriptFile Javascript file reference
      * @return bool TRUE if the javascript file was successfully added, FALSE otherwise
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9. Use the "constructPostProcess" hook within BackendController instead.
      */
     public function addJavascriptFile($javascriptFile)
     {
+        GeneralUtility::logDeprecatedFunction();
         $jsFileAdded = false;
         // @todo add more checks if necessary
         if (file_exists(GeneralUtility::resolveBackPath(PATH_typo3 . $javascriptFile))) {
@@ -884,9 +891,11 @@ class BackendController
      * @param string $cssFileName The css file's name with out the .css ending
      * @param string $cssFile Css file reference
      * @return bool TRUE if the css file was added, FALSE otherwise
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use the according PageRenderer methods directly
      */
     public function addCssFile($cssFileName, $cssFile)
     {
+        GeneralUtility::logDeprecatedFunction();
         $cssFileAdded = false;
         if (empty($this->cssFiles[$cssFileName])) {
             $this->cssFiles[$cssFileName] = $cssFile;
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80491-BackendControllerInclusionHooks.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80491-BackendControllerInclusionHooks.rst
new file mode 100644 (file)
index 0000000..ebe1e3a
--- /dev/null
@@ -0,0 +1,47 @@
+.. include:: ../../Includes.txt
+
+=======================================================
+Deprecation: #80491 - BackendController inclusion hooks
+=======================================================
+
+See :issue:`80491`
+
+Description
+===========
+
+The hook within BackendController `$TYPO3_CONF_VARS["typo3/backend.php"]["additionalBackendItems"]`
+has been marked as deprecated.
+
+Loading ExtJS module JS/CSS files via `ExtensionManagementUtility::addExtJSModule()` inside
+the module configuration has been deprecated.
+
+Calling `BackendController->addJavascriptFile()`, `BackendController->addJavascript()`
+and `BackendController->addCssFile()` will trigger a deprecation log entry.
+
+
+Impact
+======
+
+Registering a hook via `$TYPO3_CONF_VARS["typo3/backend.php"]["additionalBackendItems"]` and then
+calling the Backend main page will trigger a deprecation log warning.
+
+Registering any backend module which should load a global CSS/JS file within a module configuration
+will trigger a deprecation log warning.
+
+Calling any of the methods above will trigger a deprecation log warning.
+
+
+Affected Installations
+======================
+
+Any installation using the hook or PHP methods directly in a custom extension, or using any of
+the public methods above in a custom PHP script.
+
+
+Migration
+=========
+
+Use the "constructPostProcess" hook within BackendController to load additional resources to achieve
+the same functionality.
+
+.. index:: Backend, PHP-API
\ No newline at end of file