feat(vocab): implement user vocab lesson progress reset functionality
All checks were successful
Deploy to production / deploy (push) Successful in 2m59s

- Added `resetUserVocabLessonProgress` method in `AdminController` to allow admins to reset a user's progress for a specific vocab lesson.
- Introduced corresponding route in `adminRouter` for the new reset functionality.
- Enhanced `VocabService` with methods to purge lesson progress for users, ensuring that only the specified lesson's progress is affected.
- Updated UI components in `UsersView` to facilitate the selection of courses and lessons for resetting progress, including confirmation dialogs and loading states.
- Added localization support for the new reset functionality across multiple languages.
- Implemented reset functionality in `VocabLessonView` for users to reset their own lesson progress.
This commit is contained in:
Torsten Schulz (local)
2026-04-02 08:25:56 +02:00
parent 13534498fa
commit c3b2c60362
22 changed files with 517 additions and 24 deletions

View File

@@ -48,6 +48,22 @@ const FAMILY_WORDS = {
it: 'sorella maggiore',
pt: 'irmã mais velha'
},
'jüngerer Bruder': {
de: 'jüngerer Bruder',
en: 'younger brother',
es: 'hermano menor',
fr: 'frère cadet',
it: 'fratello minore',
pt: 'irmão mais novo'
},
'jüngere Schwester': {
de: 'jüngere Schwester',
en: 'younger sister',
es: 'hermana menor',
fr: 'sœur cadette',
it: 'sorella minore',
pt: 'irmã mais nova'
},
Großmutter: {
de: 'Großmutter',
en: 'Grandmother',
@@ -72,6 +88,8 @@ const BISAYA_TRANSLATIONS = {
'Vater': 'Tatay',
'älterer Bruder': 'Kuya',
'ältere Schwester': 'Ate',
'jüngerer Bruder': 'Dodong',
'jüngere Schwester': 'Inday',
'Großmutter': 'Lola',
'Großvater': 'Lolo'
};
@@ -98,7 +116,7 @@ function createFamilyWordsExercises(nativeLanguageName) {
// Multiple Choice Übungen für jedes Familienwort
const familyWords = Object.keys(FAMILY_WORDS);
const bisayaWords = ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Lola', 'Lolo'];
const bisayaWords = ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Dodong', 'Inday', 'Lola', 'Lolo'];
familyWords.forEach((key, index) => {
const nativeWord = FAMILY_WORDS[key][langCode];