Add Quiz feature: 10-question quizzes with progressive scoring (max 40 pts)
- Quizzes table with questions, answer options, attempts, answers - Question types: multiple_choice, exclusion, true_false, free_text - Progressive scoring: [1,1,2,2,3,3,4,6,8,10] = max 40 per quiz - Alpine.js countdown timer per question with auto-submit on timeout - Admin: CRUD for quizzes + per-question editor, JSON export/import - Child: quiz overview with best scores, question view, result breakdown - Nav: Quiz link in child header and admin sidebar
This commit is contained in:
+14
-1
@@ -22,6 +22,14 @@ Route::middleware(['auth','admin'])->prefix('admin')->name('admin.')->group(func
|
||||
Route::resource('questions',Admin\QuestionController::class);
|
||||
Route::resource('rewards', Admin\RewardController::class)->except('show');
|
||||
Route::resource('reference', Admin\ReferenceController::class)->except('show');
|
||||
Route::get ('quizzes/{quiz}/export', [Admin\QuizController::class,'export'])->name('quizzes.export');
|
||||
Route::post('quizzes/import', [Admin\QuizController::class,'import'])->name('quizzes.import');
|
||||
Route::resource('quizzes', Admin\QuizController::class);
|
||||
Route::get ('quizzes/{quiz}/questions/create',[Admin\QuizQuestionController::class,'create'])->name('quizzes.questions.create');
|
||||
Route::post('quizzes/{quiz}/questions', [Admin\QuizQuestionController::class,'store']) ->name('quizzes.questions.store');
|
||||
Route::get ('quiz-questions/{question}/edit', [Admin\QuizQuestionController::class,'edit']) ->name('quiz-questions.edit');
|
||||
Route::put ('quiz-questions/{question}', [Admin\QuizQuestionController::class,'update']) ->name('quiz-questions.update');
|
||||
Route::delete('quiz-questions/{question}', [Admin\QuizQuestionController::class,'destroy'])->name('quiz-questions.destroy');
|
||||
Route::get ('redemptions', [Admin\RedemptionController::class,'index']) ->name('redemptions.index');
|
||||
Route::patch ('redemptions/{redemption}/approve', [Admin\RedemptionController::class,'approve'])->name('redemptions.approve');
|
||||
Route::patch ('redemptions/{redemption}/reject', [Admin\RedemptionController::class,'reject']) ->name('redemptions.reject');
|
||||
@@ -34,7 +42,12 @@ Route::middleware(['auth','child'])->group(function () {
|
||||
Route::post('lernen/{subject:slug}/antwort', [\App\Http\Controllers\Child\LearnController::class,'answer']) ->name('learn.answer');
|
||||
Route::get ('belohnungen', [\App\Http\Controllers\Child\RewardController::class,'index']) ->name('rewards.index');
|
||||
Route::post('belohnungen/{reward}/einloesen', [\App\Http\Controllers\Child\RewardController::class,'redeem']) ->name('rewards.redeem');
|
||||
Route::get ('erinnerung', [\App\Http\Controllers\Child\ReferenceController::class,'index'])->name('reference.index');
|
||||
Route::get ('quiz', [\App\Http\Controllers\Child\QuizController::class,'index']) ->name('quiz.index');
|
||||
Route::get ('quiz/versuch/{attempt}', [\App\Http\Controllers\Child\QuizController::class,'question'])->name('quiz.question');
|
||||
Route::post('quiz/versuch/{attempt}/antwort', [\App\Http\Controllers\Child\QuizController::class,'answer']) ->name('quiz.answer');
|
||||
Route::get ('quiz/ergebnis/{attempt}', [\App\Http\Controllers\Child\QuizController::class,'result']) ->name('quiz.result');
|
||||
Route::post('quiz/{quiz}/start', [\App\Http\Controllers\Child\QuizController::class,'start']) ->name('quiz.start');
|
||||
Route::get ('erinnerung', [\App\Http\Controllers\Child\ReferenceController::class,'index'])->name('reference.index');
|
||||
Route::get ('erinnerung/{reference:slug}', [\App\Http\Controllers\Child\ReferenceController::class,'show']) ->name('reference.show');
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user