From 9986f69e9e46eb820fa8561a1d0023936ad50b41 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 5 May 2026 15:14:45 +0000 Subject: [PATCH] feat: Fragen nach Fach getrennt mit Tab-Navigation --- .../Controllers/Admin/QuestionController.php | 17 ++-- .../views/admin/questions/create.blade.php | 4 +- .../views/admin/questions/edit.blade.php | 2 +- .../views/admin/questions/index.blade.php | 80 +++++++++++++------ 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/Admin/QuestionController.php b/app/Http/Controllers/Admin/QuestionController.php index c4c530e..3b89b18 100644 --- a/app/Http/Controllers/Admin/QuestionController.php +++ b/app/Http/Controllers/Admin/QuestionController.php @@ -8,15 +8,16 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class QuestionController extends Controller { public function index(Request $r) { - $subjects = Subject::all(); - $query = Question::with('subject')->latest(); - if ($r->filled('subject')) $query->where('subject_id', $r->subject); - $questions = $query->paginate(20)->withQueryString(); - return view('admin.questions.index', compact('questions','subjects')); + $subjects = Subject::withCount(['questions as total', 'activeQuestions as active'])->get(); + $activeSubject = $subjects->firstWhere('id', $r->subject) ?? $subjects->first(); + $questions = Question::where('subject_id', $activeSubject->id) + ->latest()->paginate(25)->withQueryString(); + return view('admin.questions.index', compact('questions','subjects','activeSubject')); } - public function create() { - $subjects = Subject::all(); - return view('admin.questions.create', compact('subjects')); + public function create(Request $r) { + $subjects = Subject::all(); + $activeSubject = $subjects->firstWhere('id', $r->subject) ?? $subjects->first(); + return view('admin.questions.create', compact('subjects','activeSubject')); } public function store(Request $r) { $r->validate([ diff --git a/resources/views/admin/questions/create.blade.php b/resources/views/admin/questions/create.blade.php index 84e39fd..67631c0 100644 --- a/resources/views/admin/questions/create.blade.php +++ b/resources/views/admin/questions/create.blade.php @@ -2,7 +2,7 @@ @section('title','Neue Frage') @section('content')
- ← Zurück + ← Zurück

Neue Frage erstellen

@@ -11,7 +11,7 @@
diff --git a/resources/views/admin/questions/edit.blade.php b/resources/views/admin/questions/edit.blade.php index f5e14c6..486e141 100644 --- a/resources/views/admin/questions/edit.blade.php +++ b/resources/views/admin/questions/edit.blade.php @@ -2,7 +2,7 @@ @section('title','Frage bearbeiten') @section('content')
- ← Zurück + ← Zurück

Frage bearbeiten

diff --git a/resources/views/admin/questions/index.blade.php b/resources/views/admin/questions/index.blade.php index 23b7aec..20b23e5 100644 --- a/resources/views/admin/questions/index.blade.php +++ b/resources/views/admin/questions/index.blade.php @@ -1,33 +1,54 @@ @extends('layouts.admin') @section('title','Fragen') @section('content') -
- - - - + +{{-- Subject Tabs --}} +
+ @foreach($subjects as $s) + + {{ $s->icon }} + {{ $s->name }} + + {{ $s->total }} + + + @endforeach +
+ +{{-- Toolbar for active subject --}} +
+

+ {{ $activeSubject->icon }} {{ $activeSubject->name }} + ({{ $questions->total() }} Fragen) +

- {{-- Export --}} - - ⬇ Export JSON + + ⬇ Export - {{-- Import trigger --}} - + Neue Frage + + + Neue Frage +
{{-- Import panel --}}
-

Fragen importieren

-

JSON-Datei im gleichen Format wie der Export. Bestehende Fragen bleiben erhalten.

+

{{ $activeSubject->name }}-Fragen importieren

+

+ Alle bestehenden {{ $activeSubject->name }}-Fragen werden durch den Import ersetzt. + Andere Fächer bleiben unberührt. +

@csrf
+ +{{-- Questions table --}}
- - + @forelse($questions as $q) - - + - + @empty - + + + @endforelse
FrageFach SchwierigkeitAktiv
{{ $q->question_text }}{{ $q->subject->icon }} {{ $q->subject->name }} + {{ $q->question_text }} + {{ $q->difficultyStars() }}{{ $q->active ? '✅' : '⏸️' }} Bearbeiten - + @csrf @method('DELETE')
Keine Fragen vorhanden.
+ Noch keine Fragen für {{ $activeSubject->name }}. + Erste Frage erstellen → +
{{ $questions->links() }}
+ @endsection