eb57be730b
- Settings Key-Value Store (DB + Cache) - Einstellungen → Layout: Seitenname, Logo, Button-Farbe, Dark/Light-Mode - Hilfe-Menü (Ebene 0): Handbuch + Changelog im Browser - Navigation erweitert: Einstellungen-Dropdown + Hilfe-Dropdown - CHANGELOG v0.4.0 Version: 0.4.0
57 lines
1.6 KiB
PHP
57 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\SettingsService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
class LayoutController extends Controller
|
|
{
|
|
public function __construct(private SettingsService $settings) {}
|
|
|
|
public function index(): View
|
|
{
|
|
return view('admin.layout.index', [
|
|
'settings' => $this->settings->all(),
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request): RedirectResponse
|
|
{
|
|
$validated = $request->validate([
|
|
'site_name' => ['required', 'string', 'max:100'],
|
|
'button_color' => ['required', 'string', 'regex:/^#[0-9a-fA-F]{6}$/'],
|
|
'theme_mode' => ['required', 'in:light,dark'],
|
|
'site_logo' => ['nullable', 'image', 'max:2048'],
|
|
]);
|
|
|
|
// Logo-Upload verarbeiten
|
|
if ($request->hasFile('site_logo')) {
|
|
$path = $request->file('site_logo')->store('logos', 'public');
|
|
$this->settings->set('site_logo', $path);
|
|
}
|
|
|
|
$this->settings->setMany([
|
|
'site_name' => $validated['site_name'],
|
|
'button_color' => $validated['button_color'],
|
|
'theme_mode' => $validated['theme_mode'],
|
|
]);
|
|
|
|
return redirect()
|
|
->route('admin.layout.index')
|
|
->with('success', 'Layout-Einstellungen gespeichert.');
|
|
}
|
|
|
|
public function removeLogo(): RedirectResponse
|
|
{
|
|
$this->settings->set('site_logo', '');
|
|
|
|
return redirect()
|
|
->route('admin.layout.index')
|
|
->with('success', 'Logo entfernt.');
|
|
}
|
|
}
|