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); } }