Compare commits

...

3 commits

113 changed files with 271 additions and 184 deletions

View file

@ -438,7 +438,7 @@
</div>
</div>
<script src="assets/app_auth.js"></script>
<script src="assets/app_auth.js?v=2.1.0"></script>
<script>
let ALL_USERS = [];

View file

@ -50,29 +50,47 @@
user: getStoredUser(),
platformStatus: { maintenance: false, announcement: '', allow_registration: true },
getToken() {
if (!this.token) {
this.token = getStoredToken();
}
return this.token;
},
getUser() {
if (!this.user) {
this.user = getStoredUser();
}
return this.user;
},
isLoggedIn() {
return !!(this.token && this.user && !this.user.isGuest && this.user.email);
const token = this.getToken();
const user = this.getUser();
return !!(token && user && !user.isGuest && user.email);
},
isAdmin() {
return !!(this.isLoggedIn() && this.user && this.user.role === 'admin');
const user = this.getUser();
return !!(this.isLoggedIn() && user && user.role === 'admin');
},
setSession(token, user, rememberMe = false) {
isTeacher() {
const user = this.getUser();
return !!(this.isLoggedIn() && user && (user.role === 'teacher' || user.role === 'admin'));
},
setSession(token, user, rememberMe = true) {
this.token = token;
this.user = user;
if (rememberMe) {
try {
localStorage.setItem('auth_token', token);
localStorage.setItem('auth_user', JSON.stringify(user));
sessionStorage.removeItem('auth_token');
sessionStorage.removeItem('auth_user');
} else {
sessionStorage.setItem('auth_token', token);
sessionStorage.setItem('auth_user', JSON.stringify(user));
localStorage.removeItem('auth_token');
localStorage.removeItem('auth_user');
}
} catch (e) {}
this.updateUI();
this.handleMaintenanceDisplay();
},
@ -313,6 +331,7 @@
updateUI() {
const loggedIn = this.isLoggedIn();
const user = this.getUser();
// Topbar Elemente in index.html
const userSpan = document.getElementById('nav-auth-user');
@ -322,12 +341,18 @@
const teacherLink = document.getElementById('nav-teacher-link');
const heroPrimaryCta = document.getElementById('hero-primary-cta');
// Dashboard Links auf index.html / impressum / datenschutz
const navDashLink = document.getElementById('nav-dashboard-link');
const mobDashLink = document.getElementById('mobile-drawer-dash-link');
const landingBanner = document.getElementById('landing-logged-in-banner');
const landingUserName = document.getElementById('landing-user-name');
if (guestBtn) guestBtn.style.display = 'none'; // Gast-Button permanent ausblenden
if (loggedIn && this.user) {
if (loggedIn && user) {
if (userSpan) {
userSpan.style.display = 'inline-flex';
userSpan.innerHTML = `👤 ${escapeHtml(this.user.name || this.user.email)}`;
userSpan.innerHTML = `👤 ${escapeHtml(user.name || user.email)}`;
}
if (loginBtn) {
loginBtn.style.display = 'inline-flex';
@ -335,6 +360,7 @@
loginBtn.style.background = 'rgba(239, 68, 68, 0.15)';
loginBtn.style.color = '#f87171';
loginBtn.style.borderColor = 'rgba(239, 68, 68, 0.3)';
loginBtn.removeAttribute('onclick');
loginBtn.onclick = () => {
if (confirm('Möchtest du dich wirklich abmelden?')) {
this.logout();
@ -342,14 +368,18 @@
};
}
if (registerBtn) {
registerBtn.style.display = 'inline-flex';
registerBtn.innerHTML = '<span class="btn-text-desktop">💻 Zum Kurs-Dashboard</span><span class="btn-text-mobile">💻 Dashboard</span>';
registerBtn.style.background = '#10b981';
registerBtn.onclick = () => {
registerBtn.removeAttribute('onclick');
registerBtn.onclick = (e) => {
e.preventDefault();
window.location.href = 'dashboard.html';
};
}
if (heroPrimaryCta) {
heroPrimaryCta.innerHTML = '<span>▶ Zum Dashboard &amp; Kurse wählen &rarr;</span>';
heroPrimaryCta.removeAttribute('onclick');
heroPrimaryCta.onclick = (e) => {
e.preventDefault();
window.location.href = 'dashboard.html';
@ -360,11 +390,25 @@
document.querySelectorAll('.landing-cta-btn').forEach(btn => {
btn.innerHTML = '<span>▶ Zum Dashboard &amp; Kurse wählen &rarr;</span>';
btn.style.background = '#10b981';
btn.removeAttribute('onclick');
btn.onclick = (e) => {
e.preventDefault();
window.location.href = 'dashboard.html';
};
});
const footerLoginBtn = document.getElementById('footer-cta-login');
if (footerLoginBtn) footerLoginBtn.style.display = 'none';
// Banner und Dashboard-Links einblenden
if (landingBanner) {
landingBanner.style.display = 'flex';
if (landingUserName) {
landingUserName.innerText = user.name || user.email.split('@')[0];
}
}
if (navDashLink) navDashLink.style.display = 'inline-flex';
if (mobDashLink) mobDashLink.style.display = 'flex';
} else {
if (userSpan) userSpan.style.display = 'none';
if (loginBtn) {
@ -398,11 +442,18 @@
window.openAuthModal('register', { allowClose: true });
};
});
const footerLoginBtn = document.getElementById('footer-cta-login');
if (footerLoginBtn) footerLoginBtn.style.display = 'inline-flex';
if (landingBanner) landingBanner.style.display = 'none';
if (navDashLink) navDashLink.style.display = 'none';
if (mobDashLink) mobDashLink.style.display = 'none';
}
// 🔒 Strikter Rollen-Filter für Dozenten- und Admin-Funktionen
const isTeacherOrAdmin = loggedIn && this.user && (this.user.role === 'teacher' || this.user.role === 'admin');
const isAdmin = loggedIn && this.user && this.user.role === 'admin';
const isTeacherOrAdmin = loggedIn && user && (user.role === 'teacher' || user.role === 'admin');
const isAdmin = loggedIn && user && user.role === 'admin';
document.querySelectorAll('.teacher-only, #nav-teacher-link, #mobile-drawer-teacher-link, #footer-teacher-link').forEach(el => {
if (isTeacherOrAdmin) {
@ -446,6 +497,10 @@
// Auth Modal UI
window.openAuthModal = function (initialMode = 'login', options = {}) {
if (window.AUTH && window.AUTH.isLoggedIn()) {
window.location.href = 'dashboard.html';
return;
}
const allowClose = options.allowClose !== false;
let modal = document.getElementById('auth-modal-overlay');
if (modal) modal.remove();
@ -628,13 +683,8 @@
if (options.onSuccess) {
options.onSuccess(result.user);
} else {
window.AUTH.updateUI();
const p = window.location.pathname;
if (p.endsWith('index.html') || p === '/' || p.endsWith('/')) {
window.location.href = 'dashboard.html';
} else {
window.location.reload();
}
try { window.AUTH.updateUI(); } catch (e) {}
window.location.href = 'dashboard.html';
}
} else {
errorBox.innerText = result.error || 'Fehler bei der Authentifizierung';
@ -652,7 +702,11 @@
const params = new URLSearchParams(window.location.search);
const authParam = params.get('auth');
if (authParam === 'login' || authParam === 'register') {
window.openAuthModal(authParam, { allowClose: true });
if (!window.AUTH.isLoggedIn()) {
window.openAuthModal(authParam, { allowClose: true });
} else {
window.location.replace('dashboard.html');
}
}
});
})();

View file

@ -104,7 +104,7 @@
if (!window.AUTH) {
const authScript = document.createElement('script');
authScript.src = `${rootPrefix}assets/app_auth.js`;
authScript.src = `${rootPrefix}assets/app_auth.js?v=2.1.0`;
authScript.onload = () => proceed();
authScript.onerror = () => proceed();
document.head.appendChild(authScript);

View file

@ -630,7 +630,7 @@ class IhkExamEngine {
<div style="margin-top: 24px; display: flex; justify-content: flex-end; gap: 12px;">
<button class="ihk-btn ihk-btn-secondary" onclick="this.closest('[style*=\\'position: fixed\\']').remove()">Musterlösungen studieren</button>
<a href="../../../index.html" class="ihk-btn ihk-btn-success">Zurück zur Kursübersicht</a>
<a href="../../../dashboard.html" class="ihk-btn ihk-btn-success">Zurück zum Dashboard</a>
</div>
</div>
`;

View file

@ -137,9 +137,13 @@
if (window.RunnerRegistry) {
window.RunnerRegistry.register(HtmlCssAdapter);
window.RunnerRegistry.register({ ...HtmlCssAdapter, id: "html" });
} else {
document.addEventListener("DOMContentLoaded", () => {
if (window.RunnerRegistry) window.RunnerRegistry.register(HtmlCssAdapter);
if (window.RunnerRegistry) {
window.RunnerRegistry.register(HtmlCssAdapter);
window.RunnerRegistry.register({ ...HtmlCssAdapter, id: "html" });
}
});
}
})();

View file

@ -141,7 +141,7 @@ set +x # Schaltet Tracing wieder aus</code></pre>
<div style="margin-top: 25px; display: flex; gap: 12px; flex-wrap: wrap;">
<a href="../../../workspace.html?course=bash&track=track_2_skripting_und_textmining&chapter=08_robuste_skripte_und_debugging" class="btn" style="background: #10b981; color: #fff; font-weight: 700;">💻 In Web-IDE öffnen &rarr;</a>
<a href="../07_text_mining_grep_sed_awk_und_jq/index.html" class="btn btn-secondary">&larr; Zurück zu Bash 07</a>
<a href="../../../index.html#zertifikate" class="btn btn-secondary">🎓 Zur Kursübersicht &amp; Zertifikate &rarr;</a>
<a href="../../../index.html#zertifikate" class="btn btn-secondary">🎓 Zum Dashboard &amp; Zertifikate &rarr;</a>
</div>
</section>
</main>

View file

@ -112,7 +112,7 @@
<div style="margin-top: 25px; display: flex; gap: 12px; flex-wrap: wrap;">
<a href="../../../workspace.html?course=bash&track=track_4_cloud_devops_und_master&chapter=16_master_abschlussprojekt_devops_suite" class="btn" style="background: #eab308; color: #000; font-weight: 700;">💻 In Web-IDE öffnen &rarr;</a>
<a href="../15_bats_automatisiertes_unit_testing/index.html" class="btn btn-secondary">&larr; Zurück zu Bash 15</a>
<a href="../../../index.html" class="btn btn-secondary">🏠 Zurück zur Kursübersicht</a>
<a href="../../../dashboard.html" class="btn btn-secondary">🏠 Zurück zum Dashboard</a>
</div>
</section>
</main>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=04_structs_und_header_dateien" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=05_einstieg_cpp_und_namespaces" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=06_klassen_konstruktoren_und_raii" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=07_vererbung_und_virtuelle_methoden" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=08_operator_overloading" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=13_multithreading_mit_std_thread" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=14_dateiverarbeitung_und_streams" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=15_googletest_gtest_unittesting" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=cpp&chapter=16_master_abschlussprojekt_high_performance_engine" class="bg-cyan-500 hover:bg-cyan-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=02_kontrollfluss_und_pattern_matching" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=03_arrays_listen_und_collections" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=04_methoden_parameter_und_tuples" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=05_klassen_objekte_und_primary_constructors" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=06_records_und_immutability" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=07_vererbung_polymorphismus_und_abstract" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=08_interfaces_und_dependency_injection" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=13_json_serialisierung_und_dateien" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=14_events_delegates_und_lambdas" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=15_xunit_automatisiertes_unit_testing" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=csharp&chapter=16_master_abschlussprojekt_enterprise_order_engine" class="bg-purple-600 hover:bg-purple-700 text-white font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -87,7 +87,7 @@ defer fmt.Println("3. Dritter Defer")
<div style="margin-top: 25px; display: flex; gap: 12px; flex-wrap: wrap;">
<a href="../../../workspace.html?course=go&track=track_2_structs_interfaces&chapter=08_defer_panic_und_recover" class="btn" style="background: #00add8; color: #fff; font-weight: 700;">💻 In Web-IDE öffnen &rarr;</a>
<a href="../../../index.html" class="btn btn-secondary">Zurück zum Dashboard &rarr;</a>
<a href="../../../dashboard.html" class="btn btn-secondary">Zurück zum Dashboard &rarr;</a>
</div>
</section>
</main>

View file

@ -147,7 +147,7 @@
<div style="margin-top: 25px; display: flex; gap: 12px; flex-wrap: wrap;">
<a href="../../../workspace.html?course=go&track=track_4_microservices_master&chapter=16_master_abschlussprojekt_microservice" class="btn" style="background: #00add8; color: #fff; font-weight: 700;">💻 In Web-IDE öffnen &rarr;</a>
<a href="../15_unit_testing_und_benchmarks/index.html" class="btn btn-secondary">&larr; Zurück zu Go 15</a>
<a href="../../../index.html" class="btn" style="background: var(--success); color: white;">🏆 Go-Kurs abschließen &rarr;</a>
<a href="../../../dashboard.html" class="btn" style="background: var(--success); color: white;">🏆 Go-Kurs abschließen &rarr;</a>
</div>
</section>
</main>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 1</span>
</div>
@ -293,7 +293,7 @@ Qualitative Kriterien: 1. Know-how-Aufbau und Datensicherheit im eigenen Haus; 2
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<span></span>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../02_lf2_arbeitsplaetze_ausstatten/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 2</span>
</div>
@ -410,7 +410,7 @@ Burn-In-Risiko: IPS hat kein Burn-In; bei OLED besteht bei statischen Office-Ele
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../01_lf1_unternehmen_und_arbeitsplatz/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../03_lf3_clients_in_netzwerke_einbinden/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 3</span>
</div>
@ -501,7 +501,7 @@ RRSIG (Resource Record Signature): Enthält die kryptografische Signatur über e
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../02_lf2_arbeitsplaetze_ausstatten/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../04_lf4_schutzbedarfsanalyse_und_cybersicherheit/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 4</span>
</div>
@ -466,7 +466,7 @@ Drei Säulen: 1. Identitätsbasierte Zugriffskontrolle (starke MFA, Kontextprüf
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../03_lf3_clients_in_netzwerke_einbinden/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../05_lf5_software_zur_datenverwaltung/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 5</span>
</div>
@ -453,7 +453,7 @@ Syntax-Erklärung:
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../04_lf4_schutzbedarfsanalyse_und_cybersicherheit/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../06_lf6_cyber_physische_systeme_iot/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 6</span>
</div>
@ -195,7 +195,7 @@ Modbus TCP: Basiert auf Standard-Ethernet und TCP/IP (Standard-Port 502). Adress
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../05_lf5_software_zur_datenverwaltung/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../07_lf7_instandhaltung_und_fehlerdiagnose/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 7</span>
</div>
@ -183,7 +183,7 @@ CAT-Einstufung (Überspannungskategorien): CAT II gilt für Geräte an normalen
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../06_lf6_cyber_physische_systeme_iot/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../08_lf8_datenfluesse_und_schnittstellen/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 8</span>
</div>
@ -190,7 +190,7 @@ Webhook (Push-Prinzip): Der Client registriert eine Empfänger-URL beim Server.
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../07_lf7_instandhaltung_und_fehlerdiagnose/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../12_ap1_probepruefung_simulation/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">IHK AP1 Prüfungstraining</span>
</div>
@ -24,7 +24,7 @@
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="#" onclick="window.scrollTo({top: 0, behavior: 'smooth'}); return false;" class="text-sky-400 hover:underline">↑ Nach oben</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">IHK AP1 Prüfungstraining</span>
</div>
@ -35,7 +35,7 @@ ORDER BY anzahl_bestellungen DESC;</pre>
</div>
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="#" onclick="window.scrollTo({top: 0, behavior: 'smooth'}); return false;" class="text-sky-400 hover:underline">↑ Nach oben</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">IHK AP1 Prüfungstraining</span>
</div>
@ -24,7 +24,7 @@
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="#" onclick="window.scrollTo({top: 0, behavior: 'smooth'}); return false;" class="text-sky-400 hover:underline">↑ Nach oben</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Offizieller IHK 100-Punkte-Schlüssel</span>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 9 (FISI)</span>
</div>
@ -384,7 +384,7 @@ Roaming: WireGuard bindet Sitzungen an kryptografische Schlüssel und öffentlic
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<span></span>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../02_lf10_serverdienste_und_automation/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 10 (FISI)</span>
</div>
@ -250,7 +250,7 @@ Dynamic ARP Inspection (DAI): Verhindert ARP-Spoofing/Poisoning. Der Switch fän
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../01_lf9_netzwerke_und_dienste/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../03_lf11_speicher_und_hochverfuegbarkeit/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 11 (FISI)</span>
</div>
@ -275,7 +275,7 @@ Asynchrone Replikation: Der Schreibbefehl wird der Anwendung sofort nach dem Sch
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../02_lf10_serverdienste_und_automation/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../04_lf12_virtualisierung_und_cloud/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Lernfeld 12 (FISI)</span>
</div>
@ -251,7 +251,7 @@ Metriktypen:
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../03_lf11_speicher_und_hochverfuegbarkeit/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../05_wiso_arbeitsrecht_und_wirtschaft/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">WiSo Prüfungsfach</span>
</div>
@ -494,7 +494,7 @@ Zeichnung: Prokurist zeichnet mit "per procura" / "ppa. Vorname Nachname"; Handl
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../04_lf12_virtualisierung_und_cloud/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../06_betriebliche_projektarbeit_guide/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-success">Projektarbeit & Fachgespräch (50% der AP2)</span>
</div>
@ -51,7 +51,7 @@
<div class="mt-8 pt-6 border-t border-slate-700 flex justify-between items-center">
<a href="../05_wiso_arbeitsrecht_und_wirtschaft/index.html" class="text-sky-400 hover:text-sky-300 font-semibold">← Vorheriges Modul</a>
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Übersicht</a>
<a href="../07_ap2_teil_1_probepruefung/index.html" class="ihk-btn ihk-btn-primary font-semibold">Nächstes Modul →</a>
</div>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-danger">AP2 FISI Fachqualifikation 1</span>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-danger">AP2 FISI Fachqualifikation 2</span>
</div>

View file

@ -10,7 +10,7 @@
<body class="bg-slate-900 text-slate-100 font-sans p-6">
<div class="container mx-auto max-w-4xl">
<div class="flex justify-between items-center mb-6">
<a href="../../../index.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zur Gesamtübersicht</a>
<a href="../../../dashboard.html" class="text-rose-400 hover:text-rose-300 font-semibold">← Zurück zum Dashboard</a>
<span class="ihk-badge ihk-badge-warning">WiSo Prüfungsteil 3 (60 Min.)</span>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 01: Java Syntax & Primitive Datentypen</h1>
<p class="text-slate-300 mb-6">Einstieg in Java, main-Methode, Variablen, int, double, boolean und String-Ausgaben.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=01_java_syntax_und_primitive_typen" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 02: Kontrollfluss & Switch-Expressions</h1>
<p class="text-slate-300 mb-6">Entscheidungen mit if/else und modernen Java Switch-Expressions (->).</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=02_kontrollfluss_und_verzweigungen" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 03: Schleifen, For-Each & Arrays</h1>
<p class="text-slate-300 mb-6">Zählschleifen, while-Schleifen, for-each und Array-Verarbeitung in Java.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=03_schleifen_und_arrays" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 04: Methoden, Static & Overloading</h1>
<p class="text-slate-300 mb-6">Methodendeklaration, statische vs. Instanzmethoden und Methodenüberladung.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=04_methoden_und_parameter" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 05: Klassen, Objekte & Konstruktoren</h1>
<p class="text-slate-300 mb-6">Klassendefinition, new-Operator, this-Referenz und Konstruktoren.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=05_klassen_objekte_und_konstruktoren" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 06: Kapselung, Immutability & Records</h1>
<p class="text-slate-300 mb-6">Zugriffsmodifikatoren private/public, Getter/Setter und Java 17+ Records.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=06_kapselung_und_records" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 07: Vererbung, Polymorphie & Abstract Classes</h1>
<p class="text-slate-300 mb-6">Vererbung mit extends, Aufruf mit super(), Überschreiben (@Override) und abstrakte Klassen.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=07_vererbung_polymorphie_und_super" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -11,7 +11,7 @@
<h1 class="text-3xl font-bold text-amber-400 mb-4">Java 08: Interfaces, Default Methods & Kopplung</h1>
<p class="text-slate-300 mb-6">Schnittstellen mit interface, implements, Default- und Static-Methoden.</p>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=08_interfaces_und_default_methods" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=13_dateien_json_und_persistenz" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=14_multithreading_und_virtual_threads" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=15_junit_5_automatisiertes_unit_testing" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=java&chapter=16_master_abschlussprojekt_banking_system" class="bg-amber-500 hover:bg-amber-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -166,7 +166,7 @@
<!-- Footer Navigation -->
<div class="footer-nav" style="display: flex; justify-content: space-between; margin-top: 30px;">
<a href="../15_typescript_fortgeschritten/index.html" class="btn btn-secondary">&larr; Zurück zu Modul 07</a>
<a href="../../../index.html" class="btn" style="background: var(--success); color: white;">🏆 Kurs abgeschlossen &ndash; Zur Übersicht &rarr;</a>
<a href="../../../dashboard.html" class="btn" style="background: var(--success); color: white;">🏆 Kurs abgeschlossen &ndash; Zur Übersicht &rarr;</a>
</div>
</main>
</div>

View file

@ -130,7 +130,7 @@
<!-- Footer Navigation -->
<div class="footer-nav" style="display: flex; justify-content: space-between; margin-top: 30px;">
<a href="../15_cloud_und_cross_platform_automatisierung/index.html" class="btn btn-secondary">&larr; Zurück zu PS 15</a>
<a href="../../../index.html" class="btn" style="background: var(--success); color: white;">🏆 Kurs erfolgreich abgeschlossen &ndash; Zum Dashboard &rarr;</a>
<a href="../../../dashboard.html" class="btn" style="background: var(--success); color: white;">🏆 Kurs erfolgreich abgeschlossen &ndash; Zum Dashboard &rarr;</a>
</div>
</main>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=05_structs_und_impl_methoden" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=06_enums_und_option_monade" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=07_robustes_error_handling_mit_result" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=08_packages_crates_und_module" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=14_shared_state_concurrency" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=15_automatisiertes_testing_mit_cargo_test" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -15,7 +15,7 @@
<p class="text-sm text-slate-300">Bearbeite die Aufgaben im Startercode und teste deine Lösung direkt in der Web-IDE.</p>
</div>
<div class="flex justify-between items-center">
<a href="../../../index.html" class="text-slate-400 hover:text-white">🏠 Zurück zur Übersicht</a>
<a href="../../../dashboard.html" class="text-slate-400 hover:text-white">🏠 Zurück zum Dashboard</a>
<a href="../../../workspace.html?course=rust&chapter=16_master_abschlussprojekt_high_speed_cache" class="bg-orange-500 hover:bg-orange-600 text-slate-950 font-bold px-6 py-2 rounded shadow transition">💻 In Web-IDE öffnen →</a>
</div>
</div>

View file

@ -301,7 +301,7 @@
<a href="workspace.html?course=python" class="portal-btn-primary" style="padding: 10px 18px; font-size: 0.9rem;">
<span>💻 Web-IDE öffnen</span>
</a>
<a href="index.html" class="portal-btn-secondary" style="padding: 10px 16px; font-size: 0.9rem;" title="Zur öffentlichen Plattform-Startseite">
<a href="index.html?view=landing" class="portal-btn-secondary" style="padding: 10px 16px; font-size: 0.9rem;" title="Zur öffentlichen Plattform-Startseite">
<span>🌐 Startseite</span>
</a>
</div>
@ -1152,7 +1152,7 @@
<li><a href="#ihk-section" class="portal-footer-link">🎓 IHK Prüfungstrainer</a></li>
<li><a href="workspace.html?course=python" class="portal-footer-link">💻 Web-IDE starten</a></li>
<li><a href="#zertifikate-section" class="portal-footer-link">🏆 Meine Zertifikate</a></li>
<li><a href="index.html" class="portal-footer-link">🌐 Zur Plattform-Startseite</a></li>
<li><a href="index.html?view=landing" class="portal-footer-link">🌐 Zur Plattform-Startseite</a></li>
<li class="teacher-only" style="display: none;"><a href="teacher.html" class="portal-footer-link" id="footer-teacher-link">👨‍🏫 Dozenten-Portal</a></li>
<li class="admin-only" style="display: none;"><a href="admin.html" class="portal-footer-link" id="footer-admin-link">🛡️ Administration</a></li>
</ul>
@ -1185,10 +1185,10 @@
</footer>
<!-- Scripts -->
<script src="assets/app_auth.js"></script>
<script src="assets/it_ausbildungen_manifest.js"></script>
<script src="assets/courses_manifest.js"></script>
<script src="assets/certificate.js"></script>
<script src="assets/app_auth.js?v=2.1.0"></script>
<script src="assets/it_ausbildungen_manifest.js?v=2.1.0"></script>
<script src="assets/courses_manifest.js?v=2.1.0"></script>
<script src="assets/certificate.js?v=2.1.0"></script>
<script>
function toggleMobileMenu() {

View file

@ -276,7 +276,7 @@
</footer>
<!-- Scripts -->
<script src="assets/app_auth.js"></script>
<script src="assets/app_auth.js?v=2.1.0"></script>
<script>
function toggleMobileMenu() {
const drawer = document.getElementById('portal-mobile-drawer');

View file

@ -230,7 +230,7 @@
</footer>
<!-- Scripts -->
<script src="assets/app_auth.js"></script>
<script src="assets/app_auth.js?v=2.1.0"></script>
<script>
function toggleMobileMenu() {
const drawer = document.getElementById('portal-mobile-drawer');

View file

@ -11,6 +11,20 @@
<meta property="og:type" content="website">
<meta property="og:url" content="https://alpha.it-praxisportal.de/">
<link rel="stylesheet" href="assets/style.css">
<script src="assets/app_auth.js?v=2.1.0"></script>
<script>
// Sofortige automatische Weiterleitung für angemeldete Nutzer direkt ins Dashboard
(function autoRedirectLoggedInUser() {
try {
if (window.AUTH && window.AUTH.isLoggedIn()) {
var p = new URLSearchParams(window.location.search);
if (!p.has('view') && !p.has('landing') && !p.has('preview')) {
window.location.replace('dashboard.html');
}
}
} catch (e) {}
})();
</script>
<style>
.portal-container {
max-width: 1240px;
@ -252,11 +266,11 @@
<nav class="portal-nav-links">
<a href="#hero" class="portal-nav-link">🚀 Start</a>
<a href="#was-du-bekommst" class="portal-nav-link">💎 Das Konzept</a>
<a href="#dashboard-spotlight" class="portal-nav-link">📊 Kurs-Dashboard</a>
<a href="#dashboard-spotlight" class="portal-nav-link">📊 Features</a>
<a href="#features-ide" class="portal-nav-link">💻 Web-IDE</a>
<a href="#ihk-section" class="portal-nav-link">🎓 IHK Prüfung</a>
<a href="#zielgruppen" class="portal-nav-link">👥 Für wen?</a>
<a href="dashboard.html" class="portal-nav-link" id="nav-dashboard-link" style="display: none; color: #34d399; font-weight: 700;">💻 Kurs-Dashboard</a>
<a href="dashboard.html" class="portal-nav-link" id="nav-dashboard-link" style="display: none; color: #34d399; font-weight: 800; background: rgba(52, 211, 153, 0.12); padding: 5px 12px; border-radius: 6px; border: 1px solid rgba(52, 211, 153, 0.3);">💻 Zum Kurs-Dashboard &rarr;</a>
<a href="teacher.html" class="portal-nav-link" id="nav-teacher-link" style="display: none;">👨‍🏫 Dozenten</a>
<a href="admin.html" class="portal-nav-link" id="nav-admin-link" style="display: none; color: #f87171; font-weight: 800;">🛡️ Admin</a>
</nav>
@ -276,12 +290,12 @@
<div id="portal-mobile-drawer" class="mobile-drawer" style="display: none;">
<a href="#hero" class="mobile-drawer-link" onclick="toggleMobileMenu()">🚀 Start &amp; Übersicht</a>
<a href="#was-du-bekommst" class="mobile-drawer-link" onclick="toggleMobileMenu()">💎 Was du bekommst</a>
<a href="#dashboard-spotlight" class="mobile-drawer-link" onclick="toggleMobileMenu()">📊 Kurs-Dashboard</a>
<a href="#dashboard-spotlight" class="mobile-drawer-link" onclick="toggleMobileMenu()">📊 Features &amp; Vorschau</a>
<a href="#features-ide" class="mobile-drawer-link" onclick="toggleMobileMenu()">💻 Monaco Web-IDE</a>
<a href="#ihk-section" class="mobile-drawer-link" onclick="toggleMobileMenu()">🎓 IHK Prüfungstrainer</a>
<a href="impressum.html" class="mobile-drawer-link" onclick="toggleMobileMenu()">⚖️ Impressum</a>
<a href="datenschutz.html" class="mobile-drawer-link" onclick="toggleMobileMenu()">🔒 Datenschutzerklärung</a>
<a href="dashboard.html" class="mobile-drawer-link" id="mobile-drawer-dash-link" style="display: none; color: #34d399; font-weight: 700;">💻 Zum Kurs-Dashboard &rarr;</a>
<a href="dashboard.html" class="mobile-drawer-link" id="mobile-drawer-dash-link" style="display: none; color: #34d399; font-weight: 800; background: rgba(52, 211, 153, 0.1); padding: 8px 12px; border-radius: 6px; border: 1px solid rgba(52, 211, 153, 0.3);">💻 Zum Kurs-Dashboard &rarr;</a>
<a href="teacher.html" class="mobile-drawer-link" id="mobile-drawer-teacher-link" style="display: none;">👨‍🏫 Dozenten-Portal</a>
<a href="admin.html" class="mobile-drawer-link" id="mobile-drawer-admin-link" style="display: none; color: #f87171; font-weight: 800;">🛡️ Admin-Panel</a>
</div>
@ -740,7 +754,7 @@
<button type="button" class="landing-cta-btn btn" style="background: #ffffff; color: #0284c7; padding: 12px 28px; font-size: 1rem; font-weight: 800; border-radius: 8px; border: none; cursor: pointer; box-shadow: 0 4px 20px rgba(0,0,0,0.2);">
<span>✨ Jetzt kostenlos registrieren &amp; Kurse wählen &rarr;</span>
</button>
<button type="button" class="btn" style="background: rgba(255,255,255,0.15); color: white; border: 1px solid rgba(255,255,255,0.3); padding: 12px 20px; font-size: 1rem; font-weight: 700; border-radius: 8px; cursor: pointer;" onclick="window.openAuthModal('login', { allowClose: true })">
<button type="button" class="btn" id="footer-cta-login" style="background: rgba(255,255,255,0.15); color: white; border: 1px solid rgba(255,255,255,0.3); padding: 12px 20px; font-size: 1rem; font-weight: 700; border-radius: 8px; cursor: pointer;" onclick="window.openAuthModal('login', { allowClose: true })">
🔑 Anmelden
</button>
</div>
@ -821,7 +835,6 @@
</footer>
<!-- Scripts -->
<script src="assets/app_auth.js"></script>
<script>
function toggleMobileMenu() {
const drawer = document.getElementById('portal-mobile-drawer');

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<span style="color: white; font-weight: 600;">Grundlagen 01</span>
<span>&rsaquo;</span>
@ -312,7 +312,7 @@
</div>
<div class="footer-nav">
<a href="../../index.html" class="btn btn-secondary">&larr; Zurück zur Übersicht</a>
<a href="../../dashboard.html" class="btn btn-secondary">&larr; Zurück zum Dashboard</a>
<a href="../02_variablen_und_datentypen/index.html" class="btn">Weiter zu Kapitel G02: Variablen &amp; Datentypen &rarr;</a>
</div>
</section>

View file

@ -17,7 +17,7 @@
<nav class="nav-links">
<a href="../01_erste_schritte_taschenrechner/index.html">&larr; Grundlagen 01</a>
<span>&rsaquo;</span>
<a href="../../index.html">🏠 Kursübersicht</a>
<a href="../../dashboard.html">🏠 Dashboard</a>
<span>&rsaquo;</span>
<span style="color: white; font-weight: 600;">Grundlagen 02</span>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../02_variablen_und_datentypen/index.html">&larr; Kapitel G02</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../03_ein_und_ausgabe/index.html">&larr; Kapitel G03</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../04_verzweigungen_und_bedingungen/index.html">&larr; Kapitel G04</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../05_schleifen_und_wiederholungen/index.html">&larr; Kapitel G05</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../06_funktionen_und_module/index.html">Kapitel G06</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../07_listen_und_sequenzen/index.html">Kapitel G07</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../08_textverarbeitung_und_strings/index.html">&larr; Kapitel G08</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../09_dictionaries_und_sets/index.html">&larr; Kapitel G09</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<span style="color: white; font-weight: 600;">Kapitel 00</span>
<span>&rsaquo;</span>
@ -216,7 +216,7 @@
</div>
<div class="footer-nav">
<a href="../../index.html" class="btn btn-secondary">&larr; Zurück zur Übersicht</a>
<a href="../../dashboard.html" class="btn btn-secondary">&larr; Zurück zum Dashboard</a>
<a href="../01_einstieg_klassen/index.html" class="btn">Weiter zu Kapitel 01: Klassen &rarr;</a>
</div>
</section>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../00_fehlersuche_und_grundlagen/index.html">Kapitel 00</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../01_einstieg_klassen/index.html">Kapitel 01</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../02_init_und_self/index.html">Kapitel 02</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../03_methoden_und_verhalten/index.html">Kapitel 03</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../04_str_und_darstellung/index.html">Kapitel 04</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../04b_umstieg_vscode/index.html">Kapitel 04b</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../04c_git_und_versionskontrolle/index.html">Kapitel 04c (Git)</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../05_objekte_kombinieren/index.html">Kapitel 05</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../../lehrpfad_2_oop_einstieg/06_abschlussprojekt_tamagotchi/index.html">Kapitel 06</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../07_referenzen_und_speicher/index.html">Kapitel 07</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../08_operator_overloading_dunder/index.html">Kapitel 08</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../09_eigene_unit_tests_schreiben/index.html">Kapitel 09 (Unit Tests)</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../10_vererbung_und_super/index.html">Kapitel 10 (Vererbung)</a>
<span>&rsaquo;</span>

View file

@ -15,7 +15,7 @@
<header>
<div class="header-container">
<nav class="nav-links">
<a href="../../index.html">🏠 Zur Kursübersicht</a>
<a href="../../dashboard.html">🏠 Zum Dashboard</a>
<span>&rsaquo;</span>
<a href="../11_polymorphie_und_interfaces/index.html">Kapitel 11</a>
<span>&rsaquo;</span>

Some files were not shown because too many files have changed in this diff Show more