diff --git a/Providers/RouteServiceProvider.php b/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..d377a19 --- /dev/null +++ b/Providers/RouteServiceProvider.php @@ -0,0 +1,86 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + + $this->mapAdminRoutes(); + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->moduleNamespace) + ->group(module_path('virtfusionservice', '/Routes/web.php')); + } + + /** + * Define the "admin" routes for the application. + * + * These routes all receive admin level permission status + * + * @return void + */ + protected function mapAdminRoutes() + { + Route::middleware('web', 'admin', 'permission') + ->namespace($this->moduleNamespace) + ->prefix('admin/virtfusionservice') + ->group(module_path('virtfusionservice', '/Routes/admin.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->moduleNamespace) + ->group(module_path('virtfusionservice', '/Routes/api.php')); + } +} \ No newline at end of file diff --git a/Providers/VirtfusionServiceServiceProvider.php b/Providers/VirtfusionServiceServiceProvider.php new file mode 100644 index 0000000..3be64ef --- /dev/null +++ b/Providers/VirtfusionServiceServiceProvider.php @@ -0,0 +1,173 @@ +config) { + $this->registerConfig(); + } + + if ($this->views) { + $this->registerViews(); + } + + if ($this->migrations) { + $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations')); + } + + $this->registerTranslations(); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + if ($this->routes) { + $this->app->register(RouteServiceProvider::class); + } + } + + /** + * Register config. + * + * @return void + */ + protected function registerConfig() + { + $this->publishes([ + module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'), + ], 'config'); + $this->mergeConfigFrom( + module_path($this->moduleName, 'Config/config.php'), + $this->moduleNameLower + ); + } + + /** + * Register views. + * + * @return void + */ + protected function registerViews() + { + $viewPath = resource_path('views/modules/' . $this->moduleNameLower); + + $sourcePath = module_path($this->moduleName, 'Resources/views'); + + $this->publishes([ + $sourcePath => $viewPath + ], ['views', $this->moduleNameLower . '-module-views']); + + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); + } + + /** + * Register translations. + * + * @return void + */ + protected function registerTranslations() + { + $langPath = resource_path('lang/modules/' . $this->moduleNameLower); + + if (is_dir($langPath)) { + $this->loadTranslationsFrom($langPath, $this->moduleNameLower); + $this->loadJsonTranslationsFrom($langPath, $this->moduleNameLower); + } else { + $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + $this->loadJsonTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + /** + * Retrieve paths where views are published. + * + * @return array + */ + private function getPublishableViewPaths(): array + { + $paths = []; + foreach (\Config::get('view.paths') as $path) { + if (is_dir($path . '/modules/' . $this->moduleNameLower)) { + $paths[] = $path . '/modules/' . $this->moduleNameLower; + } + } + return $paths; + } +} \ No newline at end of file