149 lines
8.4 KiB
PHP
149 lines
8.4 KiB
PHP
@extends('layouts.vending')
|
|
|
|
@section('title', 'Systemeinstellungen')
|
|
|
|
@section('content')
|
|
<div class="max-w-6xl mx-auto px-4">
|
|
<div class="mb-8">
|
|
<h1 class="text-3xl font-bold text-gray-900">Systemeinstellungen</h1>
|
|
<p class="text-gray-600 mt-2">Konfigurieren Sie die Einstellungen für Ihre Snackautomaten-Verwaltung</p>
|
|
</div>
|
|
|
|
@if(session('success'))
|
|
<div class="bg-green-50 border border-green-200 text-green-700 px-4 py-3 rounded mb-6">
|
|
{{ session('success') }}
|
|
</div>
|
|
@endif
|
|
|
|
<form action="{{ route('admin.settings.update') }}" method="POST" class="space-y-8">
|
|
@csrf
|
|
@method('PUT')
|
|
|
|
@foreach($settings as $groupName => $groupSettings)
|
|
<div class="bg-white shadow rounded-lg p-6">
|
|
<h2 class="text-xl font-semibold text-gray-900 mb-6 border-b border-gray-200 pb-2">
|
|
@switch($groupName)
|
|
@case('inventory')
|
|
📦 Bestandsverwaltung
|
|
@break
|
|
@case('display')
|
|
🖥️ Anzeige-Einstellungen
|
|
@break
|
|
@case('general')
|
|
⚙️ Allgemeine Einstellungen
|
|
@break
|
|
@case('lmiv')
|
|
📋 LMIV-Einstellungen
|
|
@break
|
|
@default
|
|
{{ ucfirst($groupName) }}
|
|
@endswitch
|
|
</h2>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
@foreach($groupSettings as $setting)
|
|
<div class="@if($setting->type === 'string' && strlen($setting->description) > 100) md:col-span-2 @endif">
|
|
@if($setting->type === 'boolean')
|
|
<!-- Checkbox für Boolean-Werte -->
|
|
<div class="flex items-start">
|
|
<div class="flex items-center h-5">
|
|
<input type="hidden" name="settings[{{ $setting->key }}]" value="0">
|
|
<input type="checkbox" name="settings[{{ $setting->key }}]" id="{{ $setting->key }}"
|
|
value="1" {{ $setting->value ? 'checked' : '' }}
|
|
class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
|
|
</div>
|
|
<div class="ml-3">
|
|
<label for="{{ $setting->key }}" class="text-sm font-medium text-gray-700">
|
|
{{ $setting->label }}
|
|
</label>
|
|
@if($setting->description)
|
|
<p class="text-sm text-gray-500 mt-1">{{ $setting->description }}</p>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@else
|
|
<!-- Input für andere Typen -->
|
|
<div>
|
|
<label for="{{ $setting->key }}" class="block text-sm font-medium text-gray-700 mb-2">
|
|
{{ $setting->label }}
|
|
@if($setting->type === 'integer')
|
|
<span class="text-gray-400">(Zahl)</span>
|
|
@endif
|
|
</label>
|
|
|
|
@if($setting->type === 'integer')
|
|
<input type="number" name="settings[{{ $setting->key }}]" id="{{ $setting->key }}"
|
|
value="{{ $setting->value }}" min="0"
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
|
|
@elseif(strlen($setting->description) > 100)
|
|
<textarea name="settings[{{ $setting->key }}]" id="{{ $setting->key }}" rows="3"
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">{{ $setting->value }}</textarea>
|
|
@else
|
|
<input type="text" name="settings[{{ $setting->key }}]" id="{{ $setting->key }}"
|
|
value="{{ $setting->value }}"
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
|
|
@endif
|
|
|
|
@if($setting->description)
|
|
<p class="text-sm text-gray-500 mt-1">{{ $setting->description }}</p>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
|
|
<!-- Warnung und Speichern -->
|
|
<div class="bg-yellow-50 border border-yellow-200 rounded-lg p-6">
|
|
<div class="flex">
|
|
<div class="flex-shrink-0">
|
|
<svg class="h-5 w-5 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
|
|
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path>
|
|
</svg>
|
|
</div>
|
|
<div class="ml-3">
|
|
<h3 class="text-sm font-medium text-yellow-800">Wichtiger Hinweis</h3>
|
|
<div class="mt-2 text-sm text-yellow-700">
|
|
<p>Änderungen an diesen Einstellungen wirken sich auf die gesamte Anwendung aus. Besonders die Deaktivierung der Bestandsverwaltung entfernt alle Bestandsanzeigen aus der öffentlichen und Admin-Ansicht.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Aktionsbuttons -->
|
|
<div class="flex justify-end space-x-4 bg-gray-50 px-6 py-4 rounded-lg">
|
|
<a href="{{ route('admin.dashboard') }}"
|
|
class="inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
|
|
Abbrechen
|
|
</a>
|
|
<button type="submit"
|
|
class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
|
|
Einstellungen speichern
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
<!-- Hilfe-Sektion -->
|
|
<div class="mt-8 bg-blue-50 border border-blue-200 rounded-lg p-6">
|
|
<h3 class="text-lg font-semibold text-blue-900 mb-4">Hilfe zu den Einstellungen</h3>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-blue-800">
|
|
<div>
|
|
<h4 class="font-semibold mb-2">📦 Bestandsverwaltung</h4>
|
|
<ul class="space-y-1 text-blue-700">
|
|
<li>• <strong>Bestandsverwaltung aktivieren:</strong> Hauptschalter für alle bestandsbezogenen Funktionen</li>
|
|
<li>• <strong>Warnschwelle:</strong> Ab dieser Anzahl wird ein Slot als "niedrig" markiert</li>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<h4 class="font-semibold mb-2">🖥️ Anzeige-Einstellungen</h4>
|
|
<ul class="space-y-1 text-blue-700">
|
|
<li>• <strong>Bestand öffentlich anzeigen:</strong> Zeigt Kunden die verfügbare Menge</li>
|
|
<li>• <strong>Ausverkaufte Produkte:</strong> Bestimmt ob leere Slots sichtbar bleiben</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection |