Files
Network-MGMT/app/Http/Controllers/Admin/LayoutController.php
T
gitea-mms eb57be730b feat(layout): Layout-Einstellungen, Dark-Mode, Logo, Hilfe-Menü
- 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
2026-06-29 14:15:41 +02:00

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.');
}
}