feat: Fix Forbidden 403 errors, add notebook split view (text+handwriting), German curriculum templates, role-based navigation

- Fix attendance API: students/parents can now view their own attendance records
- Fix competitions API: all authenticated users can view competitions
- Add notebook split view: text editor + drawing canvas side by side
- Add resizable divider for split view with mouse drag support
- Add 3 new German curriculum templates: Grundschule, Geschichte, Religion/Ethik
- Enhance existing templates with more detailed content
- Fix role comparisons in competitions-view (uppercase role names)
- Add Resources and Settings to student navigation
- Add Grading, Attendance, Competitions to parent navigation
- Add i18n keys for new features (DE + EN)
This commit is contained in:
Mustafa Cetin committed 2026-07-29 15:05:07 +00:00
1 parent 8e7116e57d
commit 86e4b504e4
7 files changed
+338 -35

No files matched your search

+22
View File
@@ -1934,6 +1934,11 @@ const de: TranslationDict = {
'notebooks.drawing_mode': 'Zeichnungsmodus',
'notebooks.drawing_mode_toggle': 'Zeichnen',
'notebooks.drawing_mode_exit': 'Zurück zum Text',
'notebooks.view_text_only': 'Nur Text',
'notebooks.view_split': 'Text + Handschrift',
'notebooks.view_drawing_only': 'Nur Zeichnung',
'notebooks.handwriting_panel': 'Handschrift-Panel',
'notebooks.finger_stylus_hint': 'Finger oder Stift',
'notebooks.drawing_placeholder': 'Zeichnungsbereich — wird in einer separaten Komponente integriert',
'notebooks.back_to_library': 'Zurück zur Bibliothek',
'notebooks.open_notebook': 'Heft öffnen',
@@ -2077,6 +2082,12 @@ const de: TranslationDict = {
'notebooks.template_art_desc': 'Blanko-Heft zum Zeichnen',
'notebooks.template_music_desc': 'Musikheft zum Komponieren',
'notebooks.template_science_desc': 'Kariertes Heft fuer Experimente',
'notebooks.template_grundschule': 'Grundschule',
'notebooks.template_grundschule_desc': 'Linertes Heft fuer die Grundschule',
'notebooks.template_history': 'Geschichte',
'notebooks.template_history_desc': 'Geschichtsheft mit Zeitstrahl und Quellenanalyse',
'notebooks.template_religion': 'Religion / Ethik',
'notebooks.template_religion_desc': 'Heft fuer Religion und Ethik',
'notebooks.tab_all': 'Meine Hefte',
'notebooks.owner': 'Von',
@@ -5421,6 +5432,11 @@ const en: TranslationDict = {
'notebooks.drawing_mode': 'Drawing Mode',
'notebooks.drawing_mode_toggle': 'Draw',
'notebooks.drawing_mode_exit': 'Back to Text',
'notebooks.view_text_only': 'Text Only',
'notebooks.view_split': 'Text + Handwriting',
'notebooks.view_drawing_only': 'Drawing Only',
'notebooks.handwriting_panel': 'Handwriting Panel',
'notebooks.finger_stylus_hint': 'Finger or stylus',
'notebooks.drawing_placeholder': 'Drawing area — will be integrated in a separate component',
'notebooks.back_to_library': 'Back to Library',
'notebooks.open_notebook': 'Open Notebook',
@@ -5564,6 +5580,12 @@ const en: TranslationDict = {
'notebooks.template_art_desc': 'Blank notebook for drawing',
'notebooks.template_music_desc': 'Music notebook for composition',
'notebooks.template_science_desc': 'Grid notebook for experiments',
'notebooks.template_grundschule': 'Primary School',
'notebooks.template_grundschule_desc': 'Lined notebook for primary school',
'notebooks.template_history': 'History',
'notebooks.template_history_desc': 'History notebook with timeline and source analysis',
'notebooks.template_religion': 'Religion / Ethics',
'notebooks.template_religion_desc': 'Notebook for religion and ethics',
'notebooks.tab_all': 'My Notebooks',
'notebooks.owner': 'By',