/** * 🎓 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 === "bash_grundlagen") { titel = "Linux Terminal Mastery & Core Unix Tools"; moduleDesc = "4 Module: Navigation, Globbing, I/O Streams, Pipes & Redirection, Umgebungsvariablen, Dateirechte und Job Control"; trackKey = "bash_grundlagen"; } else if (lehrpfadNummer === "bash_scripting") { titel = "Professionelles Bash-Scripting & Text-Mining"; moduleDesc = "4 Module: Kontrollfluss, Assoziative Arrays, grep, sed, awk, jq und Unofficial Strict Mode (set -euo pipefail)"; trackKey = "bash_scripting"; } else if (lehrpfadNummer === "bash_performance") { titel = "High-Performance Bash, Parallelisierung & Netzwerke"; moduleDesc = "4 Module: Multithreading mit xargs -P & parallel, Prozess-Substitution, REST-Pipelines mit curl und Systemd Automation"; trackKey = "bash_performance"; } else if (lehrpfadNummer === "bash_master") { titel = "Master of Linux Shell & Cloud DevOps Engineering"; moduleDesc = "Vollständiger Abschluss des Linux Bash Curriculums (16 Module, Docker Lifecycle, CI/CD Pipelines, BATS Testing & DevOps Suite)"; trackKey = "bash_master"; } else if (lehrpfadNummer === "ps_grundlagen") { titel = "PowerShell 7+ Essentials & Objekt-Pipeline"; moduleDesc = "4 Module: Cmdlet-Architektur, .NET-Objekt-Pipeline, Where-Object Filterung, Select-Object Projektion und PSCustomObjects"; trackKey = "ps_grundlagen"; } else if (lehrpfadNummer === "ps_scripting") { titel = "PowerShell Scripting, Kontrollfluss & Error-Handling"; moduleDesc = "4 Module: Moderne PS7 Operatoren (Ternary/Null-Coalescing), Schleifen, Cmdlets mit [CmdletBinding()] und Try/Catch"; trackKey = "ps_scripting"; } else if (lehrpfadNummer === "ps_performance") { titel = "PowerShell Parallelisierung, REST-APIs & SecretManagement"; moduleDesc = "4 Module: ForEach-Object -Parallel, Start-ThreadJob, Invoke-RestMethod, JSON-Pipelines, PSDrives und SecretManagement"; trackKey = "ps_performance"; } else if (lehrpfadNummer === "ps_master") { titel = "Master of Modern PowerShell & Cloud Automation"; moduleDesc = "Vollständiger Abschluss des PowerShell Curriculums (16 Module, Modul-Manifeste .psd1, Pester v5 Testing & Cloud Ops Engine)"; trackKey = "ps_master"; } else if (lehrpfadNummer === "sql_grundlagen") { titel = "SQL Grundlagen & Relationale CRUD-Operationen"; moduleDesc = "4 Module: CREATE TABLE, Primary Keys, Datentypen, Constraints, INSERT, SELECT, UPDATE & DELETE"; trackKey = "sql_grundlagen"; } else if (lehrpfadNummer === "sql_joins") { titel = "Relationale Joins & Datenbank-Design"; moduleDesc = "4 Module: Foreign Keys, INNER/LEFT/RIGHT/FULL JOINs, Normalisierung (1NF bis 3NF) & n:m Junction Tables"; trackKey = "sql_joins"; } else if (lehrpfadNummer === "sql_analytics") { titel = "SQL Analytics, CTEs & Window Functions"; moduleDesc = "4 Module: GROUP BY, HAVING, Subqueries, Common Table Expressions (WITH ...) & Window Functions (ROW_NUMBER, OVER)"; trackKey = "sql_analytics"; } else if (lehrpfadNummer === "sql_master") { titel = "Master of SQL, Data Analytics & Database Engineering"; moduleDesc = "Vollständiger Abschluss des SQL Curriculums (16 Module, B-Tree Indizes, ACID Transaktionen, Views & Data Warehouse Master)"; trackKey = "sql_master"; } else if (lehrpfadNummer === "html_grundlagen") { titel = "Semantisches HTML5 & Barrierefreie Web-Struktur"; moduleDesc = "4 Module: HTML5 Semantik, Dokumentstruktur, Formulare, Validierung & Accessibility (A11y/ARIA)"; trackKey = "html_grundlagen"; } else if (lehrpfadNummer === "css_styling") { titel = "Modern CSS3 Styling & Box Model Engineering"; moduleDesc = "4 Module: Spezifität, Kaskade, CSS Box Model, Custom Properties (CSS-Variablen) & Responsive Typografie"; trackKey = "css_styling"; } else if (lehrpfadNummer === "css_responsive") { titel = "Modern CSS Layouts: Flexbox, Grid & Animationen"; moduleDesc = "4 Module: Flexbox 1D-Layouts, CSS Grid 2D-Matrix, Media Queries (@media) & Keyframe-Animationen"; trackKey = "css_responsive"; } else if (lehrpfadNummer === "html_css_master") { titel = "Master of Modern HTML5, CSS3 & Responsive UI Design"; moduleDesc = "Vollständiger Abschluss des HTML/CSS Curriculums (16 Module, BEM, Dark/Light Themes & SaaS Landingpage Master)"; trackKey = "html_css_master"; } else if (lehrpfadNummer === "go_grundlagen") { titel = "Go Syntax, Typensystem & Kontrollfluss"; moduleDesc = "4 Module: Variablen, Datentypen, Slices, Maps, Arrays, Schleifen und Verzweigungen"; trackKey = "go_grundlagen"; } else if (lehrpfadNummer === "go_oop") { titel = "Idiomatisches Go: Structs, Interfaces & Error Handling"; moduleDesc = "4 Module: Structs, Pointer-Receiver-Methoden, Interfaces (Duck Typing) & Explizites Error-Handling (if err != nil)"; trackKey = "go_oop"; } else if (lehrpfadNummer === "go_concurrency") { titel = "Go Concurrency: Goroutines, Channels & Synchronisation"; moduleDesc = "4 Module: Goroutines (go worker), Buffered Channels, select-Multiplexing, sync.WaitGroup & Mutexes"; trackKey = "go_concurrency"; } else if (lehrpfadNummer === "go_master") { titel = "Master of Go (Golang) Cloud Microservices & Systems Engineering"; moduleDesc = "Vollständiger Abschluss des Go Curriculums (16 Module, net/http REST APIs, Middleware, Testing & Cloud API Master)"; trackKey = "go_master"; } else if (lehrpfadNummer === "master") { titel = "Grandmaster of Software & Cloud Engineering (Polyglot)"; moduleDesc = "Vollständiger Abschluss aller plattformweiten Curricula (Python, JavaScript/TS, Linux Bash, PowerShell, SQL, HTML/CSS & Go)"; 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; })();