feat: review open answers in the admin and pick a grader per quiz

- Do oceny admin screen (golem15.quizzes.reviews) over the open answers,
  with a read-only context partial, score and comment virtual fields saved
  through SetScore, confirm and regrade record actions, bulk confirm
- open question type, rubric and max_length in the question form; grader
  dropdown on the quiz form from the grader registry
- Review model with quiz, status and student filters
This commit is contained in:
Jakub Zych
2026-11-09 18:31:19 +01:00
parent 1ce1ebee16
commit 2ad4e8b1ec
20 changed files with 1244 additions and 9 deletions

View File

@@ -51,6 +51,8 @@ quizzes:
navigation_comment: Applies to tests only.
max_attempts: Attempt limit
max_attempts_comment: Tests only. Leave empty for no limit.
grader: Grading of open questions
grader_comment: "Manual: you grade every answer yourself. Installed plugins add other options."
questions:
title: Questions
question: Question
@@ -59,11 +61,16 @@ questions:
type: Type
type_single: Single choice
type_multiple: Multiple choice
type_open: Open question
type_self_check: Self-check (flashcard)
category: Category
points: Points
answer_text: Model answer
answer_text_comment: Revealed for self-check questions.
answer_text_comment: Revealed for self-check questions. For an open question it is the model answer.
rubric: Grading criteria (for the grader only)
rubric_comment: Only the grader sees it, never the student. Applies to open questions.
max_length: Max. answer length
max_length_comment: Characters; empty means 2000. Applies to open questions.
explanation: Explanation
answers:
title: Answers
@@ -81,3 +88,45 @@ attempts:
score_points: Points
max_points: Max points
score_percent: Score (%)
reviews:
title: To review
answer: Open answer
context: Answer
quiz: Quiz
question: Question
student: Student
text: Student's answer
max_length: Character limit
status: Status
status_pending: waiting for a grade
status_graded: to be verified
status_failed: grading failed
status_reviewed: verified
grader: Grader
grader_points: Grader's points
grader_feedback: Grader's feedback
grading_error: Grading error
grading_attempts: Grading attempts
points: Points
points_short: pts
graded_at: Graded
reviewed_at: Verified
model_answer: Model answer
rubric: Grading criteria
review_points: Points (final)
review_points_comment: From 0 to the question's points, in steps of 0.5.
review_comment: Comment to the student
review_comment_comment: The student sees it with their answer. Saving points replaces an earlier comment.
confirm: Confirm the grade
confirm_selected: Confirm selected
confirmed: Grade confirmed.
regrade: Grade again
regrade_confirm: The answer goes back to grading and loses the grader's current result.
regraded: The answer was sent to be graded again.
points_required: Enter the points to save a grade.
points_invalid: Points must be from 0 to the question's points, in steps of 0.5.
no_grader_score: This answer has no grader's score yet; enter the points yourself.
already_reviewed: This answer is already verified.
grader_manual: This quiz is graded manually; nothing can grade the answer again.
not_found: This answer was not found.
not_created: Open answers come from students; they cannot be added or deleted here.

View File

@@ -51,6 +51,8 @@ quizzes:
navigation_comment: Dotyczy tylko testów.
max_attempts: Limit podejść
max_attempts_comment: Tylko dla testów. Zostaw puste, aby nie ograniczać.
grader: Ocenianie pytań otwartych
grader_comment: "Ręcznie: każdą odpowiedź oceniasz sam. Inne opcje dodają zainstalowane wtyczki."
questions:
title: Pytania
question: Pytanie
@@ -60,10 +62,15 @@ questions:
type_single: Jednokrotny wybór
type_multiple: Wielokrotny wybór
type_self_check: Fiszka (samoocena)
type_open: Pytanie otwarte
category: Kategoria
points: Punkty
answer_text: Wzorcowa odpowiedź
answer_text_comment: Pokazywana w fiszkach po odsłonięciu.
answer_text_comment: Pokazywana w fiszkach po odsłonięciu. W pytaniu otwartym to odpowiedź wzorcowa.
rubric: Kryteria oceny (tylko dla oceniającego)
rubric_comment: Widzi je tylko oceniający, nigdy student. Dotyczy pytań otwartych.
max_length: Maks. długość odpowiedzi
max_length_comment: Liczba znaków; puste oznacza 2000. Dotyczy pytań otwartych.
explanation: Wyjaśnienie
answers:
title: Odpowiedzi
@@ -81,3 +88,45 @@ attempts:
score_points: Punkty
max_points: Maks. punktów
score_percent: Wynik (%)
reviews:
title: Do oceny
answer: Odpowiedź otwarta
context: Odpowiedź
quiz: Quiz
question: Pytanie
student: Student
text: Odpowiedź studenta
max_length: Limit znaków
status: Status
status_pending: czeka na ocenę
status_graded: do weryfikacji
status_failed: błąd oceniania
status_reviewed: zweryfikowano
grader: Oceniający
grader_points: Punkty oceniającego
grader_feedback: Uwagi oceniającego
grading_error: Błąd oceniania
grading_attempts: Próby oceny
points: Punkty
points_short: pkt
graded_at: Oceniono
reviewed_at: Zweryfikowano
model_answer: Odpowiedź wzorcowa
rubric: Kryteria oceny
review_points: Punkty (ostateczne)
review_points_comment: Od 0 do liczby punktów pytania, co 0,5.
review_comment: Komentarz dla studenta
review_comment_comment: Student zobaczy go przy swojej odpowiedzi. Zapisanie punktów zastępuje wcześniejszy komentarz.
confirm: Zatwierdź ocenę
confirm_selected: Zatwierdź zaznaczone
confirmed: Ocena zatwierdzona.
regrade: Oceń ponownie
regrade_confirm: Odpowiedź wróci do oceniania i straci obecny wynik oceniającego.
regraded: Odpowiedź wysłana do ponownej oceny.
points_required: Podaj punkty, aby zapisać ocenę.
points_invalid: Punkty muszą mieścić się w zakresie od 0 do liczby punktów pytania, co 0,5.
no_grader_score: Ta odpowiedź nie ma jeszcze wyniku oceniającego; wpisz punkty sam.
already_reviewed: Ta odpowiedź jest już zweryfikowana.
grader_manual: Ten quiz jest oceniany ręcznie; nie ma kto ocenić odpowiedzi ponownie.
not_found: Nie znaleziono tej odpowiedzi.
not_created: Odpowiedzi otwarte pochodzą od studentów; tutaj nie można ich dodawać ani usuwać.