[TASK] Deprecate jQuery and extJS arguments for BE viewhelpers 94/51794/6
authorBenni Mack <benni@typo3.org>
Wed, 22 Feb 2017 09:24:21 +0000 (10:24 +0100)
committerMarkus Klein <markus.klein@typo3.org>
Tue, 28 Feb 2017 18:14:56 +0000 (19:14 +0100)
The BE-related viewhelpers <f:be.container> and <f:be.pageRenderer>
have properties to activate ExtJS and jQuery with various options.

1. ExtJS will be removed in TYPO3 v9, and using ExtJS in custom
backend modules is deprecated.

2. jQuery is now always loaded with DocumentTemplate and
ModuleTemplate, so the option does not work at all. All occurrences
use RequireJS modules which resolve their dependencies to
jQuery within the JS module.

All places in the TYPO3 Core where these options have been
used are removed.

Resolves: #80047
Releases: master
Change-Id: Ie89cb59e8ed7d9bc6cb27a6593a0aaa293fb3538
Reviewed-on: https://review.typo3.org/51794
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/beuser/Resources/Private/Layouts/Default.html
typo3/sysext/core/Documentation/Changelog/master/Deprecation-80047-DeprecateJQueryAndExtJSForBEViewhelpers.rst [new file with mode: 0644]
typo3/sysext/extensionmanager/Resources/Private/Layouts/Main.html
typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/PageRendererViewHelper.php
typo3/sysext/form/Resources/Private/Backend/Layouts/FormEditor.html
typo3/sysext/form/Resources/Private/Backend/Layouts/FormManager.html
typo3/sysext/opendocs/Resources/Private/Templates/DropDown.html
typo3/sysext/taskcenter/Resources/Private/Templates/ListMenu.html
typo3/sysext/wizard_crpages/Resources/Private/Templates/CreatePagesWizard.html

index 451d6bd..f0df258 100644 (file)
@@ -1,6 +1,4 @@
 <f:be.pageRenderer
-       loadJQuery="true"
-       jQueryNamespace="none"
        includeRequireJsModules="{
                0:'TYPO3/CMS/Backend/ContextMenu'
        }"
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80047-DeprecateJQueryAndExtJSForBEViewhelpers.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80047-DeprecateJQueryAndExtJSForBEViewhelpers.rst
new file mode 100644 (file)
index 0000000..3af9c49
--- /dev/null
@@ -0,0 +1,49 @@
+.. include:: ../../Includes.txt
+
+===================================================================
+Deprecation: #80047 - Deprecate jQuery and extJS for BE viewhelpers
+===================================================================
+
+See :issue:`80047`
+
+Description
+===========
+
+The BE related ViewHelpers :html:`<f:be.container>` and :html:`<f:be.pageRenderer>` have properties to activate ExtJS and jQuery with various options. The usage of ExtJS has been deprecated and jQuery is always loaded. Therefore the following attributes have been marked as deprecated.
+
+:html:`<f:be.container>`
+
+- `enableClickMenu`
+- `loadExtJs`
+- `loadExtJsTheme`
+- `enableExtJsDebug`
+- `loadJQuery`
+- `jQueryNamespace`
+
+:html:`<f:be.pageRenderer>`
+
+- `loadExtJs`
+- `loadExtJsTheme`
+- `enableExtJsDebug`
+- `loadJQuery`
+- `jQueryNamespace`
+
+
+Impact
+======
+
+Using these attributes will trigger a deprecation log entry. Code using them will work until these methods are removed in TYPO3 v9.
+
+
+Affected Installations
+======================
+
+Any installation using the mentioned attributes.
+
+
+Migration
+=========
+
+No migration available.
+
+.. index:: Backend, Fluid
index 3027de4..6a79f34 100644 (file)
@@ -1,8 +1,6 @@
 {namespace em=TYPO3\CMS\Extensionmanager\ViewHelpers}
 
 <f:be.pageRenderer
-       loadJQuery="true"
-       jQueryNamespace="none"
        includeRequireJsModules="{
                0:'TYPO3/CMS/Extensionmanager/Main'
        }"
