mirror of
https://github.com/flarum/core.git
synced 2025-08-02 06:30:53 +02:00
wip
This commit is contained in:
@@ -19,6 +19,9 @@ use Flarum\Foundation\ErrorHandling\WhoopsFormatter;
|
|||||||
use Flarum\Foundation\Event\ClearingCache;
|
use Flarum\Foundation\Event\ClearingCache;
|
||||||
use Flarum\Frontend\AddLocaleAssets;
|
use Flarum\Frontend\AddLocaleAssets;
|
||||||
use Flarum\Frontend\AddTranslations;
|
use Flarum\Frontend\AddTranslations;
|
||||||
|
use Flarum\Frontend\Asset\Css;
|
||||||
|
use Flarum\Frontend\Asset\Js;
|
||||||
|
use Flarum\Frontend\Asset\Type;
|
||||||
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
||||||
use Flarum\Frontend\RecompileFrontendAssets;
|
use Flarum\Frontend\RecompileFrontendAssets;
|
||||||
use Flarum\Http\Middleware as HttpMiddleware;
|
use Flarum\Http\Middleware as HttpMiddleware;
|
||||||
@@ -94,16 +97,41 @@ class AdminServiceProvider extends AbstractServiceProvider
|
|||||||
/** @var \Flarum\Frontend\Assets $assets */
|
/** @var \Flarum\Frontend\Assets $assets */
|
||||||
$assets = $container->make('flarum.assets.factory')('admin');
|
$assets = $container->make('flarum.assets.factory')('admin');
|
||||||
|
|
||||||
$assets->js(function (SourceCollector $sources) {
|
$assets->addAsset((new Js('admin.js'))->addSource(function (SourceCollector $sources) {
|
||||||
$sources->addFile(__DIR__.'/../../js/dist/admin.js');
|
$sources->addFile(__DIR__.'/../../js/dist/admin.js');
|
||||||
});
|
}));
|
||||||
|
|
||||||
$assets->css(function (SourceCollector $sources) {
|
$assets->getAssets()
|
||||||
$sources->addFile(__DIR__.'/../../less/admin.less');
|
->ofType('css')
|
||||||
});
|
->first()
|
||||||
|
->addSource(function (SourceCollector $sources) {
|
||||||
|
$sources->addFile(__DIR__ . '/../../less/admin.less');
|
||||||
|
});
|
||||||
|
|
||||||
$container->make(AddTranslations::class)->forFrontend('admin')->to($assets);
|
/** @var LocaleManager $locales */
|
||||||
$container->make(AddLocaleAssets::class)->to($assets);
|
$locales = $container[LocaleManager::class];
|
||||||
|
|
||||||
|
/** @var AddLocaleAssets $addLocaleAssets */
|
||||||
|
$addLocaleAssets = $container->make(AddLocaleAssets::class);
|
||||||
|
|
||||||
|
foreach ($locales->getLocales() as $locale => $_) {
|
||||||
|
$localeJs = new Js("admin-$locale.js", $locale);
|
||||||
|
$localeJs
|
||||||
|
->addSource([$container->make(AddTranslations::class)->forFrontend('admin'), 'getSources'])
|
||||||
|
->addSource(function (SourceCollector $collector) use ($addLocaleAssets, $locale) {
|
||||||
|
$addLocaleAssets->getLocaleJs($collector, $locale);
|
||||||
|
});
|
||||||
|
|
||||||
|
$assets->addAsset($localeJs);
|
||||||
|
|
||||||
|
$localeCss = new Css("admin-$locale.css", $locale);
|
||||||
|
$localeCss
|
||||||
|
->addSource(function (SourceCollector $collector) use ($addLocaleAssets, $locale) {
|
||||||
|
$addLocaleAssets->getLocaleCss($collector, $locale);
|
||||||
|
});
|
||||||
|
|
||||||
|
$assets->addAsset($localeCss);
|
||||||
|
}
|
||||||
|
|
||||||
return $assets;
|
return $assets;
|
||||||
});
|
});
|
||||||
|
@@ -189,7 +189,7 @@ class Frontend implements ExtenderInterface
|
|||||||
|
|
||||||
$container->resolving($abstract, function (Assets $assets) use ($moduleName) {
|
$container->resolving($abstract, function (Assets $assets) use ($moduleName) {
|
||||||
if ($this->js) {
|
if ($this->js) {
|
||||||
$assets->js(function (SourceCollector $sources) use ($moduleName) {
|
$assets->getAssets()->ofType('js')->first()->addSource(function (SourceCollector $sources) use ($moduleName) {
|
||||||
$sources->addString(function () {
|
$sources->addString(function () {
|
||||||
return 'var module={};';
|
return 'var module={};';
|
||||||
});
|
});
|
||||||
@@ -201,7 +201,7 @@ class Frontend implements ExtenderInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->css) {
|
if ($this->css) {
|
||||||
$assets->css(function (SourceCollector $sources) use ($moduleName) {
|
$assets->getAssets()->ofType('css')->first()->addSource(function (SourceCollector $sources) use ($moduleName) {
|
||||||
foreach ($this->css as $path) {
|
foreach ($this->css as $path) {
|
||||||
$sources->addFile($path, $moduleName);
|
$sources->addFile($path, $moduleName);
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,9 @@ use Flarum\Foundation\ErrorHandling\WhoopsFormatter;
|
|||||||
use Flarum\Foundation\Event\ClearingCache;
|
use Flarum\Foundation\Event\ClearingCache;
|
||||||
use Flarum\Frontend\AddLocaleAssets;
|
use Flarum\Frontend\AddLocaleAssets;
|
||||||
use Flarum\Frontend\AddTranslations;
|
use Flarum\Frontend\AddTranslations;
|
||||||
|
use Flarum\Frontend\Asset\Css;
|
||||||
|
use Flarum\Frontend\Asset\Js;
|
||||||
|
use Flarum\Frontend\Asset\Type;
|
||||||
use Flarum\Frontend\Assets;
|
use Flarum\Frontend\Assets;
|
||||||
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
||||||
use Flarum\Frontend\RecompileFrontendAssets;
|
use Flarum\Frontend\RecompileFrontendAssets;
|
||||||
@@ -106,22 +109,44 @@ class ForumServiceProvider extends AbstractServiceProvider
|
|||||||
/** @var Assets $assets */
|
/** @var Assets $assets */
|
||||||
$assets = $container->make('flarum.assets.factory')('forum');
|
$assets = $container->make('flarum.assets.factory')('forum');
|
||||||
|
|
||||||
$assets->js(function (SourceCollector $sources) use ($container) {
|
$assets->addAsset((new Js('forum.js'))->addSource(function (SourceCollector $sources) use ($container) {
|
||||||
$sources->addFile(__DIR__.'/../../js/dist/forum.js');
|
$sources->addFile(__DIR__.'/../../js/dist/forum.js');
|
||||||
$sources->addString(function () use ($container) {
|
$sources->addString(function () use ($container) {
|
||||||
return $container->make(Formatter::class)->getJs();
|
return $container->make(Formatter::class)->getJs();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
$assets->css(function (SourceCollector $sources) use ($container) {
|
$assets->getAssets()->ofType('css')->first()->addSource(function (SourceCollector $sources) use ($container) {
|
||||||
$sources->addFile(__DIR__.'/../../less/forum.less');
|
$sources->addFile(__DIR__.'/../../less/forum.less');
|
||||||
$sources->addString(function () use ($container) {
|
$sources->addString(function () use ($container) {
|
||||||
return $container->make(SettingsRepositoryInterface::class)->get('custom_less', '');
|
return $container->make(SettingsRepositoryInterface::class)->get('custom_less', '');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$container->make(AddTranslations::class)->forFrontend('forum')->to($assets);
|
/** @var LocaleManager $locales */
|
||||||
$container->make(AddLocaleAssets::class)->to($assets);
|
$locales = $container[LocaleManager::class];
|
||||||
|
|
||||||
|
/** @var AddLocaleAssets $addLocaleAssets */
|
||||||
|
$addLocaleAssets = $container->make(AddLocaleAssets::class);
|
||||||
|
|
||||||
|
foreach ($locales->getLocales() as $locale => $_) {
|
||||||
|
$localeJs = new Js("forum-$locale.js", $locale);
|
||||||
|
$localeJs
|
||||||
|
->addSource([$container->make(AddTranslations::class)->forFrontend('forum'), 'getSources'])
|
||||||
|
->addSource(function (SourceCollector $collector) use ($addLocaleAssets, $locale) {
|
||||||
|
$addLocaleAssets->getLocaleJs($collector, $locale);
|
||||||
|
});
|
||||||
|
|
||||||
|
$assets->addAsset($localeJs);
|
||||||
|
|
||||||
|
$localeCss = new Css("forum-$locale.css", $locale);
|
||||||
|
$localeCss
|
||||||
|
->addSource(function (SourceCollector $collector) use ($addLocaleAssets, $locale) {
|
||||||
|
$addLocaleAssets->getLocaleCss($collector, $locale);
|
||||||
|
});
|
||||||
|
|
||||||
|
$assets->addAsset($localeCss);
|
||||||
|
}
|
||||||
|
|
||||||
return $assets;
|
return $assets;
|
||||||
});
|
});
|
||||||
|
@@ -32,16 +32,20 @@ class AddLocaleAssets
|
|||||||
|
|
||||||
public function to(Assets $assets)
|
public function to(Assets $assets)
|
||||||
{
|
{
|
||||||
$assets->localeJs(function (SourceCollector $sources, string $locale) {
|
$assets->localeJs([$this, 'getLocaleJs']);
|
||||||
foreach ($this->locales->getJsFiles($locale) as $file) {
|
|
||||||
$sources->addFile($file);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$assets->localeCss(function (SourceCollector $sources, string $locale) {
|
$assets->localeCss([$this, 'getLocaleCss']);
|
||||||
foreach ($this->locales->getCssFiles($locale) as $file) {
|
}
|
||||||
$sources->addFile($file);
|
|
||||||
}
|
public function getLocaleJs(SourceCollector $sources, string $locale) {
|
||||||
});
|
foreach ($this->locales->getJsFiles($locale) as $file) {
|
||||||
|
$sources->addFile($file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLocaleCss(SourceCollector $sources, string $locale) {
|
||||||
|
foreach ($this->locales->getCssFiles($locale) as $file) {
|
||||||
|
$sources->addFile($file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -43,15 +43,17 @@ class AddTranslations
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getSources(SourceCollector $sources, string $locale) {
|
||||||
|
$sources->addString(function () use ($locale) {
|
||||||
|
$translations = $this->getTranslations($locale);
|
||||||
|
|
||||||
|
return 'flarum.core.app.translator.addTranslations('.json_encode($translations).')';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public function to(Assets $assets)
|
public function to(Assets $assets)
|
||||||
{
|
{
|
||||||
$assets->localeJs(function (SourceCollector $sources, string $locale) {
|
$assets->localeJs([$this, 'getSources']);
|
||||||
$sources->addString(function () use ($locale) {
|
|
||||||
$translations = $this->getTranslations($locale);
|
|
||||||
|
|
||||||
return 'flarum.core.app.translator.addTranslations('.json_encode($translations).')';
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getTranslations(string $locale)
|
private function getTranslations(string $locale)
|
||||||
|
22
framework/core/src/Frontend/Asset/AssetCollection.php
Normal file
22
framework/core/src/Frontend/Asset/AssetCollection.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Flarum\Frontend\Asset;
|
||||||
|
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
class AssetCollection extends Collection
|
||||||
|
{
|
||||||
|
protected array $quickMap = [
|
||||||
|
'css' => Css::class,
|
||||||
|
'js' => Js::class,
|
||||||
|
];
|
||||||
|
|
||||||
|
public function ofType(string $type)
|
||||||
|
{
|
||||||
|
$type = $this->quickMap[$type] ?? $type;
|
||||||
|
|
||||||
|
return $this->filter(function (Type $asset) use ($type) {
|
||||||
|
return $asset instanceof $type;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
10
framework/core/src/Frontend/Asset/Css.php
Normal file
10
framework/core/src/Frontend/Asset/Css.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Flarum\Frontend\Asset;
|
||||||
|
|
||||||
|
use Flarum\Frontend\Compiler\LessCompiler;
|
||||||
|
|
||||||
|
class Css extends Type
|
||||||
|
{
|
||||||
|
protected string $compilerClass = LessCompiler::class;
|
||||||
|
}
|
10
framework/core/src/Frontend/Asset/Js.php
Normal file
10
framework/core/src/Frontend/Asset/Js.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Flarum\Frontend\Asset;
|
||||||
|
|
||||||
|
use Flarum\Frontend\Compiler\JsCompiler;
|
||||||
|
|
||||||
|
class Js extends Type
|
||||||
|
{
|
||||||
|
protected string $compilerClass = JsCompiler::class;
|
||||||
|
}
|
81
framework/core/src/Frontend/Asset/Type.php
Normal file
81
framework/core/src/Frontend/Asset/Type.php
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Flarum\Frontend\Asset;
|
||||||
|
|
||||||
|
use Flarum\Frontend\Compiler\CompilerInterface;
|
||||||
|
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
||||||
|
|
||||||
|
abstract class Type
|
||||||
|
{
|
||||||
|
/** @var array|callable[] */
|
||||||
|
protected array $sources;
|
||||||
|
protected string $compilerClass;
|
||||||
|
protected ?CompilerInterface $compiler = null;
|
||||||
|
protected string $filename;
|
||||||
|
protected string $type;
|
||||||
|
protected ?string $locale;
|
||||||
|
|
||||||
|
public function __construct(string $filename, string $locale = null)
|
||||||
|
{
|
||||||
|
$this->filename = $filename;
|
||||||
|
$this->locale = $locale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addSource(callable $source)
|
||||||
|
{
|
||||||
|
$this->sources[] = $source;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSources(): array
|
||||||
|
{
|
||||||
|
return $this->sources;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSources(array $sources): static
|
||||||
|
{
|
||||||
|
$this->sources = $sources;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sources(): array
|
||||||
|
{
|
||||||
|
$collector = new SourceCollector;
|
||||||
|
|
||||||
|
foreach ($this->sources as $source) {
|
||||||
|
$source($collector);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $collector->getSources();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFilename(): string
|
||||||
|
{
|
||||||
|
return $this->filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCompilerClass(): string
|
||||||
|
{
|
||||||
|
return $this->compilerClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCompiler(CompilerInterface $compiler): static
|
||||||
|
{
|
||||||
|
$compiler->addSources(function (SourceCollector $sources) {
|
||||||
|
foreach ($this->sources as $callback) {
|
||||||
|
$callback($sources, $this->locale);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->compiler = $compiler;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCompiler(): CompilerInterface
|
||||||
|
{
|
||||||
|
return $this->compiler;
|
||||||
|
}
|
||||||
|
}
|
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
namespace Flarum\Frontend;
|
namespace Flarum\Frontend;
|
||||||
|
|
||||||
use Flarum\Frontend\Compiler\CompilerInterface;
|
use Flarum\Frontend\Asset\AssetCollection;
|
||||||
|
use Flarum\Frontend\Asset\Type;
|
||||||
use Flarum\Frontend\Compiler\JsCompiler;
|
use Flarum\Frontend\Compiler\JsCompiler;
|
||||||
use Flarum\Frontend\Compiler\LessCompiler;
|
use Flarum\Frontend\Compiler\LessCompiler;
|
||||||
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
|
||||||
use Illuminate\Contracts\Filesystem\Filesystem;
|
use Illuminate\Contracts\Filesystem\Filesystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,6 +66,10 @@ class Assets
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $customFunctions = [];
|
protected $customFunctions = [];
|
||||||
|
/**
|
||||||
|
* @var array|Type[]
|
||||||
|
*/
|
||||||
|
protected array $assets = [];
|
||||||
|
|
||||||
public function __construct(string $name, Filesystem $assetsDir, string $cacheDir = null, array $lessImportDirs = null, array $customFunctions = [])
|
public function __construct(string $name, Filesystem $assetsDir, string $cacheDir = null, array $lessImportDirs = null, array $customFunctions = [])
|
||||||
{
|
{
|
||||||
@@ -76,85 +80,26 @@ class Assets
|
|||||||
$this->customFunctions = $customFunctions;
|
$this->customFunctions = $customFunctions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function js($sources)
|
public function addAsset(Type $asset): static
|
||||||
{
|
{
|
||||||
$this->addSources('js', $sources);
|
$this->assets[$asset->getFilename()] = $asset;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function css($callback)
|
public function getAssets(): AssetCollection
|
||||||
{
|
{
|
||||||
$this->addSources('css', $callback);
|
return AssetCollection::make($this->assets)
|
||||||
|
->each(function (Type $asset) {
|
||||||
return $this;
|
$asset->setCompiler(
|
||||||
|
$asset->getCompilerClass() === JsCompiler::class
|
||||||
|
? $this->makeJsCompiler($asset->getFilename())
|
||||||
|
: $this->makeLessCompiler($asset->getFilename())
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function localeJs($callback)
|
protected function makeJsCompiler(string $filename): JsCompiler
|
||||||
{
|
|
||||||
$this->addSources('localeJs', $callback);
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function localeCss($callback)
|
|
||||||
{
|
|
||||||
$this->addSources('localeCss', $callback);
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function addSources($type, $callback)
|
|
||||||
{
|
|
||||||
$this->sources[$type][] = $callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function populate(CompilerInterface $compiler, string $type, string $locale = null)
|
|
||||||
{
|
|
||||||
$compiler->addSources(function (SourceCollector $sources) use ($type, $locale) {
|
|
||||||
foreach ($this->sources[$type] as $callback) {
|
|
||||||
$callback($sources, $locale);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function makeJs(): JsCompiler
|
|
||||||
{
|
|
||||||
$compiler = $this->makeJsCompiler($this->name.'.js');
|
|
||||||
|
|
||||||
$this->populate($compiler, 'js');
|
|
||||||
|
|
||||||
return $compiler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function makeCss(): LessCompiler
|
|
||||||
{
|
|
||||||
$compiler = $this->makeLessCompiler($this->name.'.css');
|
|
||||||
|
|
||||||
$this->populate($compiler, 'css');
|
|
||||||
|
|
||||||
return $compiler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function makeLocaleJs(string $locale): JsCompiler
|
|
||||||
{
|
|
||||||
$compiler = $this->makeJsCompiler($this->name.'-'.$locale.'.js');
|
|
||||||
|
|
||||||
$this->populate($compiler, 'localeJs', $locale);
|
|
||||||
|
|
||||||
return $compiler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function makeLocaleCss(string $locale): LessCompiler
|
|
||||||
{
|
|
||||||
$compiler = $this->makeLessCompiler($this->name.'-'.$locale.'.css');
|
|
||||||
|
|
||||||
$this->populate($compiler, 'localeCss', $locale);
|
|
||||||
|
|
||||||
return $compiler;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function makeJsCompiler(string $filename)
|
|
||||||
{
|
{
|
||||||
return new JsCompiler($this->assetsDir, $filename);
|
return new JsCompiler($this->assetsDir, $filename);
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,9 @@
|
|||||||
namespace Flarum\Frontend\Content;
|
namespace Flarum\Frontend\Content;
|
||||||
|
|
||||||
use Flarum\Foundation\Config;
|
use Flarum\Foundation\Config;
|
||||||
|
use Flarum\Frontend\Asset\Css;
|
||||||
|
use Flarum\Frontend\Asset\Js;
|
||||||
|
use Flarum\Frontend\Asset\Type;
|
||||||
use Flarum\Frontend\Compiler\CompilerInterface;
|
use Flarum\Frontend\Compiler\CompilerInterface;
|
||||||
use Flarum\Frontend\Document;
|
use Flarum\Frontend\Document;
|
||||||
use Illuminate\Contracts\Container\Container;
|
use Illuminate\Contracts\Container\Container;
|
||||||
@@ -74,9 +77,21 @@ class Assets
|
|||||||
*/
|
*/
|
||||||
protected function assembleCompilers(?string $locale): array
|
protected function assembleCompilers(?string $locale): array
|
||||||
{
|
{
|
||||||
|
$assets = $this->assets->getAssets();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'js' => [$this->assets->makeJs(), $this->assets->makeLocaleJs($locale)],
|
'js' => $assets
|
||||||
'css' => [$this->assets->makeCss(), $this->assets->makeLocaleCss($locale)]
|
->ofType('js')
|
||||||
|
->map(function (Type $asset) {
|
||||||
|
return $asset->getCompiler();
|
||||||
|
})
|
||||||
|
->toArray(),
|
||||||
|
'css' => $assets
|
||||||
|
->ofType('css')
|
||||||
|
->map(function (Type $asset) {
|
||||||
|
return $asset->getCompiler();
|
||||||
|
})
|
||||||
|
->toArray(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,11 +11,13 @@ namespace Flarum\Frontend;
|
|||||||
|
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
use Flarum\Foundation\Paths;
|
use Flarum\Foundation\Paths;
|
||||||
|
use Flarum\Frontend\Asset\Css;
|
||||||
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
use Flarum\Frontend\Compiler\Source\SourceCollector;
|
||||||
use Flarum\Frontend\Driver\BasicTitleDriver;
|
use Flarum\Frontend\Driver\BasicTitleDriver;
|
||||||
use Flarum\Frontend\Driver\TitleDriverInterface;
|
use Flarum\Frontend\Driver\TitleDriverInterface;
|
||||||
use Flarum\Http\SlugManager;
|
use Flarum\Http\SlugManager;
|
||||||
use Flarum\Http\UrlGenerator;
|
use Flarum\Http\UrlGenerator;
|
||||||
|
use Flarum\Locale\LocaleManager;
|
||||||
use Flarum\Settings\SettingsRepositoryInterface;
|
use Flarum\Settings\SettingsRepositoryInterface;
|
||||||
use Illuminate\Contracts\Container\Container;
|
use Illuminate\Contracts\Container\Container;
|
||||||
use Illuminate\Contracts\View\Factory as ViewFactory;
|
use Illuminate\Contracts\View\Factory as ViewFactory;
|
||||||
@@ -40,8 +42,14 @@ class FrontendServiceProvider extends AbstractServiceProvider
|
|||||||
$paths->vendor.'/components/font-awesome/less' => ''
|
$paths->vendor.'/components/font-awesome/less' => ''
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$assets->css([$this, 'addBaseCss']);
|
$assets->addAsset((new Css("$name.css", null))->addSource([$this, 'addBaseCss']));
|
||||||
$assets->localeCss([$this, 'addBaseCss']);
|
|
||||||
|
/** @var LocaleManager $locales */
|
||||||
|
$locales = $container[LocaleManager::class];
|
||||||
|
|
||||||
|
foreach ($locales->getLocales() as $locale => $_) {
|
||||||
|
$assets->addAsset((new Css("$name-$locale.css", $locale))->addSource([$this, 'addBaseCss']));
|
||||||
|
}
|
||||||
|
|
||||||
return $assets;
|
return $assets;
|
||||||
};
|
};
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
namespace Flarum\Frontend;
|
namespace Flarum\Frontend;
|
||||||
|
|
||||||
|
use Flarum\Frontend\Asset\Type;
|
||||||
use Flarum\Locale\LocaleManager;
|
use Flarum\Locale\LocaleManager;
|
||||||
use Flarum\Settings\Event\Saved;
|
use Flarum\Settings\Event\Saved;
|
||||||
|
|
||||||
@@ -53,19 +54,15 @@ class RecompileFrontendAssets
|
|||||||
|
|
||||||
protected function flushCss()
|
protected function flushCss()
|
||||||
{
|
{
|
||||||
$this->assets->makeCss()->flush();
|
$this->assets->getAssets()->ofType('css')->each(function (Type $asset) {
|
||||||
|
$asset->getCompiler()->commit();
|
||||||
foreach ($this->locales->getLocales() as $locale => $name) {
|
});
|
||||||
$this->assets->makeLocaleCss($locale)->flush();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function flushJs()
|
protected function flushJs()
|
||||||
{
|
{
|
||||||
$this->assets->makeJs()->flush();
|
$this->assets->getAssets()->ofType('js')->each(function (Type $asset) {
|
||||||
|
$asset->getCompiler()->commit();
|
||||||
foreach ($this->locales->getLocales() as $locale => $name) {
|
});
|
||||||
$this->assets->makeLocaleJs($locale)->flush();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user