FEATURE: prepare for installing templates

This commit is contained in:
Michal Kváček
2016-09-20 00:46:32 +02:00
parent 7a681fd7f7
commit f087da1b43
22 changed files with 397 additions and 253 deletions
+3 -10
View File
@@ -39,13 +39,6 @@ class AppServiceProvider extends ServiceProvider
$this->registerTemplates();
$this->registerSettings();
$this->registerSearch();
// check if given template is valid
$theme = config('app.theme');
$themeDir = resource_path('views/visitor/' . $theme);
if (!$theme || empty($theme) || !is_dir($themeDir)) {
throw new InvalidArgumentException('No or invalid theme set! Use artisan theme:set or edit .env file manually and include THEME option, please');
}
}
/**
@@ -120,10 +113,10 @@ class AppServiceProvider extends ServiceProvider
/**
* @var $registrator TemplateRegistrator
*/
$registrator = $this->app->make('registerTemplateDir');
$registrator->setBaseDirectory('resources/views/visitor');
// $registrator = $this->app->make('registerTemplateDir');
// $registrator->setBaseDirectory('resources/views/visitor');
$registrator->register(config('app.theme'), 'admin/templates.core');
// $registrator->register(config('app.theme'), 'admin/templates.core');
}
/**
@@ -5,18 +5,13 @@ use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
use Symfony\Component\Translation\Translator;
class LaravelLocalizationServiceProvider extends ServiceProvider
{
public function register()
{
try {
$languages = DB::table('languages')
->get();
} catch (\Exception $e) {
$languages = [];
}
$languages = DB::table('languages')
->get();
$supportedLocales = [];
if (empty($languages)) {
@@ -28,11 +23,7 @@ class LaravelLocalizationServiceProvider extends ServiceProvider
];
// create default language
try {
Language::create($supportedLocales[config('app.locale')]);
} catch (\Exception $e) {
// ignore, table languages probably does not exist.
}
Language::create($supportedLocales[config('app.locale')]);
}
foreach ($languages as $language) {
+3 -2
View File
@@ -21,7 +21,8 @@ class ModuleManager extends ServiceProvider
}
// this service provider needs published config - config is merged right after this service provider
$modules = Module::get();
$modules = Module::where('is_template', false)
->get();
// iterate over all modules and enable or disable them
foreach ($modules as $module) {
@@ -58,7 +59,7 @@ class ModuleManager extends ServiceProvider
// check if module config is writable
if (!is_writable(dirname($path))) {
Log::warning('Cannot write to '.$path);
Log::warning('Cannot write to ' . $path);
return;
}
+75
View File
@@ -0,0 +1,75 @@
<?php
namespace App\Providers;
use App\Handlers\Registrators\TemplateRegistrator;
use App\Models\Module;
use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider;
use InvalidArgumentException;
class TemplateServiceProvider extends ServiceProvider
{
public function boot()
{
if (App::runningInConsole())
return;
parent::boot();
// select template
$template = Module::where('is_template', true)
->first();
if (!$template) {
throw new \ErrorException('Template is not set, cannot continue');
}
$templateSettings = json_decode($template->module_settings);
// include files
$files = isset($templateSettings->files) ? $templateSettings->files : [];
foreach ($files as $file) {
include_once app_path('../templates/' . $templateSettings->staticName . '/' . $file);
}
// register templates
$publicTemplates = call_user_func([$template->handler, 'getPublicTemplatePaths']);
if (!is_array($publicTemplates)) {
throw new \ErrorException($template->handler . '::getPublicTemplatePaths() must return array!');
}
if (empty($publicTemplates)) {
return;
}
/**
* @var $registrator TemplateRegistrator
*/
$registrator = $this->app->make('registerTemplateDir');
foreach ($publicTemplates as $template) {
// setup some global variables
// try {
// $registrator->setBaseDirectory('resources/views/modules/gallery/visitor');
// $registrator->setNamespace('gallery');
// $registrator->setModuleId(call_user_func([config('gallery.handler'), 'getModuleId']));
//
// // register path with current template name
// $registrator->register(config('app.theme'), 'gallery::admin/adminMenu.templatePath');
// } catch (InvalidArgumentException $e) {
// // ignore this exception
// }
}
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
}
}