/** * 🎓 OFFIZIELLES LEISTUNGS-ZERTIFIKAT 🎓 * ======================================= * Generiert ein ausdruckbares Abschlusszertifikat nach Abschluss eines Lehrpfads. */ (function () { function escapeHtml(text) { if (!text) return ""; return String(text) .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } window.zeigeZertifikatModal = async function (lehrpfadNummer) { const data = window.GAMIFICATION_DATA || { spieler_name: "Python-Entwickler", level: 1 }; const user = window.AUTH ? window.AUTH.user : null; const studentName = (user && user.name) ? user.name : (data.spieler_name || "Python-Entwickler"); const dateStr = new Date().toLocaleDateString("de-DE", { day: "2-digit", month: "long", year: "numeric" }); let titel = "Grundlagen der Python-Programmierung"; let moduleDesc = "10 Module: Zahlen & Rechnen, Datentypen, f-Strings, Kontrollstrukturen, Funktionen, Listen, Strings, Dictionaries, Sets & Comprehensions"; let trackKey = "lehrpfad_1"; if (lehrpfadNummer === 2 || lehrpfadNummer === "lehrpfad_2") { titel = "Einstieg in die Objektorientierung (OOP) & Entwickler-Tools"; moduleDesc = "9 Module: Klassen, Konstruktor __init__, self, Methoden, UML-Diagramme, VS Code, Git-Versionskontrolle, Komposition & Tamagotchi-Projekt"; trackKey = "lehrpfad_2"; } else if (lehrpfadNummer === 3 || lehrpfadNummer === "lehrpfad_3") { titel = "Fortgeschrittenes OOP, Softwarequalität & Desktop-GUIs"; moduleDesc = "10 Module: Speicher-Referenzen, Dunder-Methoden, TDD Unit Testing, Vererbung, Polymorphie, Exceptions, JSON-Persistenz, Tkinter GUIs, Container & Masterprojekt"; trackKey = "lehrpfad_3"; } else if (lehrpfadNummer === 4 || lehrpfadNummer === "lehrpfad_4") { titel = "Python Professional & Data Engineering"; moduleDesc = "6 Master-Module: Reguläre Ausdrücke (re), Functional Programming (lambda, zip, map), Generatoren & itertools, Dataclasses & Type Hints, Relationale DBs mit SQLite, REST-APIs & JSON-Feeds"; trackKey = "lehrpfad_4"; } else if (lehrpfadNummer === "js_grundlagen") { titel = "JavaScript Grundlagen, Kontrollfluss & ES6"; moduleDesc = "5 Module: Variablen (let/const), Verzweigungen & Schleifen, Funktionen & Closures, Arrays/Sets/Maps und Objekte & Destructuring"; trackKey = "js_grundlagen"; } else if (lehrpfadNummer === "js_oop") { titel = "Moderne ES6+ Datenmodelle, OOP & Robustes Debugging"; moduleDesc = "3 Module: ES6-Klassen & Vererbung, Reguläre Ausdrücke (RegExp) & strukturierte Fehlerbehandlung mit Error-Klassen"; trackKey = "js_oop"; } else if (lehrpfadNummer === "js_async") { titel = "Web-APIs, DOM-Manipulation & Asynchrones JavaScript"; moduleDesc = "4 Module: DOM Event-Delegation, Web Storage API (LocalStorage), Promises/Chaining und Async/Await mit Fetch"; trackKey = "js_async"; } else if (lehrpfadNummer === "js_master") { titel = "Master of Modern JavaScript & TypeScript Engineering"; moduleDesc = "Vollständiger Abschluss des JS/TS Curriculums (16 Module, ES-Module, TypeScript Interfaces/Generics & MVC Task-App)"; trackKey = "js_master"; } else if (lehrpfadNummer === "sql_grundlagen") { titel = "SQL & Relationale Datenbanken"; moduleDesc = "CREATE TABLE, Primary Keys, INSERT, SELECT, Filter mit WHERE und SQLite WebAssembly Abfragen"; trackKey = "sql_grundlagen"; } else if (lehrpfadNummer === "master") { titel = "Grandmaster of Software Engineering (Polyglot)"; moduleDesc = "Vollständiger Abschluss der plattformweiten Curricula (Python, JavaScript, TypeScript & SQL)"; trackKey = "master"; } let certUuid = "CERT-" + Math.random().toString(36).substring(2, 10).toUpperCase(); // Registriere Zertifikat im Backend falls angemeldet const token = localStorage.getItem("auth_token"); if (token) { try { const res = await fetch("/api/certificates/create", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` }, body: JSON.stringify({ track_id: trackKey, student_name: studentName }) }); const resData = await res.json(); if (resData.uuid) certUuid = resData.uuid; } catch (e) {} } const modal = document.createElement("div"); modal.className = "certificate-overlay"; modal.innerHTML = `
🎓 OFFIZIELLES ZERTIFIKAT 🎓

Erfolgreicher Abschluss

Hiermit wird bescheinigt, dass

${escapeHtml(studentName)}

den anspruchsvollen Lehrpfad

${escapeHtml(titel)}

${escapeHtml(moduleDesc)}

Erreichtes Level: Level ${data.level || 1} (${escapeHtml(data.titel || "Entwickler")})
Datum: ${dateStr}
Zertifikats-ID: ${escapeHtml(certUuid)}
🏆 EXZELLENZ-SIEGEL
`; document.body.appendChild(modal); }; // Alias für index.html Buttons window.openCertificate = window.zeigeZertifikatModal; })();