diff --git a/app/Livewire/Ui/System/SettingsForm.php b/app/Livewire/Ui/System/SettingsForm.php index 905193c..4f3e3d3 100644 --- a/app/Livewire/Ui/System/SettingsForm.php +++ b/app/Livewire/Ui/System/SettingsForm.php @@ -7,12 +7,16 @@ use App\Models\Setting; use Illuminate\Support\Facades\Artisan; use Livewire\Attributes\Layout; use Livewire\Attributes\Title; +use Livewire\Attributes\Url; use Livewire\Component; #[Layout('layouts.dvx')] #[Title('Einstellungen · Mailwolt')] class SettingsForm extends Component { + #[Url] + public string $tab = 'allgemein'; + // Allgemein public string $instance_name = ''; public string $locale = 'de'; diff --git a/resources/views/livewire/ui/system/settings-form.blade.php b/resources/views/livewire/ui/system/settings-form.blade.php index d1dc287..af6418c 100644 --- a/resources/views/livewire/ui/system/settings-form.blade.php +++ b/resources/views/livewire/ui/system/settings-form.blade.php @@ -12,33 +12,56 @@ Einstellungen
- + @if($tab === 'domains') + + @else + + @endif
-
+ {{-- Tab-Navigation --}} +
+ @php + $tabs = [ + 'allgemein' => ['label' => 'Allgemein', 'icon' => ''], + 'domains' => ['label' => 'Domains & SSL', 'icon' => ''], + 'backup' => ['label' => 'Backup', 'icon' => ''], + 'benachrichtigungen' => ['label' => 'Benachrichtigungen', 'icon' => ''], + ]; + @endphp + @foreach($tabs as $key => $cfg) + + @endforeach +
- {{-- ═══ Main ═══ --}} + {{-- ═══ Tab: Allgemein ═══ --}} + @if($tab === 'allgemein') +
- {{-- Allgemein --}}
-
- Allgemein -
+
Allgemein
- +
Wird aus config/app.php gelesen (APP_NAME)
@@ -67,185 +90,11 @@
- {{-- 2FA --}} - {{-- Backup --}} -
-
-
- Backup-Zeitplan -
-
- @if($backup_enabled) - Aktiv - @else - Deaktiviert - @endif - Verlauf -
-
-
- - {{-- Enable toggle --}} - - - {{-- Was sichern --}} -
- -
- - - -
- @if($backup_include_maildirs) -
- -
Maildir-Pfad – leer lassen für automatische Erkennung
-
- @endif -
- - @if($backup_enabled) - - {{-- Preset buttons --}} -
- -
- @foreach(['hourly' => 'Stündlich', 'daily' => 'Täglich', 'weekly' => 'Wöchentlich', 'monthly' => 'Monatlich', 'custom' => 'Benutzerdefiniert'] as $val => $label) - - @endforeach -
-
- - {{-- Time / day pickers --}} - @if($backup_preset !== 'hourly' && $backup_preset !== 'custom') -
-
- - -
- - @if($backup_preset === 'weekly') -
- - -
- @elseif($backup_preset === 'monthly') -
- - -
- @endif -
- @endif - - @if($backup_preset === 'custom') -
- - -
Standard Cron-Syntax: Minute Stunde Tag Monat Wochentag
-
- @endif - - {{-- Cron-Vorschau --}} -
- - Cron: - {{ $backup_cron }} -
- - {{-- Aufbewahrung --}} -
- - -
Ältere Backups werden automatisch gelöscht. Empfehlung: 7–14.
-
- - @endif - -
-
- - {{-- Benachrichtigungen --}}
-
- Benachrichtigungen -
-
-
-
-
- - -
Wird als Absender in System-Mails angezeigt
-
-
- - -
Empfänger für Update- & Systemmeldungen
-
-
- @php - $sysmailFqdn = \App\Models\Setting::get('notify_from_address') - ?: ('no-reply@' . config('mailpool.platform_system_zone','sysmail') . '.' . config('mailpool.platform_zone','')); - @endphp -
- - Absenderadresse: - {{ $sysmailFqdn }} -
-
-
- - {{-- Sicherheit --}} -
-
-
- Sicherheit -
+
Sicherheit
@@ -266,16 +115,48 @@
- {{-- ═══ Sidebar ═══ --}}
- - {{-- Domains --}}
-
- Domains +
System-Info
+
+
+
+ PHP + {{ PHP_VERSION }}
+
+ Laravel + {{ app()->version() }} +
+
+ Umgebung + {{ app()->environment() }} +
+
+ Hostname + {{ gethostname() }} +
+
+ Certbot + {{ trim(@shell_exec('certbot --version 2>&1') ?? '—') ?: '—' }} +
+
+
+
+
+
+ @endif + + {{-- ═══ Tab: Domains & SSL ═══ --}} + @if($tab === 'domains') +
+
+
+
+
+
Domains
@@ -292,40 +173,30 @@
- + @error('ui_domain')
{{ $message }}
@enderror
- + @error('mail_domain')
{{ $message }}
@enderror
- + @error('webmail_domain')
{{ $message }}
@enderror
- +
+
+
- {{-- SSL-Zertifikate --}} +
+
-
- SSL-Zertifikate -
+
SSL-Zertifikate
@foreach(['ui','webmail','mail'] as $key) @@ -351,41 +222,173 @@
+
+
+
+ @endif - {{-- Info --}} -
-
-
- System-Info -
+ {{-- ═══ Tab: Backup ═══ --}} + @if($tab === 'backup') +
+
+
+
Backup-Zeitplan
+
+ @if($backup_enabled) + Aktiv + @else + Deaktiviert + @endif + Verlauf +
+
+
+ + + +
+ +
+ + +
-
-
- PHP - {{ PHP_VERSION }} -
-
- Laravel - {{ app()->version() }} -
-
- Umgebung - {{ app()->environment() }} -
-
- Hostname - {{ gethostname() }} -
-
- Certbot - {{ trim(@shell_exec('certbot --version 2>&1') ?? '—') ?: '—' }} -
+ @if($backup_include_maildirs) +
+ +
Maildir-Pfad – leer lassen für automatische Erkennung
+
+ @endif +
+ + @if($backup_enabled) + +
+ +
+ @foreach(['hourly' => 'Stündlich', 'daily' => 'Täglich', 'weekly' => 'Wöchentlich', 'monthly' => 'Monatlich', 'custom' => 'Benutzerdefiniert'] as $val => $label) + + @endforeach
+ @if($backup_preset !== 'hourly' && $backup_preset !== 'custom') +
+
+ + +
+ @if($backup_preset === 'weekly') +
+ + +
+ @elseif($backup_preset === 'monthly') +
+ + +
+ @endif +
+ @endif + + @if($backup_preset === 'custom') +
+ + +
Standard Cron-Syntax: Minute Stunde Tag Monat Wochentag
+
+ @endif + +
+ + Cron: + {{ $backup_cron }} +
+ +
+ + +
Ältere Backups werden automatisch gelöscht. Empfehlung: 7–14.
+
+ + @endif +
-
+ @endif + + {{-- ═══ Tab: Benachrichtigungen ═══ --}} + @if($tab === 'benachrichtigungen') +
+
+
+
Benachrichtigungen
+
+
+
+
+ + +
Wird als Absender in System-Mails angezeigt
+
+
+ + +
Empfänger für Update- & Systemmeldungen
+
+
+ @php + $sysmailFqdn = \App\Models\Setting::get('notify_from_address') + ?: ('no-reply@' . config('mailpool.platform_system_zone','sysmail') . '.' . config('mailpool.platform_zone','')); + @endphp +
+ + Absenderadresse: + {{ $sysmailFqdn }} +
+
+
+
+ @endif