publishViewResources(); return; } $template = CurrentTemplate::get(); if (!$template) { throw new \ErrorException('Template is not set, cannot continue'); } // include files $files = isset($template->moduleSettings->files) ? $template->moduleSettings->files : []; foreach ($files as $file) { include_once $file; } // register templates $publicTemplates = CurrentTemplate::getPublicTemplatePaths(); if (!is_array($publicTemplates)) { throw new \ErrorException(CurrentTemplate::handler() . '::getPublicTemplatePaths() must return array!'); } $this->registerTemplatePaths($publicTemplates); } public function registerTemplatePaths($publicTemplates) { $modules = Module::where('enabled', true) ->get() ->pluck('id', 'alias') ->toArray(); /** * @var $registrator TemplateRegistrator */ $registrator = $this->app->make('registerTemplateDir'); foreach ($publicTemplates as $template) { // setup some global variables $module = strtolower($template['module']); $alias = isset($template['alias']) ? $template['alias'] : $module; $namespace = isset($template['namespace']) ? $template['namespace'] : strtolower($template['module']); if (!isset($modules[$alias])) { continue; } // register path with current template name $registrator->setNamespace($namespace); $registrator->setModuleId($modules[$alias]); $registrator->register('resources/views/modules/' . $alias, 'visitor', $template['templateName']); } // register also global resources/views/visitor directory $registrator->register('resources/views/', 'visitor', 'admin/templates.core'); } /** * Register the service provider. * * @return void */ public function register() { } /** * Publish all public assets from all themes */ private function publishViewResources() { $template = CurrentTemplate::get(); if (!$template || is_null($template->module_settings)) { return; } $templateDir = base_path('templates/' . $template->module_settings->staticName . '/Resources'); $assetsDir = $templateDir . '/' . TemplateContract::ASSETS_DIRECTORY; $viewsDir = $templateDir . '/views'; // publish assets if exists for current theme if (is_dir($assetsDir)) { $this->publishes([$assetsDir => public_path('assets/visitor')], 'public-assets'); } // publish base visitors views $this->publishes([$viewsDir . '/visitor' => resource_path('views/visitor')], 'module-views'); // publish admin views if (is_dir($viewsDir . '/modules')) { $this->publishes([$viewsDir . '/modules' => resource_path('views/modules')], 'module-views'); } } }