index 0b50d13..63cdf25 100644 (file)
@@ -32,7 +32,7 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
  * </output>
  *
  * <code title="All options">
- * <f:be.container pageTitle="foo" enableClickMenu="false" loadExtJs="true" loadExtJsTheme="false" extJsAdapter="jQuery" enableExtJsDebug="true" loadJQuery="true" includeCssFiles="{0: '{f:uri.resource(path:\'Css/Styles.css\')}'}" includeJsFiles="{0: '{f:uri.resource(path:\'JavaScript/Library1.js\')}', 1: '{f:uri.resource(path:\'JavaScript/Library2.js\')}'}" addJsInlineLabels="{0: 'label1', 1: 'label2'}">your module content</f:be.container>
+ * <f:be.container pageTitle="foo" enableClickMenu="false" loadExtJs="true" loadExtJsTheme="false" enableExtJsDebug="true" loadJQuery="true" includeCssFiles="{0: '{f:uri.resource(path:\'Css/Styles.css\')}'}" includeJsFiles="{0: '{f:uri.resource(path:\'JavaScript/Library1.js\')}', 1: '{f:uri.resource(path:\'JavaScript/Library2.js\')}'}" addJsInlineLabels="{0: 'label1', 1: 'label2'}">your module content</f:be.container>
  * </code>
  * <output>
  * "your module content" wrapped with proper head & body tags.
@@ -57,16 +57,16 @@ class ContainerViewHelper extends AbstractBackendViewHelper
     {
         parent::initializeArguments();
         $this->registerArgument('pageTitle', 'string', 'Title tag of the module. Not required by default, as BE modules are shown in a frame', false, '');
-        $this->registerArgument('enableClickMenu', 'bool', 'If TRUE, loads clickmenu.js required by BE context menus. Defaults to TRUE', false, true);
-        $this->registerArgument('loadExtJs', 'bool', 'Specifies whether to load ExtJS library. Defaults to FALSE', false, false);
-        $this->registerArgument('loadExtJsTheme', 'bool', 'Whether to load ExtJS "grey" theme. Defaults to FALSE', false, true);
-        $this->registerArgument('enableExtJsDebug', 'bool', 'If TRUE, debug version of ExtJS is loaded. Use this for development only', false, false);
-        $this->registerArgument('loadJQuery', 'bool', 'Whether to load jQuery library. Defaults to FALSE', false, false);
+        $this->registerArgument('enableClickMenu', 'bool', 'If TRUE, loads clickmenu.js required by BE context menus. Defaults to TRUE. This option will be removed in TYPO3 v9', false, true);
+        $this->registerArgument('loadExtJs', 'bool', 'Specifies whether to load ExtJS library. Defaults to FALSE. This option will be removed in TYPO3 v9', false, false);
+        $this->registerArgument('loadExtJsTheme', 'bool', 'Whether to load ExtJS "grey" theme. Defaults to FALSE. This option will be removed in TYPO3 v9', false, true);
+        $this->registerArgument('enableExtJsDebug', 'bool', 'If TRUE, debug version of ExtJS is loaded. Use this for development only. This option will be removed in TYPO3 v9', false, false);
+        $this->registerArgument('loadJQuery', 'bool', 'Whether to load jQuery library. Defaults to FALSE. This option will be removed in TYPO3 v9', false, false);
         $this->registerArgument('includeCssFiles', 'array', 'List of custom CSS file to be loaded');
         $this->registerArgument('includeJsFiles', 'array', 'List of custom JavaScript file to be loaded');
         $this->registerArgument('addJsInlineLabels', 'array', 'Custom labels to add to JavaScript inline labels');
         $this->registerArgument('includeRequireJsModules', 'array', 'List of RequireJS modules to be loaded');
-        $this->registerArgument('jQueryNamespace', 'string', 'Store the jQuery object in a specific namespace');
+        $this->registerArgument('jQueryNamespace', 'string', 'Store the jQuery object in a specific namespace. This option will be removed in TYPO3 v9');
     }
 
     /**
@@ -96,16 +96,36 @@ class ContainerViewHelper extends AbstractBackendViewHelper
 
         // Load various standard libraries
         if ($enableClickMenu) {
+            GeneralUtility::logDeprecatedViewHelperAttribute(
+                'enableClickMenu',
+                $this->renderingContext,
+                'Setting "enableClickMenu" in Container ViewHelper is deprecated, the option will be removed in TYPO3 v9'
+            );
             $pageRenderer->loadJquery();
             $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
         }
         if ($loadExtJs) {
+            GeneralUtility::logDeprecatedViewHelperAttribute(
+                'loadExtJs',
+                $this->renderingContext,
+                'Setting "loadExtJs" and "loadExtJsTheme" in Container ViewHelper is deprecated, the option will be removed in TYPO3 v9'
+            );
             $pageRenderer->loadExtJS(true, $loadExtJsTheme);
             if ($enableExtJsDebug) {
+                GeneralUtility::logDeprecatedViewHelperAttribute(
+                    'enableExtJsDebug',
+                    $this->renderingContext,
+                    'Setting "enableExtJsDebug" in Container ViewHelper is deprecated, the option will be removed in TYPO3 v9'
+                );
                 $pageRenderer->enableExtJsDebug();
             }
         }
         if ($loadJQuery) {
+            GeneralUtility::logDeprecatedViewHelperAttribute(
+                'loadjQuery',
+                $this->renderingContext,
+                'Setting "loadjQuery" and "jQueryNamespace" in Container ViewHelper are deprecated, the option will be removed in TYPO3 v9'
+            );
             $jQueryNamespace = $jQueryNamespace ?: PageRenderer::JQUERY_NAMESPACE_DEFAULT;
             $pageRenderer->loadJquery(null, null, $jQueryNamespace);
         }
index 16adcd1..5781273 100644 (file)
@@ -15,6 +15,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
  */
 
 use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
 use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 
