Add grade/Klasse system: assign class levels to users, questions, and quizzes
- users.grade: set per child in admin (Klasse 1–10) - quizzes.grade, questions.grade: optional target class (null = all) - Children only see content matching their grade or without grade set - Admin views show grade badge in user list, quiz list, questions list - Quiz create/edit and user create/edit have Klasse dropdown
This commit is contained in:
@@ -21,6 +21,15 @@
|
||||
<label class="block text-sm font-medium text-slate-700 mb-1">Beschreibung (optional)</label>
|
||||
<textarea name="description" rows="2" class="w-full border border-slate-300 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-violet-500 outline-none">{{ old('description') }}</textarea>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-slate-700 mb-1">Zielklasse <span class="text-slate-400 font-normal">(leer = für alle Kinder)</span></label>
|
||||
<select name="grade" class="w-full border border-slate-300 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-violet-500 outline-none">
|
||||
<option value="">Alle Klassen</option>
|
||||
@for($g=1;$g<=10;$g++)
|
||||
<option value="{{ $g }}" {{ old('grade','')==$g?'selected':'' }}>Klasse {{ $g }}</option>
|
||||
@endfor
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="w-full bg-violet-600 hover:bg-violet-700 text-white py-2 rounded-lg font-medium text-sm">Erstellen & Fragen hinzufügen →</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -25,6 +25,15 @@
|
||||
<label class="block text-sm font-medium text-slate-700 mb-1">Beschreibung</label>
|
||||
<textarea name="description" rows="2" class="w-full border border-slate-300 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-violet-500 outline-none">{{ $quiz->description }}</textarea>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-slate-700 mb-1">Zielklasse <span class="text-slate-400 font-normal">(leer = für alle Kinder)</span></label>
|
||||
<select name="grade" class="w-full border border-slate-300 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-violet-500 outline-none">
|
||||
<option value="">Alle Klassen</option>
|
||||
@for($g=1;$g<=10;$g++)
|
||||
<option value="{{ $g }}" {{ old('grade',$quiz->grade)==$g?'selected':'' }}>Klasse {{ $g }}</option>
|
||||
@endfor
|
||||
</select>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<input type="checkbox" name="active" id="active" value="1" {{ $quiz->active?'checked':'' }} class="w-4 h-4 text-violet-600">
|
||||
<label for="active" class="text-sm text-slate-700">Quiz aktiv (für Kinder sichtbar)</label>
|
||||
|
||||
@@ -36,7 +36,9 @@
|
||||
@forelse($quizzes as $quiz)
|
||||
<tr class="hover:bg-slate-50">
|
||||
<td class="px-4 py-3 text-slate-600">{{ $quiz->subject->icon }} {{ $quiz->subject->name }}</td>
|
||||
<td class="px-4 py-3 font-medium text-slate-800">{{ $quiz->title }}</td>
|
||||
<td class="px-4 py-3 font-medium text-slate-800">{{ $quiz->title }}
|
||||
@if($quiz->grade)<span class="ml-2 text-xs bg-indigo-100 text-indigo-700 px-2 py-0.5 rounded-full">Kl.{{ $quiz->grade }}</span>@endif
|
||||
</td>
|
||||
<td class="px-4 py-3 text-center">
|
||||
<span class="{{ $quiz->questions_count < 10 ? 'text-amber-600' : 'text-green-600' }} font-medium">
|
||||
{{ $quiz->questions_count }}/10
|
||||
|
||||
Reference in New Issue
Block a user