153 lines
5.4 KiB
PHP
153 lines
5.4 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\CMS\Contracts\Repositories\Content as IContent;
|
|
use App\CMS\Contracts\Repositories\Module as IModule;
|
|
use App\CMS\Contracts\Repositories\Template as ITemplate;
|
|
use App\CMS\Handlers\Registrators\SearchEngineRegistrator;
|
|
use App\CMS\Handlers\Registrators\SettingsExtensionRegistrator;
|
|
use App\CMS\Handlers\Registrators\TemplateRegistrator;
|
|
use App\CMS\Handlers\Registrators\WidgetRegistrator;
|
|
use App\CMS\Handlers\Search\Content;
|
|
use App\CMS\Handlers\Search\Files;
|
|
use App\CMS\Handlers\Search\Presenters\AdminContent as AdminContentPresenter;
|
|
use App\CMS\Handlers\Search\Presenters\AdminFiles;
|
|
use App\CMS\Pipeline\DisplayPipeline\DisplayPipeline;
|
|
use App\CMS\Pipeline\DisplayPipeline\Process\AddViewedToPage;
|
|
use App\CMS\Pipeline\DisplayPipeline\Process\CompileShortcodes;
|
|
use App\CMS\Pipeline\SavePipeline\Process\SaveCommonFields;
|
|
use App\CMS\Pipeline\SavePipeline\Process\UploadRelatedFiles;
|
|
use App\CMS\Pipeline\SavePipeline\Process\UploadTitlePhoto;
|
|
use App\CMS\Pipeline\SavePipeline\SavePipeline;
|
|
use App\CMS\Repositories\Content\Content as ContentRepository;
|
|
use App\CMS\Repositories\Module as ModuleRepository;
|
|
use App\CMS\Repositories\Templates\Template as TemplateRepository;
|
|
use App\CMS\Widgets\HtmlCode\HtmlCode;
|
|
use App\CMS\Widgets\Menu\Menu;
|
|
use App\CMS\Widgets\SocialButtons\SocialButtons;
|
|
use Barryvdh\Debugbar\ServiceProvider as DebugBarServiceProvider;
|
|
use Illuminate\Support\Facades\App;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Bootstrap any application services.
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
$this->app->bind(IContent::class, ContentRepository::class);
|
|
$this->app->bind(IModule::class, ModuleRepository::class);
|
|
$this->app->bind(ITemplate::class, TemplateRepository::class);
|
|
|
|
// ignore running from artisan
|
|
if (!App::runningInConsole()) {
|
|
$this->registerWidgets();
|
|
$this->registerSettings();
|
|
$this->registerSearch();
|
|
$this->registerDisplayPipeline();
|
|
$this->registerSavePipeline();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Register any application services.
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
if ($this->app->environment() == 'local' && class_exists(DebugBarServiceProvider::class)) {
|
|
$this->app->register(DebugBarServiceProvider::class);
|
|
}
|
|
|
|
$this->app->register(LaravelLocalizationServiceProvider::class);
|
|
|
|
// create singletons for registering widgets
|
|
$this->app->singleton('registerWidget', function ($app) {
|
|
return new WidgetRegistrator();
|
|
});
|
|
|
|
// create singleton for display pipeline - pipeline used for displaying visitor pages
|
|
$this->app->singleton('displayPipeline', function ($app) {
|
|
return new DisplayPipeline();
|
|
});
|
|
|
|
// create singleton for display pipeline - pipeline used for displaying visitor pages
|
|
$this->app->singleton('saveContentPipeline', function ($app) {
|
|
return new SavePipeline();
|
|
});
|
|
|
|
// create registrator for template directories
|
|
$this->app->singleton('registerTemplateDir', function ($app) {
|
|
return new TemplateRegistrator();
|
|
});
|
|
|
|
$this->app->singleton('registerSettingsExtension', function ($app) {
|
|
return new SettingsExtensionRegistrator($app);
|
|
});
|
|
|
|
$this->app->singleton('registerSearchEngine', function ($app) {
|
|
return new SearchEngineRegistrator($app);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Method for registering widgets.
|
|
*/
|
|
private function registerWidgets()
|
|
{
|
|
/**
|
|
* @var $registrator WidgetRegistrator
|
|
*/
|
|
$registrator = $this->app->make('registerWidget');
|
|
|
|
// register all available widgets
|
|
$registrator->register(HtmlCode::class);
|
|
$registrator->register(Menu::class);
|
|
$registrator->register(SocialButtons::class);
|
|
}
|
|
|
|
/**
|
|
* Register setting sections
|
|
*/
|
|
private function registerSettings()
|
|
{
|
|
$registrator = $this->app->make('registerSettingsExtension');
|
|
|
|
$registrator->register('basic', 'admin/settings.basic', 'admin.settings.parts.basic');
|
|
$registrator->register('meta', 'admin/settings.meta', 'admin.settings.parts.meta');
|
|
$registrator->register('social', 'admin/settings.socialSites', 'admin.settings.parts.social');
|
|
$registrator->register('widgets', 'admin/settings.widgets.title', 'admin.settings.parts.widgets');
|
|
}
|
|
|
|
/**
|
|
* Register callbacks used for searching
|
|
*/
|
|
private function registerSearch()
|
|
{
|
|
$registrator = $this->app->make('registerSearchEngine');
|
|
|
|
$registrator->register(new Content(), new AdminContentPresenter(), SearchEngineRegistrator::ADMIN);
|
|
$registrator->register(new Files(), new AdminFiles(), SearchEngineRegistrator::ADMIN);
|
|
}
|
|
|
|
private function registerDisplayPipeline()
|
|
{
|
|
$registrator = $this->app->make('displayPipeline');
|
|
|
|
$registrator->add(AddViewedToPage::class);
|
|
// $registrator->add(CompileShortcodes::class);
|
|
}
|
|
|
|
private function registerSavePipeline()
|
|
{
|
|
$pipeline = $this->app->make('saveContentPipeline');
|
|
|
|
$pipeline->add(SaveCommonFields::class);
|
|
$pipeline->add(UploadTitlePhoto::class);
|
|
$pipeline->add(UploadRelatedFiles::class);
|
|
}
|
|
}
|