|
2 | 2 |
|
3 | 3 | namespace Docplanner\AssetsBundle\Service;
|
4 | 4 |
|
5 |
| -use Docplanner\AssetsBundle\IO\Asset; |
6 |
| - |
7 | 5 | class AssetsLoader
|
8 | 6 | {
|
9 |
| - |
10 |
| - /** @var AssetsPicker $assetsPicker */ |
11 |
| - private $asstsPicker; |
12 |
| - |
13 |
| - /** |
14 |
| - * @param AssetsPicker $assetsPicker |
15 |
| - */ |
16 |
| - public function __construct(AssetsPicker $assetsPicker) |
17 |
| - { |
18 |
| - $this->asstsPicker = $assetsPicker; |
19 |
| - } |
| 7 | + /** @var AssetsProvider */ |
| 8 | + private $assetsProvider; |
20 | 9 |
|
21 | 10 | /**
|
22 |
| - * @param bool|false $isInline |
23 |
| - * |
24 |
| - * @return string |
| 11 | + * @param AssetsProvider $assetsProvider |
25 | 12 | */
|
26 |
| - public function renderScript($isInline = false) |
| 13 | + public function __construct(AssetsProvider $assetsProvider) |
27 | 14 | {
|
28 |
| - $assets = $this->asstsPicker->pickScriptAssets(); |
29 |
| - $mask = $isInline ? '<script>%s</script>' : '<script src="%s"></script>'; |
30 |
| - |
31 |
| - return $this->render($mask, $assets, $isInline); |
| 15 | + $this->assetsProvider = $assetsProvider; |
32 | 16 | }
|
33 | 17 |
|
34 | 18 | /**
|
35 |
| - * @param bool|false $isInline |
| 19 | + * @param string $type |
| 20 | + * @param bool $inline |
36 | 21 | *
|
37 |
| - * @return string |
| 22 | + * @return string[] |
38 | 23 | */
|
39 |
| - public function renderStyle($isInline = false) |
| 24 | + public function assets($type, $inline = false) |
40 | 25 | {
|
41 |
| - $assets = $this->asstsPicker->pickStyleAssets(); |
42 |
| - $mask = $isInline ? '<style>%s</style>' : '<link rel="stylesheet" type="text/css" href="%s">'; |
43 |
| - |
44 |
| - return $this->render($mask, $assets, $isInline); |
45 |
| - } |
46 |
| - |
47 |
| - /** |
48 |
| - * @param String $mask |
49 |
| - * @param Asset[] $assets |
50 |
| - * @param boolean $isInline |
51 |
| - * |
52 |
| - * @return string |
53 |
| - */ |
54 |
| - private function render($mask, $assets, $isInline) |
55 |
| - { |
56 |
| - $ret = ''; |
57 |
| - |
58 |
| - if (!$isInline) |
| 26 | + $result = []; |
| 27 | + foreach ($this->assetsProvider->getAssets($type) as $assetName => $asset) |
59 | 28 | {
|
60 |
| - foreach ($assets as $asset) |
| 29 | + if ($inline !== $asset->isInline()) |
61 | 30 | {
|
62 |
| - $ret .= sprintf($mask, $asset->getUrl()); |
63 |
| - } |
64 |
| - } |
65 |
| - else |
66 |
| - { |
67 |
| - foreach ($assets as $asset) |
68 |
| - { |
69 |
| - if ($asset->isInline()) |
70 |
| - { |
71 |
| - $ret .= file_get_contents($asset->getPath() ?: $asset->getUrl()); |
72 |
| - } |
| 31 | + continue; |
73 | 32 | }
|
74 | 33 |
|
75 |
| - if ($ret) |
76 |
| - { |
77 |
| - $ret = sprintf($mask, $ret); |
78 |
| - } |
| 34 | + $result[$assetName] = $inline ? file_get_contents($asset->getPath()) : $asset->getUrl(); |
79 | 35 | }
|
80 | 36 |
|
81 |
| - return $ret; |
| 37 | + return $result; |
82 | 38 | }
|
83 | 39 | }
|
0 commit comments