Bug #60213
closedpageRenderer->addJsFooterFile doesn't work as expected
0%
Description
When using "addJsFooterFile" to add JS files to a backend module this doesn't work as expected.
The reason for this is located in backend/Classes/Template/DocumentTemplate.php @ line 910 and 914
(https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/typo3/sysext/backend/Classes/Template/DocumentTemplate.php#l910)
The pageRenderer method "render" is called twice. Once for rendering the header and a second time for rendering the footer. But inside the render method the internal "jsFiles" and all other variables get reset:
https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/typo3/sysext/core/Classes/Page/PageRenderer.php#l1943
It is stated, that the pageRenderer needs a full reset after each rendering - but it is not stated why this full reset is needed.
I created a patch which disables the reset via an argument to ->render method. This did not show any side effects for a few short tests.
Files
Updated by Bernhard Kraft over 10 years ago
Maybe this issue is related to the same problem in FE context. This problem exists in frontend when using ->addJsFooterFile() from within an USER_INT object:
http://www.typo3.net/forum/thematik/zeige/thema/109987/?show=1
The problem is also mentioned here:
https://github.com/ohader/extbase_upload/blob/master/Classes/ViewHelpers/Controller/JQueryController.php#L217
http://typo3.3.n7.nabble.com/addJsFooterFile-not-working-in-BE-but-addJsFile-does-td253239.html
Updated by Bernhard Kraft over 10 years ago
- File patch_60213.diff patch_60213.diff added
Attached a patch. Gerrit is not working currently.
Updated by Markus Klein over 10 years ago
Bernhard, we already removed this reset in Core, but had to revert that patch, as it breaks the RSA auth for BE login.
Updated by Mathias Schreiber about 9 years ago
- Target version deleted (
next-patchlevel)
Updated by Markus Klein about 9 years ago
- Status changed from New to On Hold
Still an issue? (Also in 7?)
Updated by Markus Klein over 8 years ago
- Status changed from On Hold to Needs Feedback
Updated by Markus Klein over 8 years ago
Known issue, not solvable currently. See also comment in the code itself:
https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Classes/Page/PageRenderer.php#L1808
Updated by Markus Klein over 8 years ago
- Status changed from Needs Feedback to Accepted
Updated by Markus Klein over 8 years ago
Only BE modules are affected. A possible workaround for CMS 7+ is:
The BE module has to use the ModuleTemplate class (instead of the DocumentTemplate) and has to use a Fluid template therefore.
In the Fluid template you can write a view helper, which calls the addJsFooterFile()
method.
Background: In case of the ModuleTemplate, the HEADER part is rendered before the Fluid template is rendered, hence the PageRenderer is already reset and the newly added JS files should be adhered in the subsequent rendering of the FOOTER part.
Updated by Benni Mack over 4 years ago
- Status changed from Accepted to Closed
Closing this issue now. we've solved this issue in TYPO3 v10 by not having DocumentTemplate anymore. in TYPO3 v11 the ModuleTemplate is called once now, however.
Using a ViewHelper to add a JS Footer File should be done since TYPO3 v10 with the <f:asset.js> which adds the content to the footer in BE or FE.