11<?php
22
33use Kirby \Cms \Url ;
4+ use Kirby \Data \Json ;
5+ use Kirby \Toolkit \A ;
6+ use Kirby \Toolkit \Str ;
7+ use Kirby \Filesystem \F ;
8+ use Kirby \Cms \App as Kirby ;
49
510function mixManifest (Kirby $ kirby ): array
611{
7- $ manifestFile = $ kirby ->root ('index ' ) . DS . option ('mrfd.mix.publicpath ' ) . DS . option ('mrfd.mix.manifest ' );
12+ $ manifestFile = $ kirby ->root ('index ' ) . ' / ' . option ('mrfd.mix.publicPath ' ) . ' / ' . option ('mrfd.mix.manifest ' );
813 $ manifest = [];
914
10- if (file_exists ($ manifestFile )) {
11- $ manifest = json_decode ( file_get_contents ( $ manifestFile , true ), true );
15+ if ($ file = F:: read ($ manifestFile )) {
16+ $ manifest = Json:: decode ( $ file );
1217 }
1318
1419 return $ manifest ;
1520}
1621
1722function getFromManifest (Kirby $ kirby , string $ url ): string
1823{
19- $ publicPath = option ('mrfd.mix.publicpath ' );
20- $ url = str_replace ($ publicPath , '' , Url::path ($ url , false ));
24+ $ publicPath = option ('mrfd.mix.publicPath ' );
2125 $ manifest = mixManifest ($ kirby );
2226
23- return DS . $ publicPath . ($ manifest [$ url ] ?? $ url );
27+ $ file = Str::replace (Url::path ($ url , false ), $ publicPath , '' );
28+ $ fileVersion = A::get ($ manifest , $ file , false );
29+
30+ if ($ fileVersion === false ) {
31+ return $ url ;
32+ }
33+
34+ return '/ ' . $ publicPath . $ fileVersion ;
2435}
2536
2637function isInternalUrl (Kirby $ kirby , string $ url ): bool
2738{
2839 $ url = Url::to ($ url );
2940
30- return strpos ($ url , $ kirby ->site ()->url ()) !== false || strpos ($ url , "/ " ) === '0 ' ;
41+ return \ strpos ($ url , $ kirby ->site ()->url ()) !== false || \ strpos ($ url , "/ " ) === '0 ' ;
3142}
3243
3344
3445Kirby::plugin ('mrfd/mix ' , [
3546 'components ' => [
3647 'css ' => function (Kirby $ kirby , string $ url , $ options = null ): string {
37- if (! option ('mrfd.mix.enable ' )) {
48+ if (option ('mrfd.mix.enable ' ) === false ) {
3849 return $ url ;
3950 }
4051
41- if (! isInternalUrl ($ kirby , $ url )) {
52+ if (isInternalUrl ($ kirby , $ url ) === false ) {
4253 return $ url ;
4354 }
4455
4556 return getFromManifest ($ kirby , $ url );
4657 },
4758 'js ' => function (Kirby $ kirby , string $ url , $ options = null ): string {
48- if (! option ('mrfd.mix.enable ' )) {
59+ if (option ('mrfd.mix.enable ' ) === false ) {
4960 return $ url ;
5061 }
5162
52- if (! isInternalUrl ($ kirby , $ url )) {
63+ if (isInternalUrl ($ kirby , $ url ) === false ) {
5364 return $ url ;
5465 }
5566
@@ -59,6 +70,6 @@ function isInternalUrl(Kirby $kirby, string $url): bool
5970 'options ' => [
6071 'enable ' => true ,
6172 'manifest ' => 'mix-manifest.json ' ,
62- 'publicpath ' => 'assets '
73+ 'publicPath ' => 'assets '
6374 ]
6475]);
0 commit comments