diff --git a/Build/sites/main/config.yaml b/Build/sites/main/config.yaml
new file mode 100644
index 0000000..f1cfaaa
--- /dev/null
+++ b/Build/sites/main/config.yaml
@@ -0,0 +1,20 @@
+base: 'http://localhost/'
+baseVariants: { }
+errorHandling: { }
+languages:
+ -
+ title: english
+ enabled: true
+ base: /
+ typo3Language: default
+ locale: en_US.UTF-8
+ iso-639-1: en
+ navigationTitle: ''
+ hreflang: ''
+ direction: ''
+ flag: global
+ languageId: '0'
+ websiteTitle: ''
+rootPageId: 1
+routes: { }
+websiteTitle: 'Testing'
diff --git a/Classes/AssetCollector.php b/Classes/AssetCollector.php
index 0cc3857..448d953 100644
--- a/Classes/AssetCollector.php
+++ b/Classes/AssetCollector.php
@@ -1,5 +1,6 @@
cssFiles[] = GeneralUtility::getFileAbsFileName($cssFile);
}
- /**
- * @param string $fileName
- * @param string $mediaType
- */
public function addExternalCssFile(string $fileName, string $mediaType = 'all'): void
{
// Only add external css file if not added already.
@@ -94,7 +63,7 @@ public function addJavaScriptFile(string $fileName, array $additionalAttributes
}
$this->jsFiles[] = [
'fileName' => $fileName,
- 'additionalAttributes' => $additionalAttributes
+ 'additionalAttributes' => $additionalAttributes,
];
}
@@ -161,9 +130,8 @@ public function buildInlineCssTag(): string
if (trim($inlineCss) !== '') {
$compressor = GeneralUtility::makeInstance(ResourceCompressor::class);
return '';
- } else {
- return '';
}
+ return '';
}
public function buildJavaScriptIncludes(): string
@@ -196,7 +164,6 @@ public function buildInlineXmlTag(): string
$xmlFiles = $this->getUniqueXmlFiles();
foreach ($xmlFiles as $xmlFile) {
if (file_exists($xmlFile)) {
-
$iconIdentifier = $this->getIconIdentifierFromFileName($xmlFile);
$svgInline = '';
$xmlContent = new \DOMDocument();
@@ -214,7 +181,6 @@ public function buildInlineXmlTag(): string
$inlineXml .= ''
. $svgInline
. '';
-
}
}
if (trim($inlineXml) !== '') {
@@ -223,9 +189,8 @@ public function buildInlineXmlTag(): string
. ''
. $inlineXml
. '';
- } else {
- return '';
}
+ return '';
}
protected function removeUtf8Bom(string $text): string
@@ -254,23 +219,18 @@ public function getTypoScriptValue(string $name): string
protected function loadTypoScript(): void
{
- $this->typoScriptConfiguration = $this->getExtbaseFrameworkConfiguration() ?? [];
+ $this->typoScriptConfiguration = [];
+ $frontendController = $this->getTypoScriptFrontendController();
+ if ($frontendController !== null) {
+ $this->typoScriptConfiguration = $frontendController->tmpl->setup['plugin.']['tx_assetcollector.']['icons.'] ?? [];
+ }
}
- protected function getExtbaseFrameworkConfiguration(): ?array
+ protected function getTypoScriptFrontendController(): ?TypoScriptFrontendController
{
- $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
- $configurationManager = $objectManager->get(ConfigurationManager::class);
- try {
- $extbaseFrameworkConfiguration = $configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
- if (is_array($extbaseFrameworkConfiguration['plugin.']['tx_assetcollector.']['icons.'])) {
- return $extbaseFrameworkConfiguration['plugin.']['tx_assetcollector.']['icons.'];
- }
- } catch (\TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException $e) {
-
+ if (($GLOBALS['TSFE'] ?? null) instanceof TypoScriptFrontendController) {
+ return $GLOBALS['TSFE'];
}
return null;
-
}
-
}
diff --git a/Classes/Hooks/AssetRenderer.php b/Classes/Hooks/AssetRenderer.php
index c280319..96b7d60 100644
--- a/Classes/Hooks/AssetRenderer.php
+++ b/Classes/Hooks/AssetRenderer.php
@@ -1,5 +1,6 @@
render-postProcess(). Get this:
*
@@ -134,7 +134,7 @@ public function collectInlineAssets($params, TypoScriptFrontendController $front
'jsFiles' => $assetCollector->getJavaScriptFiles(),
'cssFiles' => $assetCollector->getUniqueCssFiles(),
'inlineCss' => $assetCollector->getUniqueInlineCss(),
- 'xmlFiles' => $assetCollector->getUniqueXmlFiles()
+ 'xmlFiles' => $assetCollector->getUniqueXmlFiles(),
];
$frontendController->config['b13/assetcollector'] = $cached;
}
@@ -158,8 +158,7 @@ protected function getTypoScriptFrontendController(): ?TypoScriptFrontendControl
{
if (($GLOBALS['TSFE'] ?? null) instanceof TypoScriptFrontendController) {
return $GLOBALS['TSFE'];
- } else {
- return null;
}
+ return null;
}
}
diff --git a/Classes/Listener/AfterCacheableContentIsGenerated.php b/Classes/Listener/AfterCacheableContentIsGenerated.php
new file mode 100644
index 0000000..3524af4
--- /dev/null
+++ b/Classes/Listener/AfterCacheableContentIsGenerated.php
@@ -0,0 +1,32 @@
+assetRenderer = $assetRenderer;
+ }
+
+ public function __invoke(AfterCacheableContentIsGeneratedEvent $event)
+ {
+ $frontendController = $event->getController();
+ $this->assetRenderer->collectInlineAssets([], $frontendController);
+ }
+}
diff --git a/Classes/Middleware/InlineSvgInjector.php b/Classes/Middleware/InlineSvgInjector.php
index d93344d..36da02c 100644
--- a/Classes/Middleware/InlineSvgInjector.php
+++ b/Classes/Middleware/InlineSvgInjector.php
@@ -1,5 +1,6 @@
tag.
@@ -47,7 +48,6 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
$body->write($content);
$response = $response->withBody($body);
}
-
}
return $response;
}
@@ -82,5 +82,4 @@ protected function getTypoScriptFrontendController(): ?TypoScriptFrontendControl
{
return $GLOBALS['TSFE'] ?? null;
}
-
}
diff --git a/Classes/Resource/ResourceCompressor.php b/Classes/Resource/ResourceCompressor.php
index 38bb3db..7be6119 100644
--- a/Classes/Resource/ResourceCompressor.php
+++ b/Classes/Resource/ResourceCompressor.php
@@ -1,5 +1,6 @@
compressCssString($content);
diff --git a/Classes/ViewHelpers/CssViewHelper.php b/Classes/ViewHelpers/CssViewHelper.php
index 4291553..8946ace 100644
--- a/Classes/ViewHelpers/CssViewHelper.php
+++ b/Classes/ViewHelpers/CssViewHelper.php
@@ -1,5 +1,6 @@
assetCollector = $assetCollector;
}
@@ -44,7 +39,6 @@ public function initializeArguments(): void
'external',
'boolean',
'Specifies if the given CSS file should be loaded within link tag.'
-
);
$this->registerArgument(
'media',
diff --git a/Classes/ViewHelpers/JsViewHelper.php b/Classes/ViewHelpers/JsViewHelper.php
index 214a7c0..a473647 100644
--- a/Classes/ViewHelpers/JsViewHelper.php
+++ b/Classes/ViewHelpers/JsViewHelper.php
@@ -1,5 +1,6 @@
assetCollector = $assetCollector;
}
- /**
- * @return void
- * @api
- */
public function initializeArguments(): void
{
parent::initializeArguments();
@@ -51,16 +41,12 @@ public function initializeArguments(): void
);
}
- /**
- * @return void
- */
public function render(): void
{
if (!empty($this->arguments['file'])) {
$this->assetCollector->addJavaScriptFile($this->arguments['file'], $this->arguments['additionalAttributes']);
- } else {
- // @todo
- // $this->assetCollector->addInlineJavaScript($this->renderChildren());
}
+ // @todo
+ // $this->assetCollector->addInlineJavaScript($this->renderChildren());
}
}
diff --git a/Classes/ViewHelpers/SvgViewHelper.php b/Classes/ViewHelpers/SvgViewHelper.php
index 2ce0f37..f1130c1 100644
--- a/Classes/ViewHelpers/SvgViewHelper.php
+++ b/Classes/ViewHelpers/SvgViewHelper.php
@@ -1,5 +1,6 @@
assetCollector = $assetCollector;
}
- /**
- * @return void
- * @api
- */
public function initializeArguments(): void
{
parent::initializeArguments();
@@ -59,9 +49,6 @@ public function initializeArguments(): void
);
}
- /**
- * @return String rendered tag
- */
public function render(): string
{
$file = '';
@@ -83,6 +70,5 @@ public function render(): string
$this->tag->setContent($content);
return $this->tag->render();
-
}
}
diff --git a/Configuration/RequestMiddlewares.php b/Configuration/RequestMiddlewares.php
index d93046b..dcce005 100644
--- a/Configuration/RequestMiddlewares.php
+++ b/Configuration/RequestMiddlewares.php
@@ -1,11 +1,12 @@
[
'b13/assetcollector' => [
'target' => \B13\Assetcollector\Middleware\InlineSvgInjector::class,
'after' => [
- 'typo3/cms-frontend/content-length-headers'
- ]
- ]
- ]
+ 'typo3/cms-frontend/content-length-headers',
+ ],
+ ],
+ ],
];
diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml
new file mode 100644
index 0000000..2414f95
--- /dev/null
+++ b/Configuration/Services.yaml
@@ -0,0 +1,13 @@
+services:
+ _defaults:
+ autowire: true
+ autoconfigure: true
+ public: false
+
+ B13\Assetcollector\:
+ resource: '../Classes/*'
+
+ B13\Assetcollector\Listener\AfterCacheableContentIsGenerated:
+ tags:
+ - name: event.listener
+ identifier: 'b13-assetcollector-after-cacheable-content-is-generated'
\ No newline at end of file
diff --git a/Tests/Functional/Frontend/AbstractFrontendTest.php b/Tests/Functional/Frontend/AbstractFrontendTest.php
new file mode 100644
index 0000000..f130ff9
--- /dev/null
+++ b/Tests/Functional/Frontend/AbstractFrontendTest.php
@@ -0,0 +1,33 @@
+ 'typo3conf/sites'];
+
+ protected function executeFrontendRequestWrapper(InternalRequest $request, InternalRequestContext $context = null, bool $followRedirects = false): ResponseInterface
+ {
+ if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() < 11) {
+ return $this->executeFrontendRequest($request, $context, $followRedirects);
+ }
+ return $this->executeFrontendSubRequest($request, $context, $followRedirects);
+ }
+}
diff --git a/Tests/Functional/Frontend/Fixtures/Templates/InlineCss.html b/Tests/Functional/Frontend/Fixtures/Templates/InlineCss.html
new file mode 100644
index 0000000..be3577d
--- /dev/null
+++ b/Tests/Functional/Frontend/Fixtures/Templates/InlineCss.html
@@ -0,0 +1,9 @@
+
+
+ h1 { color: red; }
+
+
diff --git a/Tests/Functional/Frontend/Fixtures/inline_css.csv b/Tests/Functional/Frontend/Fixtures/inline_css.csv
new file mode 100644
index 0000000..854fe5c
--- /dev/null
+++ b/Tests/Functional/Frontend/Fixtures/inline_css.csv
@@ -0,0 +1,10 @@
+"pages"
+,"uid","pid","title","slug"
+,1,0,"root","/"
+"sys_template"
+,"uid","pid","root","config"
+,1,1,1,"page = PAGE
+page.10 = FLUIDTEMPLATE
+page.10.templateRootPaths.10 = EXT:assetcollector/Tests/Functional/Frontend/Fixtures/Templates
+page.10.templateName = InlineCss.html
+"
diff --git a/Tests/Functional/Frontend/InlineCssTest.php b/Tests/Functional/Frontend/InlineCssTest.php
new file mode 100644
index 0000000..812ba32
--- /dev/null
+++ b/Tests/Functional/Frontend/InlineCssTest.php
@@ -0,0 +1,28 @@
+importCSVDataSet(ORIGINAL_ROOT . 'typo3conf/ext/assetcollector/Tests/Functional/Frontend/Fixtures/inline_css.csv');
+ $response = $this->executeFrontendRequestWrapper(new InternalRequest('http://localhost/'));
+ $expected = '