51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
||
|
||
namespace App\Livewire\Ui\System;
|
||
|
||
use Livewire\Component;
|
||
|
||
class GeneralForm extends Component
|
||
{
|
||
public string $instance_name = 'MailWolt'; // readonly Anzeige
|
||
public string $locale = 'de';
|
||
public string $timezone = 'Europe/Berlin';
|
||
public int $session_timeout = 120; // Minuten
|
||
|
||
// Beispieldaten – später aus Config/DB füllen
|
||
public array $locales = [
|
||
['value' => 'de', 'label' => 'Deutsch'],
|
||
['value' => 'en', 'label' => 'English'],
|
||
];
|
||
|
||
public array $timezones = [
|
||
'Europe/Berlin','UTC','Europe/Vienna','Europe/Zurich','America/New_York','Asia/Tokyo'
|
||
];
|
||
|
||
protected function rules(): array
|
||
{
|
||
return [
|
||
'locale' => ['required', Rule::in(collect($this->locales)->pluck('value')->all())],
|
||
'timezone' => ['required', Rule::in($this->timezones)],
|
||
'session_timeout' => ['required','integer','min:5','max:1440'],
|
||
];
|
||
}
|
||
|
||
public function save(): void
|
||
{
|
||
$this->validate();
|
||
|
||
// TODO: persist to settings storage (DB/Config)
|
||
// e.g. Settings::set('app.locale', $this->locale);
|
||
// Settings::set('app.timezone', $this->timezone);
|
||
// Settings::set('session.timeout', $this->session_timeout);
|
||
|
||
session()->flash('saved', true);
|
||
$this->dispatch('toast', body: 'Einstellungen gespeichert.');
|
||
}
|
||
|
||
public function render()
|
||
{
|
||
return view('livewire.ui.system.general-form');
|
||
}
|
||
}
|