[BUGFIX] Reenable JS in Extension Manager 46/44746/5
authorNicole Cordes <typo3@cordes.co>
Tue, 17 Nov 2015 10:54:02 +0000 (11:54 +0100)
committerMarkus Klein <markus.klein@typo3.org>
Thu, 19 Nov 2015 10:00:12 +0000 (11:00 +0100)
Due to commit https://review.typo3.org/40936/ the JavaScript loaded by
the Extension Manager breaks because jQuery is run in noConflict() mode.

This patch adds a new option within the ContainerViewHelper and
PageRendererViewHelper to be able to set an alternative namespace for
jQuery loading, allowing to have jQuery global again.

Resolves: #71618
Releases: master
Change-Id: Idb63927facee0dfb4797c1dda007033915d7256a
Reviewed-on: https://review.typo3.org/44746
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/extensionmanager/Resources/Private/Layouts/Main.html
typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/PageRendererViewHelper.php

index 6ec7227..332b0d4 100644 (file)
@@ -1,7 +1,6 @@
-{namespace em=TYPO3\CMS\Extensionmanager\ViewHelpers}
-
 <f:be.pageRenderer
        loadJQuery="true"
+       jQueryNamespace="none"
        includeCssFiles="{
                0:'{f:uri.resource(path:\'Contrib/LoadMask/jquery.loadmask.css\')}'
        }"
index cc2723b..6f2e626 100644 (file)
@@ -21,6 +21,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
  * The TYPO3 project - inspiring people to share!                         *
  *                                                                        */
 
+use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
 
 /**
@@ -61,11 +62,12 @@ class ContainerViewHelper extends AbstractBackendViewHelper
      * @param array $includeJsFiles List of custom JavaScript file to be loaded
      * @param array $addJsInlineLabels Custom labels to add to JavaScript inline labels
      * @param array $includeRequireJsModules List of RequireJS modules to be loaded
+     * @param string $jQueryNamespace Store the jQuery object in a specific namespace
      * @return string
      * @see \TYPO3\CMS\Backend\Template\DocumentTemplate
      * @see \TYPO3\CMS\Core\Page\PageRenderer
      */
-    public function render($pageTitle = '', $enableClickMenu = true, $loadExtJs = false, $loadExtJsTheme = true, $enableExtJsDebug = false, $loadJQuery = false, $includeCssFiles = null, $includeJsFiles = null, $addJsInlineLabels = null, $includeRequireJsModules = null)
+    public function render($pageTitle = '', $enableClickMenu = true, $loadExtJs = false, $loadExtJsTheme = true, $enableExtJsDebug = false, $loadJQuery = false, $includeCssFiles = null, $includeJsFiles = null, $addJsInlineLabels = null, $includeRequireJsModules = null, $jQueryNamespace = null)
     {
         $pageRenderer = $this->getPageRenderer();
         $doc = $this->getDocInstance();
@@ -82,7 +84,8 @@ class ContainerViewHelper extends AbstractBackendViewHelper
             }
         }
         if ($loadJQuery) {
-            $pageRenderer->loadJquery();
+            $jQueryNamespace = $jQueryNamespace ?: PageRenderer::JQUERY_NAMESPACE_DEFAULT;
+            $pageRenderer->loadJquery(null, null, $jQueryNamespace);
         }
         // Include custom CSS and JS files
         if (is_array($includeCssFiles) && count($includeCssFiles) > 0) {
index 3c9f789..9a55fed 100644 (file)
@@ -60,9 +60,10 @@ class PageRendererViewHelper extends AbstractViewHelper
      * @param array $includeJsFiles List of custom JavaScript file to be loaded
      * @param array $addJsInlineLabels Custom labels to add to JavaScript inline labels
      * @param array $includeRequireJsModules List of RequireJS modules to be loaded
+     * @param string $jQueryNamespace Store the jQuery object in a specific namespace
      * @return void
      */
-    public function render($pageTitle = '', $loadExtJs = false, $loadExtJsTheme = true, $enableExtJsDebug = false, $loadJQuery = false, $includeCssFiles = null, $includeJsFiles = null, $addJsInlineLabels = null, $includeRequireJsModules = null)
+    public function render($pageTitle = '', $loadExtJs = false, $loadExtJsTheme = true, $enableExtJsDebug = false, $loadJQuery = false, $includeCssFiles = null, $includeJsFiles = null, $addJsInlineLabels = null, $includeRequireJsModules = null, $jQueryNamespace = null)
     {
         if ($pageTitle) {
             $this->pageRenderer->setTitle($pageTitle);
@@ -74,7 +75,8 @@ class PageRendererViewHelper extends AbstractViewHelper
             }
         }
         if ($loadJQuery) {
-            $this->pageRenderer->loadJquery();
+            $jQueryNamespace = $jQueryNamespace ?: PageRenderer::JQUERY_NAMESPACE_DEFAULT;
+            $this->pageRenderer->loadJquery(null, null, $jQueryNamespace);
         }
         // Include custom CSS and JS files
         if (is_array($includeCssFiles) && count($includeCssFiles) > 0) {