added theme support

This commit is contained in:
Mark Gregory
2026-10-20 10:19:18 +01:00
parent c5f6871e8d
commit 42c074d966
56 changed files with 2671 additions and 11 deletions
@@ -16,8 +16,8 @@ final class StylistController extends Controller
return view('stylist::index', [
'theme' => $stylist->current(), 'themes' => $stylist->all(), 'variables' => $stylist->variables(),
'settingsService' => $settings, 'accessibility' => $accessibility, 'urls' => $urls,
'activeFrontendTheme' => $siteSettings->get('frontend_theme', config('stylist.default_frontend_theme', 'saasland'), 'site'),
'activeBackendTheme' => $siteSettings->get('backend_theme', config('stylist.default_backend_theme', 'admin'), 'site'),
'activeFrontendTheme' => $siteSettings->get('frontend_theme', config('stylist.default_frontend_theme', 'sonardesk'), 'site'),
'activeBackendTheme' => $siteSettings->get('backend_theme', config('stylist.default_backend_theme', 'sonardesk-admin'), 'site'),
]);
}
}
@@ -0,0 +1,31 @@
<?php
namespace Modules\Stylist\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use Modules\Stylist\Theme\Stylist;
use Throwable;
final class ApplyActiveTheme
{
public function handle(Request $request, Closure $next)
{
$context = $request->is('admin', 'admin/*', 'stylist', 'stylist/*') ? 'backend' : 'frontend';
try {
$theme = app(Stylist::class)->current($context);
if ($theme->type() === $context) {
$path = $theme->path().'/views';
if (is_dir($path)) {
// Prepend so ordinary view('admin.index') and @extends('layouts.app')
// resolve theme files first, then original application files.
View::getFinder()->prependLocation($path);
}
}
} catch (Throwable $exception) {
report($exception); // Original application views remain available.
}
return $next($request);
}
}