feat(course): reset student course progress (#671)
* feat(course): add reset student course progress action Give course admins and tutors a destructive reset-progress flow on the student people detail page. The backend clears learner progress for one (courseId, memberId) pair in a single transaction while keeping the groupmember enrolled, and logs an audit summary. The dashboard shows a confirmation dialog with impact counts from analytics before deleting. Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com> * fix(i18n): add localized reset progress strings for all locales Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com> * fix(course): scope reset progress to course data only Stop deleting org-level community questions and answers during course progress reset. Fix course newsfeed deletion order so comments on a student's posts are removed before the posts themselves. Restrict reset to student members, move analytics loading to the person detail layout, and rename impact copy to course newsfeed only. Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com> * fix(course): address Greptile review on reset progress Make progressImpact opt-in via includeProgressImpact query param so analytics requests avoid extra DB work unless the reset dialog needs it. Count only student-authored course newsfeed posts and comments in the impact summary to avoid double-counting replies on the student's posts. Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>
This commit is contained in:
co-authored by
Rotimi Best
Cursor Agent
parent
e43d8a2444
commit
a695c97eda
@@ -242,6 +242,10 @@
|
||||
"unpinned": "Frigjort",
|
||||
"successfully": "Med succes",
|
||||
"feed_delete_success": "Feedet blev slettet"
|
||||
},
|
||||
"people": {
|
||||
"progress_reset": "Fremskridt nulstillet",
|
||||
"progress_reset_failed": "Kunne ikke nulstille fremskridt"
|
||||
}
|
||||
},
|
||||
"landing_page_settings": {
|
||||
@@ -1100,6 +1104,26 @@
|
||||
"no": "Nej",
|
||||
"yes": "Ja"
|
||||
},
|
||||
"reset_progress": {
|
||||
"button": "Nulstil fremskridt",
|
||||
"dialog": {
|
||||
"title": "Nulstil fremskridt for {studentName}?",
|
||||
"intro": "Dette sletter permanent denne elevs fremskridt i dette kursus. Eleven forbliver tilmeldt og kan starte forfra fra lektion 1.",
|
||||
"bullets": {
|
||||
"lessons": "Gennemførte lektioner — {completed} af {total}",
|
||||
"exercises": "Afleverede øvelser — {count} afleveringer",
|
||||
"comments": "Lektionskommentarer fra denne elev — {count}",
|
||||
"newsfeed": "Kursusnyhedsfeed-opslag og svar fra denne elev — {count}",
|
||||
"video_progress": "Videofremskridt — {count} lektioner sporet",
|
||||
"attendance": "Fremmødeposter — {count}",
|
||||
"certificate_yes": "Certificerings-/compliance-data — ja",
|
||||
"certificate_no": "Certificerings-/compliance-data — nej"
|
||||
},
|
||||
"warning": "Dette kan ikke fortrydes.",
|
||||
"cancel": "Annuller",
|
||||
"confirm": "Slet"
|
||||
}
|
||||
},
|
||||
"invite_modal": {
|
||||
"title": "Inviter folk",
|
||||
"invite": "Inviter undervisere",
|
||||
|
||||
Reference in New Issue
Block a user