Skip to content

Commit 6c3383a

Browse files
ff1601comserver1601com
authored andcommitted
rewrite bundle to use abstractLoader as base class
1 parent 2b0a588 commit 6c3383a

File tree

11 files changed

+129
-110
lines changed

11 files changed

+129
-110
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"php": "^5.6 || ^7.0",
2121
"contao/core-bundle": "4.*",
2222
"menatwork/contao-multicolumnwizard":"^3.0",
23-
"matthiasmullie/minify":"^1.3"
23+
"matthiasmullie/minify":"^1.3",
24+
"agentur1601com/core-bundle": "*"
2425
},
2526
"conflict": {
2627
"contao/manager-plugin": "<2.0 || >=3.0"

src/ContaoManager/Plugin.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
1010
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
1111
use Agentur1601com\FileLazyLoader\FileLazyLoaderBundle;
12+
use Agentur1601com\CoreBundle\Agentur1601comCoreBundle;
1213

1314
class Plugin implements BundlePluginInterface
1415
{
1516
public function getBundles(ParserInterface $parser)
1617
{
1718
return [
1819
BundleConfig::create(FileLazyLoaderBundle::class)
19-
->setLoadAfter([ContaoCoreBundle::class]),
20+
->setLoadAfter([Agentur1601comCoreBundle::class]),
2021
];
2122
}
2223
}

src/EventListener/Loader/AbstractLoader.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,24 @@
22

33
namespace Agentur1601com\FileLazyLoader\EventListener\Loader;
44

5+
use Contao\DataContainer;
6+
57
abstract class AbstractLoader
68
{
79

10+
abstract protected function _wizardLoadFileList($filesActive, DataContainer $dc): string;
11+
12+
abstract protected function _generatePageCallback($page, $layout, $pageRegular): bool;
13+
14+
final public function wizardLoadFileList($filesActive, DataContainer $dc): string
15+
{
16+
return $this->_wizardLoadFileList($filesActive, $dc);
17+
}
818

19+
final public function generatePageCallback($page, $layout, $pageRegular)
20+
{
21+
if (!$this->_generatePageCallback($page, $layout, $pageRegular)) {
22+
trigger_error('Failed to execute callback for generatePage', E_USER_WARNING);
23+
}
24+
}
925
}

src/EventListener/Loader/JsLoader.php

Lines changed: 39 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
namespace Agentur1601com\FileLazyLoader\EventListener\Loader;
4+
45
use Contao\LayoutModel;
56
use MatthiasMullie\Minify;
67
use Contao\Combiner;
@@ -16,26 +17,22 @@ class JsLoader
1617
*/
1718
public function returnMultiColumnWizardArray($foundedFiles, $savedFiles, bool $removeExternFiles = false)
1819
{
19-
if(!is_array($savedFiles)) {
20+
if (!is_array($savedFiles)) {
2021
$savedFiles = [];
2122
}
2223

2324
$savedFiles = array_reverse($savedFiles);
2425

2526
$returnArray = [];
2627

27-
foreach ($savedFiles as $savedFile)
28-
{
29-
if ($savedFile['js_files_extFile'] === "1" && !$removeExternFiles)
30-
{
28+
foreach ($savedFiles as $savedFile) {
29+
if ($savedFile['js_files_extFile'] === "1" && !$removeExternFiles) {
3130
array_unshift($returnArray, $savedFile);
3231
continue;
3332
}
3433

35-
foreach ($foundedFiles as $pathLoadedKey => $pathLoadedFile)
36-
{
37-
if(str_replace(TL_ROOT,"", $pathLoadedFile) === $savedFile['js_files_path'])
38-
{
34+
foreach ($foundedFiles as $pathLoadedKey => $pathLoadedFile) {
35+
if (str_replace(TL_ROOT, "", $pathLoadedFile) === $savedFile['js_files_path']) {
3936
$arrayValue = $this->setWizardArray(
4037
$savedFile['select'],
4138
$savedFile['js_files_path'],
@@ -44,8 +41,7 @@ public function returnMultiColumnWizardArray($foundedFiles, $savedFiles, bool $r
4441
$savedFile['js_minimize']
4542
);
4643

47-
if($savedFile['select'])
48-
{
44+
if ($savedFile['select']) {
4945
array_unshift($returnArray, $arrayValue);
5046
unset($foundedFiles[$pathLoadedKey]);
5147
}
@@ -55,9 +51,8 @@ public function returnMultiColumnWizardArray($foundedFiles, $savedFiles, bool $r
5551
}
5652
}
5753

58-
foreach ($foundedFiles as $pathLoadedFile)
59-
{
60-
$tmpPath = str_replace(TL_ROOT,"", $pathLoadedFile);
54+
foreach ($foundedFiles as $pathLoadedFile) {
55+
$tmpPath = str_replace(TL_ROOT, "", $pathLoadedFile);
6156
$returnArray[] = $this->setWizardArray(
6257
"",
6358
$tmpPath
@@ -74,10 +69,8 @@ public function returnMultiColumnWizardArray($foundedFiles, $savedFiles, bool $r
7469
*/
7570
public function removeExtFiles($filesArray)
7671
{
77-
foreach ($filesArray as &$file)
78-
{
79-
if ($file['js_files_extFile'] === '1')
80-
{
72+
foreach ($filesArray as &$file) {
73+
if ($file['js_files_extFile'] === '1') {
8174
unset($file);
8275
}
8376
}
@@ -106,10 +99,8 @@ public function minimizeFile($sourceFile, $destinationFile)
10699
*/
107100
public function loadJs($objPage, $objLayout, $objPageRegular)
108101
{
109-
if(isset($objLayout->fileLazyLoaderJsFiles) && is_array(($jsFilesArray = unserialize($objLayout->fileLazyLoaderJsFiles))))
110-
{
111-
if ($objLayout->fileLazyLoaderModifyExtJs === '1')
112-
{
102+
if (isset($objLayout->fileLazyLoaderJsFiles) && is_array(($jsFilesArray = unserialize($objLayout->fileLazyLoaderJsFiles)))) {
103+
if ($objLayout->fileLazyLoaderModifyExtJs === '1') {
113104
#require(TL_ROOT . '/system/initialize.php');
114105

115106
$jsFilesArray = $this->mergeWizardArrByGlobalScriptArr(
@@ -127,25 +118,21 @@ public function loadJs($objPage, $objLayout, $objPageRegular)
127118
$GLOBALS['TL_JAVASCRIPT'] = [];
128119
}
129120

130-
foreach ($jsFilesArray as $jsFile)
131-
{
121+
foreach ($jsFilesArray as $jsFile) {
132122
$link = $this->removeTrailingSlash($jsFile["js_files_path"]);
133123

134-
if (!$jsFile["select"] || !file_exists(TL_ROOT . $link))
135-
{
124+
if (!$jsFile["select"] || !file_exists(TL_ROOT . $link)) {
136125
continue;
137126
}
138127

139-
if ($jsFile['js_minimize'] && $jsFile['js_files_extFile'] !== '1')
140-
{
128+
if ($jsFile['js_minimize'] && $jsFile['js_files_extFile'] !== '1') {
141129
$Combinder = new Combiner();
142130
$Combinder->add($jsFile["js_files_path"]);
143131
$link = $Combinder->getCombinedFile();
144-
$this->minimizeFile(TL_ROOT . $jsFile["js_files_path"],TL_ROOT . "/" . $link);
132+
$this->minimizeFile(TL_ROOT . $jsFile["js_files_path"], TL_ROOT . "/" . $link);
145133
}
146134

147-
switch ($jsFile["js_param"])
148-
{
135+
switch ($jsFile["js_param"]) {
149136
case 'footer':
150137
$GLOBALS['TL_BODY'][] = "<script src='" . $link . "'>";
151138
break;
@@ -154,15 +141,15 @@ public function loadJs($objPage, $objLayout, $objPageRegular)
154141
$GLOBALS['TL_JAVASCRIPT'][] = $link;
155142
break;
156143
case 'preload_push':
157-
header("Link: <" . $link . ">; rel=preload; as=script",false);
144+
header("Link: <" . $link . ">; rel=preload; as=script", false);
158145
$GLOBALS['TL_JAVASCRIPT'][] = $link;
159146
break;
160147
case 'defer':
161-
$GLOBALS['TL_HEAD'][] = "<script src='".$link."' defer></script>";
148+
$GLOBALS['TL_HEAD'][] = "<script src='" . $link . "' defer></script>";
162149
break;
163150
default:
164151
$jsFile["js_param"] = empty($jsFile["js_param"]) ? 'static' : $jsFile["js_param"];
165-
$GLOBALS['TL_JAVASCRIPT'][] = $link."|".$jsFile["js_param"];
152+
$GLOBALS['TL_JAVASCRIPT'][] = $link . "|" . $jsFile["js_param"];
166153
}
167154
}
168155
}
@@ -174,21 +161,16 @@ public function loadJs($objPage, $objLayout, $objPageRegular)
174161
*/
175162
private function parseGlobalJsPaths(array $globalJsPaths = [])
176163
{
177-
if (!is_array($globalJsPaths))
178-
{
164+
if (!is_array($globalJsPaths)) {
179165
return [];
180166
}
181167

182168
$returnArr = [];
183169

184-
foreach ($globalJsPaths as $key => $pathValue)
185-
{
186-
if (is_string($key))
187-
{
170+
foreach ($globalJsPaths as $key => $pathValue) {
171+
if (is_string($key)) {
188172
$returnArr[$key] = explode('|', $pathValue);
189-
}
190-
else
191-
{
173+
} else {
192174
$returnArr[] = explode('|', $pathValue);
193175
}
194176
}
@@ -215,12 +197,12 @@ private function setWizardArray(
215197
)
216198
{
217199
return [
218-
"select" => $select,
219-
"js_files_path" => $js_files_path,
200+
"select" => $select,
201+
"js_files_path" => $js_files_path,
220202
"js_files_path_min" => $js_files_path_min,
221-
"js_param" => $js_param,
222-
"js_minimize" => $js_minimize,
223-
"js_files_extFile" => $js_files_extFile,
203+
"js_param" => $js_param,
204+
"js_minimize" => $js_minimize,
205+
"js_files_extFile" => $js_files_extFile,
224206
];
225207
}
226208

@@ -231,28 +213,22 @@ private function setWizardArray(
231213
*/
232214
private function mergeWizardArrByGlobalScriptArr(array $wizardArray, array $mergeArray)
233215
{
234-
foreach ($wizardArray as &$wizardElem)
235-
{
236-
foreach ($mergeArray as $key => &$mergeElem)
237-
{
238-
if ($wizardElem['js_files_path'] === $mergeElem[0])
239-
{
216+
foreach ($wizardArray as &$wizardElem) {
217+
foreach ($mergeArray as $key => &$mergeElem) {
218+
if ($wizardElem['js_files_path'] === $mergeElem[0]) {
240219
$wizardElem['verified'] = 1;
241220
unset($mergeArray[$key]);
242221
}
243222
}
244223

245-
if ($wizardElem['js_files_extFile'] === '1' && $wizardElem['verified'] !== '1')
246-
{
224+
if ($wizardElem['js_files_extFile'] === '1' && $wizardElem['verified'] !== '1') {
247225
unset($wizardElem);
248-
}
249-
else {
226+
} else {
250227
unset($wizardElem['verified']);
251228
}
252229
}
253230

254-
foreach ($mergeArray as $key => $mergeElem)
255-
{
231+
foreach ($mergeArray as $key => $mergeElem) {
256232
$wizardArrayElem = $this->setWizardArray(
257233
'1',
258234
$mergeElem[0],
@@ -262,12 +238,9 @@ private function mergeWizardArrByGlobalScriptArr(array $wizardArray, array $merg
262238
'1'
263239
);
264240

265-
if (is_string($key) && !empty($key))
266-
{
241+
if (is_string($key) && !empty($key)) {
267242
$wizardArray[$key] = $wizardArrayElem;
268-
}
269-
else
270-
{
243+
} else {
271244
array_unshift($wizardArray, $wizardArrayElem);
272245
}
273246
}
@@ -281,7 +254,7 @@ private function mergeWizardArrByGlobalScriptArr(array $wizardArray, array $merg
281254
*/
282255
private function removeTrailingSlash(string $path)
283256
{
284-
return '/' . ltrim(rtrim($path,'/'), '/');
257+
return '/' . ltrim(rtrim($path, '/'), '/');
285258
}
286259

287260
}

src/EventListener/Loader/StyleLoader.php

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
namespace Agentur1601com\FileLazyLoader\EventListener\Loader;
44

55
use MatthiasMullie\Minify\CSS;
6+
use Contao\DataContainer;
7+
use Contao\FilesModel;
8+
use Agentur1601com\FileLazyLoader\Service\Helper;
69

710
class StyleLoader extends AbstractLoader
811
{
@@ -15,21 +18,20 @@ class StyleLoader extends AbstractLoader
1518
'delay' => '',
1619
];
1720

18-
public function wizardLoadFileList($filesActive, \DataContainer $dc)
21+
protected function _wizardLoadFileList($filesActive, DataContainer $dc): string
1922
{
2023
if (TL_MODE == 'BE') {
21-
$GLOBALS['TL_JAVASCRIPT'][] = 'bundles/fileLazyLoader/lazy-style-loader.js|static';
24+
$GLOBALS['TL_JAVASCRIPT'][] = 'bundles/filelazyloader/js/lazy-style-loader.js|static';
2225
}
2326

2427
if(!$filesActive) {
2528
return '';
2629
}
2730

28-
//todo modify external js
29-
30-
$filesAvailable = $this->_getFilesAvailable($dc->activeRecord->FileLazyLoaderStyleFiles);
31+
$filesAvailable = $this->_getFilesAvailable($dc->activeRecord->fileLazyLoaderStylePath);
3132

3233
$result = [];
34+
3335
foreach (unserialize($filesActive) as $fileActiveSingle) {
3436
if (!isset($filesAvailable[$fileActiveSingle['style_files_path']])) {
3537
continue;
@@ -40,20 +42,22 @@ public function wizardLoadFileList($filesActive, \DataContainer $dc)
4042
];
4143
unset($filesAvailable[$fileActiveSingle['style_files_path']]);
4244
}
43-
//reverse so order is as desired
44-
foreach (array_reverse($filesAvailable) as $fileAvailablePath => $dummy) {
45+
46+
foreach (array_reverse($filesAvailable) as $fileAvailablePath => $bool) {
4547
$result[] = [
4648
'style_files_path' => $fileAvailablePath,
4749
'style_param' => '',
4850
];
4951
}
52+
5053
return serialize($result);
5154
}
5255

53-
public function generatePageCallback($page, $layout, $pageRegular)
56+
protected function _generatePageCallback($page, $layout, $pageRegular): bool
5457
{
5558
if (!$styleFiles = unserialize($layout->fileLazyLoaderStyleFilesLoad)) {
56-
return;
59+
//nothing to do
60+
return true;
5761
}
5862

5963
foreach ($styleFiles as $styleFileSingle) {
@@ -63,8 +67,9 @@ public function generatePageCallback($page, $layout, $pageRegular)
6367
$minimiser = new CSS();
6468
$minimiser->addFile($styleFileSingle['style_file_path']);
6569
$minimiser->execute('/web/assets/css/');
66-
6770
}
71+
72+
return true;
6873
}
6974

7075
private function _getFilesAvailable($fileTree)
@@ -73,10 +78,21 @@ private function _getFilesAvailable($fileTree)
7378
return [];
7479
};
7580

76-
$result = [];
81+
$paths = [];
7782
foreach (unserialize($fileTree) as $filePath) {
78-
$result[\FilesModel::findByPk($filePath)->path] = true;
83+
$paths[] = FilesModel::findByPk($filePath)->path;
84+
}
85+
86+
$helper = new Helper();
87+
$result = [];
88+
foreach ($paths as $path)
89+
{
90+
// Array-Aufbau zur Überprüfung bereits vorhandener Einträge
91+
foreach(str_replace(TL_ROOT, '', $helper->searchDir(TL_ROOT . "/" . $helper::safePath($path), ['css', 'less', 'scss'])) as $filePath) {
92+
$result[$filePath] = true;
93+
}
7994
}
95+
8096
return $result;
8197
}
8298
}

0 commit comments

Comments
 (0)