container->singleton('flarum.assets.factory', function (Container $container) { return function (string $name) use ($container) { $paths = $container[Paths::class]; $assets = new Assets( $name, $container->make('filesystem')->disk('flarum-assets'), $paths->storage ); $assets->setLessImportDirs([ $paths->vendor.'/components/font-awesome/less' => '' ]); $assets->css([$this, 'addBaseCss']); $assets->localeCss([$this, 'addBaseCss']); return $assets; }; }); $this->container->singleton('flarum.frontend.factory', function (Container $container) { return function (string $name) use ($container) { $frontend = $container->make(Frontend::class); $frontend->content(function (Document $document) use ($name) { $document->layoutView = 'flarum::frontend.'.$name; }); $frontend->content($container->make(Content\Assets::class)->forFrontend($name)); $frontend->content($container->make(Content\CorePayload::class)); $frontend->content($container->make(Content\Meta::class)); return $frontend; }; }); } /** * {@inheritdoc} */ public function boot(Container $container, ViewFactory $views) { $this->loadViewsFrom(__DIR__.'/../../views', 'flarum'); $views->share([ 'translator' => $container->make('translator'), 'url' => $container->make(UrlGenerator::class) ]); } public function addBaseCss(SourceCollector $sources) { $sources->addFile(__DIR__.'/../../less/common/variables.less'); $sources->addFile(__DIR__.'/../../less/common/mixins.less'); $this->addLessVariables($sources); } private function addLessVariables(SourceCollector $sources) { $sources->addString(function () { $settings = $this->container->make(SettingsRepositoryInterface::class); $vars = [ 'config-primary-color' => $settings->get('theme_primary_color', '#000'), 'config-secondary-color' => $settings->get('theme_secondary_color', '#000'), 'config-dark-mode' => $settings->get('theme_dark_mode') ? 'true' : 'false', 'config-colored-header' => $settings->get('theme_colored_header') ? 'true' : 'false' ]; return array_reduce(array_keys($vars), function ($string, $name) use ($vars) { return $string."@$name: {$vars[$name]};"; }, ''); }); } }