Round 11: DrawingCanvas Integration, Notebook Versioning, Student Auth, Parent Portal, Calendar Recurring, Grade PDF, Data Import/Export

This commit is contained in:
Mustafa Cetin committed 2026-07-29 09:15:59 +00:00
1 parent b90ad85b91
commit c3d36aac67
22 files changed
+3984 -314

No files matched your search

+206
View File
@@ -1767,6 +1767,8 @@ const de: TranslationDict = {
'drawing.bg_grid': 'Kariert',
'drawing.bg_dotted': 'Gepunktet',
'drawing.guide_mode': 'Hilfslinien',
'drawing.zoom_in': 'Vergrößern',
'drawing.zoom_out': 'Verkleinern',
'drawing.guide_shapes': 'Formvorlagen',
'drawing.guide_off': 'Aus',
'drawing.guide_basic': 'Grundformen',
@@ -1927,6 +1929,23 @@ const de: TranslationDict = {
'notebooks.open_drawing': 'Zeichnung öffnen',
'notebooks.switch_to_mixed': 'Text + Zeichnung',
// Version History
'notebooks.version_history': 'Versionsgeschichte',
'notebooks.version_history_title': 'Versionsgeschichte',
'notebooks.version_number': 'Version',
'notebooks.version_current': 'Aktuell',
'notebooks.version_preview': 'Vorschau',
'notebooks.version_restore': 'Version wiederherstellen',
'notebooks.version_restore_confirm': 'Version wiederherstellen?',
'notebooks.version_restore_desc': 'Der aktuelle Inhalt wird als neue Version gespeichert, und die ausgewählte Version wird wiederhergestellt.',
'notebooks.version_restored': 'Version wiederhergestellt',
'notebooks.version_no_history': 'Keine Versionsgeschichte vorhanden',
'notebooks.version_edited_by': 'Bearbeitet von',
'notebooks.version_auto_save': 'Automatisch gespeichert',
'notebooks.version_summary': 'Beschreibung',
'notebooks.version_created': 'Erstellt',
'notebooks.view_drawing': 'Zeichnung anzeigen',
// PDF Export
'notebooks.export_pdf': 'PDF exportieren',
'notebooks.export_error': 'Fehler beim Exportieren. Bitte Popups erlauben.',
@@ -2022,6 +2041,7 @@ const de: TranslationDict = {
'nav.student_notebooks': 'Meine Hefte',
'nav.student_attendance': 'Meine Anwesenheit',
'role.student': 'Schueler',
'role.parent': 'Elternteil',
// Calendar (enhanced - Task 4)
'calendar.new_event': 'Neues Ereignis',
@@ -2043,6 +2063,40 @@ const de: TranslationDict = {
'calendar.event_create_error': 'Fehler beim Erstellen des Ereignisses',
'calendar.event_update_error': 'Fehler beim Aktualisieren des Ereignisses',
'calendar.event_delete_error': 'Fehler beim Löschen des Ereignisses',
'calendar.recurring': 'Wiederkehrend',
'calendar.repeat_none': 'Nicht wiederkehrend',
'calendar.repeat_daily': 'Täglich',
'calendar.repeat_weekly': 'Wöchentlich',
'calendar.repeat_monthly': 'Monatlich',
'calendar.repeat_yearly': 'Jährlich',
'calendar.repeat_end': 'Endet',
'calendar.repeat_end_never': 'Nie',
'calendar.repeat_end_on': 'Am Datum',
'calendar.repeat_end_after': 'Nach {count} Wiederholungen',
'calendar.repeat_interval': 'Intervall: {interval}',
'calendar.repeat_weekdays': 'Wochentage',
'calendar.edit_series': 'Serien bearbeiten',
'calendar.edit_instance': 'Einzelnes Ereignis bearbeiten',
'reports.generate_pdf': 'PDF-Bericht erstellen',
'reports.template_short': 'Kurzbericht',
'reports.template_full': 'Vollständiger Bericht',
'reports.template_custom': 'Individuell',
'reports.template': 'Berichtsvorlage',
'reports.batch_generate': 'Für gesamte Klasse erstellen',
'reports.download_history': 'Download-Historie',
'import.title': 'Datenimport',
'import.csv_upload': 'CSV-Datei hochladen',
'import.format_preview': 'Formatvoransicht',
'import.progress': 'Importfortschritt',
'import.summary': 'Importübersicht',
'import.success': 'Erfolgreich importiert',
'import.errors': 'Importfehler',
'import.sample_csv': 'Beispiel-CSV herunterladen',
'export.students': 'Schüler exportieren',
'export.assessments': 'Bewertungen exportieren',
'export.grades': 'Noten exportieren',
'export.attendance': 'Anwesenheit exportieren',
'export.progress': 'Fortschritt exportieren',
// Dashboard (enhanced - Task 4)
'dashboard.new_assessment': 'Neue Bewertung',
@@ -2057,6 +2111,55 @@ const de: TranslationDict = {
// Student (enhanced - Task 4)
'student.shared_with_me': 'Mit mir geteilt',
// Student Login & Parent Portal (Task 6)
'auth.student_login': 'Schüler-Login',
'auth.parent_login': 'Eltern-Login',
'auth.create_student_account': 'Schülerkonto erstellen',
'auth.bulk_create': 'Massenimport',
'auth.school_id': 'Schul-ID',
'auth.forgot_password': 'Passwort vergessen',
'auth.student_welcome': 'Willkommen, Schüler',
'auth.parent_welcome': 'Willkommen, Eltern',
'auth.login_as_student': 'Als Schüler anmelden',
'auth.login_as_parent': 'Als Elternteil anmelden',
'auth.student_login_desc': 'Mit Schul-ID oder E-Mail anmelden',
'auth.parent_login_desc': 'Mit E-Mail und Passwort anmelden',
'auth.default_password_set': 'Standardpasswort gesetzt',
'auth.bulk_accounts_created': 'Schülerkonten erstellt',
'parent.my_children': 'Meine Kinder',
'parent.messages': 'Nachrichten',
'parent.progress': 'Fortschritt',
'parent.attendance': 'Anwesenheit',
'parent.relationship': 'Beziehung',
'parent.father': 'Vater',
'parent.mother': 'Mutter',
'parent.guardian': 'Erziehungsberechtigte(r)',
'parent.dashboard_title': 'Eltern-Dashboard',
'parent.welcome_back': 'Willkommen zurück',
'parent.recent_progress': 'Letzter Fortschritt',
'parent.upcoming_assessments': 'Anstehende Überprüfungen',
'parent.messages_from_teachers': 'Nachrichten von Lehrern',
'parent.attendance_summary': 'Anwesenheitsübersicht',
'parent.no_children': 'Keine Kinder verknüpft',
'parent.no_children_desc': 'Es sind noch keine Schüler mit Ihrem Konto verknüpft.',
'parent.link_student': 'Schüler verknüpfen',
'parent.add_link': 'Verknüpfung hinzufügen',
'parent.remove_link': 'Verknüpfung entfernen',
'parent.select_student': 'Schüler auswählen',
'parent.select_relationship': 'Beziehung auswählen',
'parent.view_progress': 'Fortschritt anzeigen',
'parent.view_attendance': 'Anwesenheit anzeigen',
'parent.no_messages': 'Keine Nachrichten',
'parent.no_assessments': 'Keine anstehenden Überprüfungen',
'parent.child_progress_desc': 'Fortschritt der letzten 30 Tage',
'settings.create_student_account': 'Schülerkonto erstellen',
'settings.bulk_create_students': 'Schülerkonten-Massenimport',
'settings.student_account_created': 'Schülerkonto wurde erstellt',
'settings.bulk_accounts_created': 'Schülerkonten wurden erstellt',
'settings.default_password': 'Standardpasswort',
'settings.generate_email': 'E-Mail automatisch generieren',
'settings.link_student': 'Mit Schüler verknüpfen',
};
const en: TranslationDict = {
@@ -3823,6 +3926,8 @@ const en: TranslationDict = {
'drawing.bg_grid': 'Grid',
'drawing.bg_dotted': 'Dotted',
'drawing.guide_mode': 'Guide Mode',
'drawing.zoom_in': 'Zoom In',
'drawing.zoom_out': 'Zoom Out',
'drawing.guide_shapes': 'Shape Templates',
'drawing.guide_off': 'Off',
'drawing.guide_basic': 'Basic Shapes',
@@ -3983,6 +4088,23 @@ const en: TranslationDict = {
'notebooks.open_drawing': 'Open drawing',
'notebooks.switch_to_mixed': 'Text + Drawing',
// Version History
'notebooks.version_history': 'Version History',
'notebooks.version_history_title': 'Version History',
'notebooks.version_number': 'Version',
'notebooks.version_current': 'Current',
'notebooks.version_preview': 'Preview',
'notebooks.version_restore': 'Restore version',
'notebooks.version_restore_confirm': 'Restore this version?',
'notebooks.version_restore_desc': 'The current content will be saved as a new version, and the selected version will be restored.',
'notebooks.version_restored': 'Version restored',
'notebooks.version_no_history': 'No version history available',
'notebooks.version_edited_by': 'Edited by',
'notebooks.version_auto_save': 'Auto-saved',
'notebooks.version_summary': 'Summary',
'notebooks.version_created': 'Created',
'notebooks.view_drawing': 'View drawing',
// PDF Export
'notebooks.export_pdf': 'Export PDF',
'notebooks.export_error': 'Export error. Please allow popups.',
@@ -4078,6 +4200,7 @@ const en: TranslationDict = {
'nav.student_notebooks': 'My Notebooks',
'nav.student_attendance': 'My Attendance',
'role.student': 'Student',
'role.parent': 'Parent',
// Calendar (enhanced - Task 4)
'calendar.new_event': 'New Event',
@@ -4099,6 +4222,40 @@ const en: TranslationDict = {
'calendar.event_create_error': 'Error creating event',
'calendar.event_update_error': 'Error updating event',
'calendar.event_delete_error': 'Error deleting event',
'calendar.recurring': 'Recurring',
'calendar.repeat_none': 'Does not repeat',
'calendar.repeat_daily': 'Daily',
'calendar.repeat_weekly': 'Weekly',
'calendar.repeat_monthly': 'Monthly',
'calendar.repeat_yearly': 'Yearly',
'calendar.repeat_end': 'Ends',
'calendar.repeat_end_never': 'Never',
'calendar.repeat_end_on': 'On date',
'calendar.repeat_end_after': 'After {count} occurrences',
'calendar.repeat_interval': 'Interval: {interval}',
'calendar.repeat_weekdays': 'Days of week',
'calendar.edit_series': 'Edit series',
'calendar.edit_instance': 'Edit this instance',
'reports.generate_pdf': 'Generate PDF Report',
'reports.template_short': 'Short Report',
'reports.template_full': 'Full Report',
'reports.template_custom': 'Custom',
'reports.template': 'Report Template',
'reports.batch_generate': 'Generate for entire class',
'reports.download_history': 'Download History',
'import.title': 'Data Import',
'import.csv_upload': 'Upload CSV File',
'import.format_preview': 'Format Preview',
'import.progress': 'Import Progress',
'import.summary': 'Import Summary',
'import.success': 'Successfully imported',
'import.errors': 'Import Errors',
'import.sample_csv': 'Download Sample CSV',
'export.students': 'Export Students',
'export.assessments': 'Export Assessments',
'export.grades': 'Export Grades',
'export.attendance': 'Export Attendance',
'export.progress': 'Export Progress',
// Dashboard (enhanced - Task 4)
'dashboard.new_assessment': 'New Assessment',
@@ -4113,6 +4270,55 @@ const en: TranslationDict = {
// Student (enhanced - Task 4)
'student.shared_with_me': 'Shared with me',
// Student Login & Parent Portal (Task 6)
'auth.student_login': 'Student Login',
'auth.parent_login': 'Parent Login',
'auth.create_student_account': 'Create Student Account',
'auth.bulk_create': 'Bulk Create',
'auth.school_id': 'School ID',
'auth.forgot_password': 'Forgot Password',
'auth.student_welcome': 'Welcome, Student',
'auth.parent_welcome': 'Welcome, Parent',
'auth.login_as_student': 'Login as Student',
'auth.login_as_parent': 'Login as Parent',
'auth.student_login_desc': 'Login with school ID or email',
'auth.parent_login_desc': 'Login with email and password',
'auth.default_password_set': 'Default password set',
'auth.bulk_accounts_created': 'Student accounts created',
'parent.my_children': 'My Children',
'parent.messages': 'Messages',
'parent.progress': 'Progress',
'parent.attendance': 'Attendance',
'parent.relationship': 'Relationship',
'parent.father': 'Father',
'parent.mother': 'Mother',
'parent.guardian': 'Guardian',
'parent.dashboard_title': 'Parent Dashboard',
'parent.welcome_back': 'Welcome back',
'parent.recent_progress': 'Recent Progress',
'parent.upcoming_assessments': 'Upcoming Assessments',
'parent.messages_from_teachers': 'Messages from Teachers',
'parent.attendance_summary': 'Attendance Summary',
'parent.no_children': 'No Children Linked',
'parent.no_children_desc': 'No students are linked to your account yet.',
'parent.link_student': 'Link Student',
'parent.add_link': 'Add Link',
'parent.remove_link': 'Remove Link',
'parent.select_student': 'Select Student',
'parent.select_relationship': 'Select Relationship',
'parent.view_progress': 'View Progress',
'parent.view_attendance': 'View Attendance',
'parent.no_messages': 'No Messages',
'parent.no_assessments': 'No Upcoming Assessments',
'parent.child_progress_desc': 'Progress over the last 30 days',
'settings.create_student_account': 'Create Student Account',
'settings.bulk_create_students': 'Bulk Create Student Accounts',
'settings.student_account_created': 'Student account created',
'settings.bulk_accounts_created': 'Student accounts created',
'settings.default_password': 'Default Password',
'settings.generate_email': 'Auto-generate Email',
'settings.link_student': 'Link to Student',
};
const translations: Record<string, TranslationDict> = { de, en };