From c40af4c188b91763b105a82b4458f5696de2e1cf Mon Sep 17 00:00:00 2001 From: David Molineus Date: Fri, 18 Nov 2016 14:12:06 +0100 Subject: [PATCH 1/2] Fix cache issue by caching TL_CSS and TL_JAVASCRIPT when running it the first time. --- src/Bit3/Contao/ThemePlus/ThemePlus.php | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Bit3/Contao/ThemePlus/ThemePlus.php b/src/Bit3/Contao/ThemePlus/ThemePlus.php index 177099c..e18c552 100644 --- a/src/Bit3/Contao/ThemePlus/ThemePlus.php +++ b/src/Bit3/Contao/ThemePlus/ThemePlus.php @@ -41,6 +41,15 @@ class ThemePlus */ private static $instance = null; + /** + * @var array + */ + private $contaoCssFiles = array(); + + /** + * @var array + */ + private $contaoJavascriptFiles = array(); /** * Get the singleton instance. @@ -950,6 +959,17 @@ protected function parseStylesheets(\LayoutModel $layout, array &$sr) $GLOBALS['TL_FRAMEWORK_CSS'] = array(); // Add the internal style sheets + if (!empty($this->contaoCssFiles) && is_array($this->contaoCssFiles)) { + $this->addAssetsToCollectionFromArray( + $this->contaoCssFiles, + 'css', + true, + $collection, + $stylesheets, + $defaultFilters + ); + } + if (is_array($GLOBALS['TL_CSS']) && !empty($GLOBALS['TL_CSS'])) { $this->addAssetsToCollectionFromArray( $GLOBALS['TL_CSS'], @@ -960,6 +980,7 @@ protected function parseStylesheets(\LayoutModel $layout, array &$sr) $defaultFilters ); } + $this->contaoCssFiles = $GLOBALS['TL_CSS']; $GLOBALS['TL_CSS'] = array(); // Add the user style sheets @@ -1140,6 +1161,18 @@ protected function parseJavaScripts(\LayoutModel $layout, array &$sr) $collection = new AssetCollection(array(), array(), TL_ROOT); // Add the internal scripts + if (!empty($this->contaoJavascriptFiles) && is_array($this->contaoJavascriptFiles)) { + $this->addAssetsToCollectionFromArray( + $this->contaoJavascriptFiles, + 'js', + false, + $collection, + $javascripts, + $defaultFilters, + $layout->theme_plus_default_javascript_position + ); + } + if (is_array($GLOBALS['TL_JAVASCRIPT']) && !empty($GLOBALS['TL_JAVASCRIPT'])) { $this->addAssetsToCollectionFromArray( $GLOBALS['TL_JAVASCRIPT'], @@ -1151,6 +1184,7 @@ protected function parseJavaScripts(\LayoutModel $layout, array &$sr) $layout->theme_plus_default_javascript_position ); } + $this->contaoJavascriptFiles = $GLOBALS['TL_JAVASCRIPT']; $GLOBALS['TL_JAVASCRIPT'] = array(); // Add layout files From cd738c4deca41aabd6647488b0e9f4f31e7c5a7d Mon Sep 17 00:00:00 2001 From: David Molineus Date: Fri, 18 Nov 2016 15:23:13 +0100 Subject: [PATCH 2/2] Improve assets caching and cache tl_user_css as well. --- src/Bit3/Contao/ThemePlus/ThemePlus.php | 31 +++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Bit3/Contao/ThemePlus/ThemePlus.php b/src/Bit3/Contao/ThemePlus/ThemePlus.php index e18c552..1b9acda 100644 --- a/src/Bit3/Contao/ThemePlus/ThemePlus.php +++ b/src/Bit3/Contao/ThemePlus/ThemePlus.php @@ -46,6 +46,11 @@ class ThemePlus */ private $contaoCssFiles = array(); + /** + * @var array + */ + private $contaoUserCssFiles = array(); + /** * @var array */ @@ -970,7 +975,7 @@ protected function parseStylesheets(\LayoutModel $layout, array &$sr) ); } - if (is_array($GLOBALS['TL_CSS']) && !empty($GLOBALS['TL_CSS'])) { + if (!empty($GLOBALS['TL_CSS']) && is_array($GLOBALS['TL_CSS'])) { $this->addAssetsToCollectionFromArray( $GLOBALS['TL_CSS'], 'css', @@ -979,12 +984,24 @@ protected function parseStylesheets(\LayoutModel $layout, array &$sr) $stylesheets, $defaultFilters ); + + $this->contaoCssFiles = array_merge($this->contaoCssFiles, $GLOBALS['TL_CSS']); } - $this->contaoCssFiles = $GLOBALS['TL_CSS']; $GLOBALS['TL_CSS'] = array(); // Add the user style sheets - if (is_array($GLOBALS['TL_USER_CSS']) && !empty($GLOBALS['TL_USER_CSS'])) { + if (!empty($this->contaoUserCssFiles)) { + $this->addAssetsToCollectionFromArray( + $this->contaoUserCssFiles, + 'css', + true, + $collection, + $stylesheets, + $defaultFilters + ); + } + + if (!empty($GLOBALS['TL_USER_CSS']) && is_array($GLOBALS['TL_USER_CSS'])) { $this->addAssetsToCollectionFromArray( array_unique($GLOBALS['TL_USER_CSS']), 'css', @@ -993,6 +1010,8 @@ protected function parseStylesheets(\LayoutModel $layout, array &$sr) $stylesheets, $defaultFilters ); + + $this->contaoUserCssFiles = array_merge($this->contaoUserCssFiles, $GLOBALS['TL_USER_CSS']); } $GLOBALS['TL_USER_CSS'] = array(); @@ -1173,7 +1192,7 @@ protected function parseJavaScripts(\LayoutModel $layout, array &$sr) ); } - if (is_array($GLOBALS['TL_JAVASCRIPT']) && !empty($GLOBALS['TL_JAVASCRIPT'])) { + if (!empty($GLOBALS['TL_JAVASCRIPT']) && is_array($GLOBALS['TL_JAVASCRIPT'])) { $this->addAssetsToCollectionFromArray( $GLOBALS['TL_JAVASCRIPT'], 'js', @@ -1183,8 +1202,10 @@ protected function parseJavaScripts(\LayoutModel $layout, array &$sr) $defaultFilters, $layout->theme_plus_default_javascript_position ); + + $this->contaoJavascriptFiles = array_merge($this->contaoJavascriptFiles, $GLOBALS['TL_JAVASCRIPT']); } - $this->contaoJavascriptFiles = $GLOBALS['TL_JAVASCRIPT']; + $GLOBALS['TL_JAVASCRIPT'] = array(); // Add layout files