diff --git a/Modules/Core/Config/core.php b/Modules/Core/Config/core.php index cceffa89f..9e199313d 100644 --- a/Modules/Core/Config/core.php +++ b/Modules/Core/Config/core.php @@ -172,4 +172,11 @@ | useViewNamespaces.backend-theme needs to be enabled at module level */ 'enable-theme-overrides' => false, + + /* + |-------------------------------------------------------------------------- + | Check if asgard was installed + |-------------------------------------------------------------------------- + */ + 'is_installed' => env('INSTALLED', false) ]; diff --git a/Modules/Core/Providers/CoreServiceProvider.php b/Modules/Core/Providers/CoreServiceProvider.php index d392ad7d9..7d2205352 100644 --- a/Modules/Core/Providers/CoreServiceProvider.php +++ b/Modules/Core/Providers/CoreServiceProvider.php @@ -70,7 +70,7 @@ public function boot() public function register() { $this->app->singleton('asgard.isInstalled', function () { - return true === env('INSTALLED', false); + return true === config('asgard.core.core.is_installed'); }); $this->app->singleton('asgard.onBackend', function () { return $this->onBackend(); diff --git a/Modules/Core/Providers/RoutingServiceProvider.php b/Modules/Core/Providers/RoutingServiceProvider.php index dd88970a7..11494872d 100644 --- a/Modules/Core/Providers/RoutingServiceProvider.php +++ b/Modules/Core/Providers/RoutingServiceProvider.php @@ -52,14 +52,30 @@ public function map(Router $router) $this->loadApiRoutes($router); }); - $router->group([ - 'namespace' => $this->namespace, - 'prefix' => LaravelLocalization::setLocale(), - 'middleware' => ['localizationRedirect', 'web'], - ], function (Router $router) { - $this->loadBackendRoutes($router); - $this->loadFrontendRoutes($router); - }); + $prefixes = $this->getPrefixes(); + foreach ($prefixes as $prefix) { + $router->group([ + 'namespace' => $this->namespace, + 'prefix' => $prefix, + 'middleware' => ['localizationRedirect', 'web'], + ], function (Router $router) { + $this->loadBackendRoutes($router); + $this->loadFrontendRoutes($router); + }); + } + } + + /** + * Get locale prefixes + * @return array + */ + private function getPrefixes() + { + if (app('asgard.isInstalled')) { + return array_merge(json_decode(setting('core::locales')), ['']); + } + + return [LaravelLocalization::setLocale()]; } /** diff --git a/Modules/Media/Http/backendRoutes.php b/Modules/Media/Http/backendRoutes.php index f9a022b04..d7b1364da 100644 --- a/Modules/Media/Http/backendRoutes.php +++ b/Modules/Media/Http/backendRoutes.php @@ -3,10 +3,6 @@ use Illuminate\Routing\Router; /** @var Router $router */ -$router->bind('media', function ($id) { - return app(\Modules\Media\Repositories\FileRepository::class)->find($id); -}); - $router->group(['prefix' => '/media'], function (Router $router) { $router->get('media', [ 'as' => 'admin.media.media.index', diff --git a/Modules/Media/Providers/MediaServiceProvider.php b/Modules/Media/Providers/MediaServiceProvider.php index 5bf1f03e0..39eda6e8c 100644 --- a/Modules/Media/Providers/MediaServiceProvider.php +++ b/Modules/Media/Providers/MediaServiceProvider.php @@ -72,6 +72,10 @@ public function register() $event->load('media', array_dot(trans('media::media'))); $event->load('folders', array_dot(trans('media::folders'))); }); + + app('router')->bind('media', function ($id) { + return app(FileRepository::class)->find($id); + }); } public function boot(DispatcherContract $events) diff --git a/Modules/Menu/Http/backendRoutes.php b/Modules/Menu/Http/backendRoutes.php index c0899d926..2e74a46f1 100644 --- a/Modules/Menu/Http/backendRoutes.php +++ b/Modules/Menu/Http/backendRoutes.php @@ -3,13 +3,6 @@ use Illuminate\Routing\Router; /** @var Router $router */ -$router->bind('menu', function ($id) { - return app(\Modules\Menu\Repositories\MenuRepository::class)->find($id); -}); -$router->bind('menuitem', function ($id) { - return app(\Modules\Menu\Repositories\MenuItemRepository::class)->find($id); -}); - $router->group(['prefix' => '/menu'], function (Router $router) { $router->get('menus', [ 'as' => 'admin.menu.menu.index', diff --git a/Modules/Menu/Providers/MenuServiceProvider.php b/Modules/Menu/Providers/MenuServiceProvider.php index 3783743a7..847931cb6 100644 --- a/Modules/Menu/Providers/MenuServiceProvider.php +++ b/Modules/Menu/Providers/MenuServiceProvider.php @@ -54,6 +54,13 @@ public function register() $event->load('menu', array_dot(trans('menu::menu'))); $event->load('menu-items', array_dot(trans('menu::menu-items'))); }); + + app('router')->bind('menu', function ($id) { + return app(MenuRepository::class)->find($id); + }); + app('router')->bind('menuitem', function ($id) { + return app(MenuItemRepository::class)->find($id); + }); } /** diff --git a/Modules/Page/Http/apiRoutes.php b/Modules/Page/Http/apiRoutes.php index c949c3cf8..e9ea120ef 100644 --- a/Modules/Page/Http/apiRoutes.php +++ b/Modules/Page/Http/apiRoutes.php @@ -3,10 +3,6 @@ use Illuminate\Routing\Router; /** @var Router $router */ -$router->bind('page', function ($id) { - return app(\Modules\Page\Repositories\PageRepository::class)->find($id); -}); - $router->group(['prefix' => '/page', 'middleware' => ['api.token', 'auth.admin']], function (Router $router) { $router->get('pages', [ 'as' => 'api.page.page.index', diff --git a/Modules/Page/Http/backendRoutes.php b/Modules/Page/Http/backendRoutes.php index 719e2d255..d997c64b0 100644 --- a/Modules/Page/Http/backendRoutes.php +++ b/Modules/Page/Http/backendRoutes.php @@ -3,10 +3,6 @@ use Illuminate\Routing\Router; /** @var Router $router */ -$router->bind('page', function ($id) { - return app(\Modules\Page\Repositories\PageRepository::class)->find($id); -}); - $router->group(['prefix' => '/page'], function (Router $router) { $router->get('pages', [ 'as' => 'admin.page.page.index', diff --git a/Modules/Page/Http/frontendRoutes.php b/Modules/Page/Http/frontendRoutes.php index 426d4ccc4..250a02143 100644 --- a/Modules/Page/Http/frontendRoutes.php +++ b/Modules/Page/Http/frontendRoutes.php @@ -3,15 +3,13 @@ use Illuminate\Routing\Router; /** @var Router $router */ -if (! App::runningInConsole()) { - $router->get('/', [ - 'uses' => 'PublicController@homepage', - 'as' => 'homepage', - 'middleware' => config('asgard.page.config.middleware'), - ]); - $router->any('{uri}', [ - 'uses' => 'PublicController@uri', - 'as' => 'page', - 'middleware' => config('asgard.page.config.middleware'), - ])->where('uri', '.*'); -} +$router->get('/', [ + 'uses' => 'PublicController@homepage', + 'as' => 'homepage', + 'middleware' => config('asgard.page.config.middleware'), +]); +$router->any('{uri}', [ + 'uses' => 'PublicController@uri', + 'as' => 'page', + 'middleware' => config('asgard.page.config.middleware'), +])->where('uri', '.*'); diff --git a/Modules/Page/Providers/PageServiceProvider.php b/Modules/Page/Providers/PageServiceProvider.php index 01d0058af..cd81b2cbc 100644 --- a/Modules/Page/Providers/PageServiceProvider.php +++ b/Modules/Page/Providers/PageServiceProvider.php @@ -45,6 +45,10 @@ public function register() $this->app['events']->listen(LoadingBackendTranslations::class, function (LoadingBackendTranslations $event) { $event->load('pages', array_dot(trans('page::pages'))); }); + + app('router')->bind('page', function ($id) { + return app(PageRepository::class)->find($id); + }); } public function boot() diff --git a/Modules/Tag/Http/backendRoutes.php b/Modules/Tag/Http/backendRoutes.php index e9127c4ae..66e33ddc2 100644 --- a/Modules/Tag/Http/backendRoutes.php +++ b/Modules/Tag/Http/backendRoutes.php @@ -4,9 +4,6 @@ /** @var Router $router */ $router->group(['prefix' => 'tag'], function (Router $router) { - $router->bind('tag__tag', function ($id) { - return app(\Modules\Tag\Repositories\TagRepository::class)->find($id); - }); $router->get('tags', [ 'as' => 'admin.tag.tag.index', 'uses' => 'TagController@index', diff --git a/Modules/Tag/Providers/TagServiceProvider.php b/Modules/Tag/Providers/TagServiceProvider.php index 2ee9d82c1..265c35592 100644 --- a/Modules/Tag/Providers/TagServiceProvider.php +++ b/Modules/Tag/Providers/TagServiceProvider.php @@ -46,6 +46,10 @@ public function register() $this->app['events']->listen(LoadingBackendTranslations::class, function (LoadingBackendTranslations $event) { $event->load('tags', array_dot(trans('tag::tags'))); }); + + app('router')->bind('tag__tag', function ($id) { + return app(TagRepository::class)->find($id); + }); } public function boot() diff --git a/Modules/Translation/Http/backendRoutes.php b/Modules/Translation/Http/backendRoutes.php index 73a996a51..d535e1a02 100644 --- a/Modules/Translation/Http/backendRoutes.php +++ b/Modules/Translation/Http/backendRoutes.php @@ -4,9 +4,6 @@ /** @var Router $router */ $router->group(['prefix' =>'/translation'], function (Router $router) { - $router->bind('translations', function ($id) { - return \Modules\Translation\Entities\TranslationTranslation::find($id); - }); $router->get('translations', [ 'uses' => 'TranslationController@index', 'as' => 'admin.translation.translation.index', diff --git a/Modules/Translation/Providers/TranslationServiceProvider.php b/Modules/Translation/Providers/TranslationServiceProvider.php index 03a0e52d6..8551b8d54 100644 --- a/Modules/Translation/Providers/TranslationServiceProvider.php +++ b/Modules/Translation/Providers/TranslationServiceProvider.php @@ -12,6 +12,7 @@ use Modules\Core\Traits\CanPublishConfiguration; use Modules\Translation\Console\BuildTranslationsCacheCommand; use Modules\Translation\Entities\Translation; +use Modules\Translation\Entities\TranslationTranslation; use Modules\Translation\Events\Handlers\RegisterTranslationSidebar; use Modules\Translation\Repositories\Cache\CacheTranslationDecorator; use Modules\Translation\Repositories\Eloquent\EloquentTranslationRepository; @@ -50,6 +51,10 @@ public function register() $this->app['events']->listen(LoadingBackendTranslations::class, function (LoadingBackendTranslations $event) { $event->load('translations', array_dot(trans('translation::translations'))); }); + + app('router')->bind('translations', function ($id) { + return TranslationTranslation::find($id); + }); } public function boot() diff --git a/Modules/User/Http/apiRoutes.php b/Modules/User/Http/apiRoutes.php index 6ba9024fb..3df344c18 100644 --- a/Modules/User/Http/apiRoutes.php +++ b/Modules/User/Http/apiRoutes.php @@ -5,9 +5,6 @@ /** @var Router $router */ $router->group(['prefix' => '/user', 'middleware' => ['api.token', 'auth.admin']], function (Router $router) { $router->group(['prefix' => 'roles'], function (Router $router) { - $router->bind('role', function ($id) { - return app(\Modules\User\Repositories\RoleRepository::class)->find($id); - }); $router->get('/', [ 'as' => 'api.user.role.index', 'uses' => 'RoleController@index', @@ -46,9 +43,6 @@ }); $router->group(['prefix' => 'users'], function (Router $router) { - $router->bind('user', function ($id) { - return app(\Modules\User\Repositories\UserRepository::class)->find($id); - }); $router->get('/', [ 'as' => 'api.user.user.index', 'uses' => 'UserController@index', @@ -96,10 +90,6 @@ 'uses' => 'ProfileController@update', ]); - $router->bind('userTokenId', function ($id) { - return app(\Modules\User\Repositories\UserTokenRepository::class)->find($id); - }); - $router->get('api-keys', [ 'as' => 'api.account.api.index', 'uses' => 'ApiKeysController@index', diff --git a/Modules/User/Http/backendRoutes.php b/Modules/User/Http/backendRoutes.php index 3145d09d4..491383c61 100644 --- a/Modules/User/Http/backendRoutes.php +++ b/Modules/User/Http/backendRoutes.php @@ -81,9 +81,6 @@ 'as' => 'admin.account.profile.update', 'uses' => 'Account\ProfileController@update', ]); - $router->bind('userTokenId', function ($id) { - return app(\Modules\User\Repositories\UserTokenRepository::class)->find($id); - }); $router->get('api-keys', [ 'as' => 'admin.account.api.index', 'uses' => 'Account\ApiKeysController@index', diff --git a/Modules/User/Providers/UserServiceProvider.php b/Modules/User/Providers/UserServiceProvider.php index da0a17868..856e1ddc6 100644 --- a/Modules/User/Providers/UserServiceProvider.php +++ b/Modules/User/Providers/UserServiceProvider.php @@ -77,6 +77,16 @@ public function register() GrantModulePermissionsCommand::class, RemoveModulePermissionsCommand::class, ]); + + app('router')->bind('role', function ($id) { + return app(RoleRepository::class)->find($id); + }); + app('router')->bind('user', function ($id) { + return app(UserRepository::class)->find($id); + }); + app('router')->bind('userTokenId', function ($id) { + return app(UserTokenRepository::class)->find($id); + }); } /** diff --git a/Modules/Workshop/Http/backendRoutes.php b/Modules/Workshop/Http/backendRoutes.php index e65e3b64b..a02a6ca28 100644 --- a/Modules/Workshop/Http/backendRoutes.php +++ b/Modules/Workshop/Http/backendRoutes.php @@ -3,13 +3,6 @@ use Illuminate\Routing\Router; /** @var Router $router */ -$router->bind('module', function ($module) { - return app(\Nwidart\Modules\Contracts\RepositoryInterface::class)->find($module); -}); -$router->bind('theme', function ($theme) { - return app(\Modules\Workshop\Manager\ThemeManager::class)->find($theme); -}); - $router->group( ['prefix' => '/workshop'], function (Router $router) { diff --git a/Modules/Workshop/Providers/WorkshopServiceProvider.php b/Modules/Workshop/Providers/WorkshopServiceProvider.php index b2314ad73..00e8ec664 100644 --- a/Modules/Workshop/Providers/WorkshopServiceProvider.php +++ b/Modules/Workshop/Providers/WorkshopServiceProvider.php @@ -21,6 +21,7 @@ use Modules\Workshop\Scaffold\Module\ModuleScaffold; use Modules\Workshop\Scaffold\Theme\ThemeGeneratorFactory; use Modules\Workshop\Scaffold\Theme\ThemeScaffold; +use Nwidart\Modules\Repository; class WorkshopServiceProvider extends ServiceProvider { @@ -52,6 +53,13 @@ public function register() $event->load('modules', array_dot(trans('workshop::modules'))); $event->load('themes', array_dot(trans('workshop::themes'))); }); + + app('router')->bind('module', function ($module) { + return app(Repository::class)->find($module); + }); + app('router')->bind('theme', function ($theme) { + return app(ThemeManager::class)->find($theme); + }); } public function boot() diff --git a/config/asgard/core/core.php b/config/asgard/core/core.php index cceffa89f..9e199313d 100644 --- a/config/asgard/core/core.php +++ b/config/asgard/core/core.php @@ -172,4 +172,11 @@ | useViewNamespaces.backend-theme needs to be enabled at module level */ 'enable-theme-overrides' => false, + + /* + |-------------------------------------------------------------------------- + | Check if asgard was installed + |-------------------------------------------------------------------------- + */ + 'is_installed' => env('INSTALLED', false) ];