# Studio JavaScript Modules Das monolithische studio.js (9.787 Zeilen) wurde in modulare ES6-Module aufgeteilt. ## Modul-Struktur ``` backend/frontend/static/js/ ├── studio.js # Original (noch nicht aktualisiert) └── modules/ ├── theme.js # Dark/Light Mode (105 Zeilen) ├── translations.js # Übersetzungen DE/EN (971 Zeilen) ├── i18n.js # Internationalisierung (250 Zeilen) ├── lightbox.js # Bildvorschau (234 Zeilen) ├── api-helpers.js # API-Utilities (360 Zeilen) ├── file-manager.js # Dateiverwaltung (614 Zeilen) ├── learning-units-module.js # Lerneinheiten (517 Zeilen) ├── mc-module.js # Multiple Choice (474 Zeilen) ├── cloze-module.js # Lückentext (430 Zeilen) ├── mindmap-module.js # Mindmap (223 Zeilen) └── qa-leitner-module.js # Q&A / Leitner (444 Zeilen) ``` ## Module-Übersicht ### theme.js - Dark/Light Mode Toggle - Speichert Präferenz in localStorage - Exports: `getCurrentTheme()`, `setTheme()`, `initThemeToggle()` ### translations.js - Übersetzungswörterbuch für DE/EN - Export: `translations` Objekt ### i18n.js - Internationalisierungsfunktionen - Exports: `t()`, `applyLanguage()`, `updateUITexts()` ### lightbox.js - Bildvorschau-Modal - Exports: `openLightbox()`, `closeLightbox()` ### api-helpers.js - API-Fetch mit Fehlerbehandlung - Status-Anzeige - Exports: `apiFetch()`, `setStatus()` ### file-manager.js - Arbeitsblatt-Upload und -Verwaltung - Eingang-Dateien laden - Exports: `loadEingangFiles()`, `renderEingangList()`, usw. ### learning-units-module.js - Lerneinheiten CRUD - Arbeitsblatt-Zuordnung - Exports: `loadLearningUnits()`, `addUnitFromForm()`, usw. ### mc-module.js - Multiple Choice Generierung - Quiz-Vorschau und Bewertung - Exports: `generateMcQuestions()`, `renderMcPreview()`, usw. ### cloze-module.js - Lückentext-Generierung - Interaktive Ausfüllung - Exports: `generateClozeTexts()`, `renderClozePreview()`, usw. ### mindmap-module.js - Mindmap-Generierung - SVG-Rendering - Exports: `generateMindmap()`, `renderMindmapPreview()`, usw. ### qa-leitner-module.js - Frage-Antwort-Generierung - Leitner-System Integration - Exports: `generateQaQuestions()`, `renderQaPreview()`, usw. ## Verwendung ```javascript // Als ES6 Modul importieren import { getCurrentTheme, setTheme, initThemeToggle } from './modules/theme.js'; import { t, applyLanguage } from './modules/i18n.js'; import { openLightbox, closeLightbox } from './modules/lightbox.js'; // ... // Theme initialisieren initThemeToggle(); // Übersetzung abrufen const label = t('btn_create'); ``` ## TODO Die Haupt-studio.js sollte aktualisiert werden, um diese Module zu importieren: ```javascript // In studio.js import * as Theme from './modules/theme.js'; import * as I18n from './modules/i18n.js'; import * as FileManager from './modules/file-manager.js'; // ... ``` ## Statistiken | Komponente | Zeilen | |------------|--------| | theme.js | 105 | | translations.js | 971 | | i18n.js | 250 | | lightbox.js | 234 | | api-helpers.js | 360 | | file-manager.js | 614 | | learning-units-module.js | 517 | | mc-module.js | 474 | | cloze-module.js | 430 | | mindmap-module.js | 223 | | qa-leitner-module.js | 444 | | **Gesamt Module** | **4.622** | | studio.js (Original) | 9.787 | ## Remaining to Extract (~5,165 lines) The following sections remain in studio.js and should be extracted: | Section | Lines | Target Module | |---------|-------|---------------| | GDPR Functions | ~150 | gdpr-module.js | | Legal Modal | ~200 | legal-module.js | | Authentication | ~450 | auth-module.js | | Notifications | ~400 | notifications-module.js | | Word Upload | ~140 | upload-module.js | | Admin Documents | ~940 | admin/documents.js | | Cookie Categories Admin | ~130 | admin/cookies.js | | Admin Stats | ~170 | admin/stats.js | | User Data Export | ~55 | admin/export.js | | DSR Management | ~450 | admin/dsr.js | | DSMS Functions | ~520 | dsms-module.js | | Email Templates | ~400 | admin/email-templates.js | | Communication Panel | ~2,140 | communication-module.js | ## Refactoring-Historie **03.02.2026**: Refactoring status documented - Existing modules cover ~47% of original studio.js (4,622 of 9,787 lines) - Remaining ~5,165 lines identified for future extraction - Build tooling (Webpack/Vite) recommended for ES6 module bundling **19.01.2026**: Module aus studio.js extrahiert: - Alle funktionalen Bereiche in separate ES6-Module aufgeteilt - Module verwenden Export/Import-Syntax - Original studio.js noch nicht aktualisiert (backward compatibility)