diff --git a/app/Extensions/Facades/Theme.php b/app/Extensions/Facades/Theme.php new file mode 100644 index 000000000..69e8e0dac --- /dev/null +++ b/app/Extensions/Facades/Theme.php @@ -0,0 +1,16 @@ +' . PHP_EOL, $this->getUrl($path)); + } + + public function css($path) + { + return sprintf('' . PHP_EOL, $this->getUrl($path)); + } + + protected function getUrl($path) + { + return '/themes/pterodactyl/' . ltrim($path, '/'); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index d9aee55e2..929de15fc 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -10,6 +10,7 @@ use Pterodactyl\Models\Subuser; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use Pterodactyl\Observers\UserObserver; +use Pterodactyl\Extensions\Themes\Theme; use Pterodactyl\Observers\ServerObserver; use Pterodactyl\Observers\SubuserObserver; @@ -40,6 +41,10 @@ class AppServiceProvider extends ServiceProvider if (! config('pterodactyl.load_environment_only', false) && $this->app->environment() !== 'testing') { $this->app->register(SettingsServiceProvider::class); } + + $this->app->singleton('extensions.themes', function () { + return new Theme; + }); } /** diff --git a/config/app.php b/config/app.php index 619e22366..f27b66a0e 100644 --- a/config/app.php +++ b/config/app.php @@ -234,6 +234,7 @@ return [ 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Theme' => Pterodactyl\Extensions\Facades\Theme::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, diff --git a/config/themes.php b/config/themes.php deleted file mode 100644 index 55942e5c3..000000000 --- a/config/themes.php +++ /dev/null @@ -1,63 +0,0 @@ - true, - - /* - |-------------------------------------------------------------------------- - | Root path where theme Views will be located. - | Can be outside default views path e.g.: resources/themes - | Leave it null if you will put your themes in the default views folder - | (as defined in config\views.php) - |-------------------------------------------------------------------------- - */ - 'themes_path' => realpath(base_path('resources/themes')), - - /* - |-------------------------------------------------------------------------- - | Set behavior if an asset is not found in a Theme hierarchy. - | Available options: THROW_EXCEPTION | LOG_ERROR | IGNORE - |-------------------------------------------------------------------------- - */ - 'asset_not_found' => 'LOG_ERROR', - - /* - |-------------------------------------------------------------------------- - | Do we want a theme activated by default? Can be set at runtime with: - | Theme::set('theme-name'); - |-------------------------------------------------------------------------- - */ - 'default' => env('APP_THEME', 'pterodactyl'), - - /* - |-------------------------------------------------------------------------- - | Cache theme.json configuration files that are located in each theme's folder - | in order to avoid searching theme settings in the filesystem for each request - |-------------------------------------------------------------------------- - */ - 'cache' => true, - - /* - |-------------------------------------------------------------------------- - | Define available themes. Format: - | - | 'theme-name' => [ - | 'extends' => 'theme-to-extend', // optional - | 'views-path' => 'path-to-views', // defaults to: resources/views/theme-name - | 'asset-path' => 'path-to-assets', // defaults to: public/theme-name - | - | // You can add your own custom keys - | // Use Theme::getSetting('key') & Theme::setSetting('key', 'value') to access them - | 'key' => 'value', - | ], - | - |-------------------------------------------------------------------------- - */ - 'themes' => [ - 'pterodactyl' => [ - 'extends' => null, - 'views-path' => 'pterodactyl', - 'asset-path' => 'themes/pterodactyl', - ], - ], -];