@@ -57,15 +58,15 @@ class PageRendererViewHelper extends AbstractViewHelper
     {
         parent::initializeArguments();
         $this->registerArgument('pageTitle', 'string', 'title tag of the module. Not required by default, as BE modules are shown in a frame', false, '');
-        $this->registerArgument('loadExtJs', 'bool', 'specifies whether to load ExtJS library. Defaults to FALSE', false, false);
-        $this->registerArgument('loadExtJsTheme', 'bool', 'whether to load ExtJS "grey" theme. Defaults to FALSE', false, true);
-        $this->registerArgument('enableExtJsDebug', 'bool', 'if TRUE, debug version of ExtJS is loaded. Use this for development only', false, false);
-        $this->registerArgument('loadJQuery', 'bool', 'whether to load jQuery library. Defaults to FALSE', false, false);
+        $this->registerArgument('loadExtJs', 'bool', 'specifies whether to load ExtJS library. Defaults to FALSE. This option will be removed in TYPO3 v9', false, false);
+        $this->registerArgument('loadExtJsTheme', 'bool', 'whether to load ExtJS "grey" theme. Defaults to FALSE. This option will be removed in TYPO3 v9', false, true);
+        $this->registerArgument('enableExtJsDebug', 'bool', 'if TRUE, debug version of ExtJS is loaded. Use this for development only. This option will be removed in TYPO3 v9', false, false);
+        $this->registerArgument('loadJQuery', 'bool', 'whether to load jQuery library. Defaults to FALSE. This option will be removed in TYPO3 v9', false, false);
         $this->registerArgument('includeCssFiles', 'array', 'List of custom CSS file to be loaded');
         $this->registerArgument('includeJsFiles', 'array', 'List of custom JavaScript file to be loaded');
         $this->registerArgument('addJsInlineLabels', 'array', 'Custom labels to add to JavaScript inline labels');
         $this->registerArgument('includeRequireJsModules', 'array', 'List of RequireJS modules to be loaded');
-        $this->registerArgument('jQueryNamespace', 'string', 'Store the jQuery object in a specific namespace');
+        $this->registerArgument('jQueryNamespace', 'string', 'Store the jQuery object in a specific namespace. This option will be removed in TYPO3 v9');
     }
 
     /**
@@ -88,12 +89,27 @@ class PageRendererViewHelper extends AbstractViewHelper
             $this->pageRenderer->setTitle($pageTitle);
         }
         if ($loadExtJs) {
+            GeneralUtility::logDeprecatedViewHelperAttribute(
+                'loadExtJs',
+                $this->renderingContext,
+                'Setting "loadExtJs" and "loadExtJsTheme" in PageRenderer ViewHelper is deprecated, the option will be removed in TYPO3 v9'
+            );
             $this->pageRenderer->loadExtJS(true, $loadExtJsTheme);
             if ($enableExtJsDebug) {
+                GeneralUtility::logDeprecatedViewHelperAttribute(
+                    'enableExtJsDebug',
+                    $this->renderingContext,
+                    'Setting "enableExtJsDebug" in PageRenderer ViewHelper is deprecated, the option will be removed in TYPO3 v9'
+                );
                 $this->pageRenderer->enableExtJsDebug();
             }
         }
         if ($loadJQuery) {
+            GeneralUtility::logDeprecatedViewHelperAttribute(
+                'loadjQuery',
+                $this->renderingContext,
+                'Setting "loadjQuery" and "jQueryNamespace" in PageRenderer ViewHelper are deprecated, the option will be removed in TYPO3 v9'
+            );
             $jQueryNamespace = $jQueryNamespace ?: PageRenderer::JQUERY_NAMESPACE_DEFAULT;
             $this->pageRenderer->loadJquery(null, null, $jQueryNamespace);
         }
index 447dc5f..ad02201 100644 (file)
@@ -1,8 +1,6 @@
 {namespace formvh = TYPO3\CMS\Form\ViewHelpers}
 
 <formvh:be.pageRenderer
-    loadExtJsTheme="false"
-    loadJQuery="true"
     includeCssFiles="{stylesheets}"
     addInlineSettings="{addInlineSettings}"
     includeJsFiles="{0: 'EXT:backend/Resources/Public/JavaScript/jsfunc.tbe_editor.js'}"
index 66a4e31..5de0312 100644 (file)
@@ -1,7 +1,6 @@
 <f:be.pageRenderer
-    loadExtJsTheme="false"
     includeCssFiles="{stylesheets}"
 />
 
 <f:flashMessages />
-<f:render section="MainContent" />
\ No newline at end of file
+<f:render section="MainContent" />
index 18c3c0f..722ae74 100644 (file)
@@ -1,4 +1,4 @@
-<f:be.pageRenderer loadJQuery="false" includeRequireJsModules="{0:'TYPO3/CMS/Opendocs/Toolbar/OpendocsMenu'}" />
+<f:be.pageRenderer includeRequireJsModules="{0:'TYPO3/CMS/Opendocs/Toolbar/OpendocsMenu'}" />
 
 <h3 class="dropdown-headline">
     {f:translate(key: 'toolbaritem', extensionName: 'opendocs')}
index 06de18b..ab73b05 100644 (file)
@@ -1,6 +1,6 @@
 <f:if condition="{mainMenu}">
     <f:then>
-        <f:be.pageRenderer loadJQuery="false" includeRequireJsModules="{0:'TYPO3/CMS/Taskcenter/Taskcenter'}" />
+        <f:be.pageRenderer includeRequireJsModules="{0:'TYPO3/CMS/Taskcenter/Taskcenter'}" />
         <ul id="task-list" class="list-unstyled">
     </f:then>
     <f:else>
index 6cb6e8d..8f55b1b 100644 (file)
@@ -1,4 +1,4 @@
-<f:be.pageRenderer loadJQuery="true" includeRequireJsModules="{0:'TYPO3/CMS/WizardCrpages/WizardCreatePages'}" />
+<f:be.pageRenderer includeRequireJsModules="{0:'TYPO3/CMS/WizardCrpages/WizardCreatePages'}" />
 <h1><f:translate key="{LLPrefix}wiz_crMany"/></h1>
 <div>
     <f:if condition="{pages}">