initial commit

This commit is contained in:
2026-04-27 20:41:26 +02:00
commit 311a2502d7
92 changed files with 5115 additions and 0 deletions
+165
View File
@@ -0,0 +1,165 @@
const mainContent = document.getElementById('content');
let isNavOpen=!1,isSettingsOpen=!1;function openMobilMenu(e){switch(e){case"nav":isSettingsOpen&&(document.getElementById("mobileSettings").style.right="",isSettingsOpen=!1),isNavOpen?document.querySelector("#navigation .mainMenu").style.top="":document.querySelector("#navigation .mainMenu").style.top="0",isNavOpen=!isNavOpen;break;case"contact":loadPage("contact");break;case"home":loadPage("home");break;case"projects":loadPage("projects");break;case"settings":isNavOpen&&(document.querySelector("#navigation .mainMenu").style.top="",isNavOpen=!1),isSettingsOpen?document.getElementById("mobileSettings").style.right="":document.getElementById("mobileSettings").style.right="0",isSettingsOpen=!isSettingsOpen;break;default:console.log("Unbekanntes Men\xfc")}}
let isDeskNavOpen=!1;function toggleDeskMenu(){isDeskNavOpen?(document.querySelector("#navigation .mainMenu").style.left="",document.querySelector("#navigation .navButton span:nth-child(1)").style.marginTop="",document.querySelector("#navigation .navButton span:nth-child(2)").style.opacity="",document.querySelector("#navigation .navButton span:nth-child(3)").style.marginTop="",document.querySelector("#navigation .navButton span:nth-child(1)").style.transform="",document.querySelector("#navigation .navButton span:nth-child(3)").style.transform=""):(document.querySelector("#navigation .mainMenu").style.left="0",document.querySelector("#navigation .navButton span:nth-child(1)").style.marginTop="0",document.querySelector("#navigation .navButton span:nth-child(2)").style.opacity="0",document.querySelector("#navigation .navButton span:nth-child(3)").style.marginTop="0",document.querySelector("#navigation .navButton span:nth-child(1)").style.transform="translate(-50%,-50%) rotate(-45deg)",document.querySelector("#navigation .navButton span:nth-child(3)").style.transform="translate(-50%,-50%) rotate(45deg)"),isDeskNavOpen=!isDeskNavOpen}
let currentPage = '';
function loadPage(page) {
if (page === currentPage) {
console.log(`Seite '${page}' ist bereits aktiv kein erneuter Ladevorgang.`);
return;
}
currentPage = page;
document.getElementById('loadingScreen').style.display = 'flex';
switch (page) {
case 'home':
loadHTML('content/home.html', mainContent, () => {
checkMenus();
getNewsTicker();
getHomeSkills();
updateMottoMessage();
getHomeProjects();
scrollToTop();
});
break;
case 'profile':
loadHTML('content/profile.html', mainContent, () => {
checkMenus();
loadCertificates();
getPartnerships();
loadGallery();
scrollToTop();
});
break;
case 'projects':
loadHTML('content/projects.html', mainContent, () => {
checkMenus();
getProjects();
scrollToTop();
});
break;
case 'skills':
loadHTML('content/skills.html', mainContent, () => {
checkMenus();
getSkillsTree();
getProcess();
scrollToTop();
});
break;
case 'contact':
loadHTML('content/links.html', mainContent, () => {
checkMenus();
getLinks();
scrollToTop();
});
break;
case 'impress':
loadHTML('content/impress.html', mainContent, () => {
checkMenus();
scrollToTop();
});
break;
case 'privacy':
loadHTML('content/dataprotection.html', mainContent, () => {
checkMenus();
scrollToTop();
});
break;
case 'cookies':
loadHTML('content/cookies.html', mainContent, () => {
checkMenus();
scrollToTop();
});
break;
case 'sources':
loadHTML('content/sources.html', mainContent, () => {
checkMenus();
scrollToTop();
});
break;
default:
loadHTML('content/404.html', mainContent, () => {
checkMenus();
scrollToTop();
});
break;
}
setTimeout(()=>{initLanguage()},2500);
const validPages = ['home', 'profile', 'projects', 'skills', 'contact', 'impress', 'privacy', 'cookies', 'sources'];
setTemporaryCookie("page",validPages.includes(page)?page:"404"),updateURLWithCookies();
}
function loadHTML(e,n,r){fetch(e).then(e=>{if(!e.ok)throw Error("Fehler beim Laden der HTML-Datei");return e.text()}).then(e=>{n.innerHTML=e,"function"==typeof r&&r()}).catch(e=>{console.error("Fehler:",e),n.innerHTML="<p>Fehler beim Laden der Ansicht.</p>"})}
function checkMenus(){isNavOpen?openMobilMenu("nav"):isDeskNavOpen?toggleDeskMenu():isSettingsOpen&&openMobilMenu("settings")}
function toggleTheme(){let e="light"===(getCookie("theme")||"light")?"dark":"light";setTheme(e),setCookie("theme",e,365),updateURLWithCookies()}function setTheme(e){let t=document.documentElement,l=document.querySelectorAll(".modeSelect");t.classList.toggle("darkTheme","dark"===e),t.classList.toggle("lightTheme","light"===e),l.forEach(t=>t.style.marginLeft="dark"===e?"20px":"-20px")}function initTheme(){let e=getCookie("theme")||"light";"dark"!==e&&"light"!==e&&(e="dark"),setCookie("theme",e,365),updateURLWithCookies(),setTheme(e)}
let isLinkFilterOpen=!1;function toggleLinkFilterMenu(){isLinkFilterOpen?(document.querySelector(".linkFilterMenu").style.maxHeight="",document.querySelector(".linkFilterMenu .fa-arrow-down").style.rotate="",document.querySelector(".linkFilterMenu .fa-arrow-down").style.animation=""):(document.querySelector(".linkFilterMenu").style.maxHeight="1000px",document.querySelector(".linkFilterMenu .fa-arrow-down").style.rotate="180deg",document.querySelector(".linkFilterMenu .fa-arrow-down").style.animation="none"),isLinkFilterOpen=!isLinkFilterOpen}
let isProjectFilterOpen=!1;function toggleProjectFilterMenu(e){let t=document.getElementById("tagList"),r=document.getElementById("sortSelect"),o=document.querySelector("#projectsFilterMenu"),n=document.querySelector("#projectsFilterMenu .fa-arrow-down");r.contains(e.target)||t.contains(e.target)||(isProjectFilterOpen?(o.classList.remove("open"),n.style.transform="rotate(0deg)"):(o.classList.add("open"),n.style.transform="rotate(180deg)"),isProjectFilterOpen=!isProjectFilterOpen)}
function toggleFAQItem(e){e.classList.contains("expanded")?e.classList.remove("expanded"):(document.querySelectorAll(".faqItem").forEach(e=>{e.classList.remove("expanded")}),e.classList.add("expanded"))}document.querySelectorAll(".faqItem").forEach(e=>{e.classList.remove("expanded")});
function openLink(url) {
switch (url) {
case 'html5':
window.open('https://html.spec.whatwg.org/multipage/', '_blank');
break;
case 'php':
window.open('https://www.php.net/', '_blank');
break;
case 'css3':
window.open('https://developer.mozilla.org/en-US/docs/Web/CSS', '_blank');
break;
case 'javascript':
window.open('https://www.javascript.com/', '_blank');
break;
case 'nodejs':
window.open('https://nodejs.org/en', '_blank');
break;
case 'vscode':
window.open('https://code.visualstudio.com/', '_blank');
break;
case 'cmd':
window.open('https://learn.microsoft.com/de-de/windows-server/administration/windows-commands/cmd', '_blank');
break;
case 'ps':
window.open('https://learn.microsoft.com/de-de/powershell/', '_blank');
break;
case 'chatgpt':
window.open('https://chatgpt.com/', '_blank');
break;
case 'xampp':
window.open('https://www.apachefriends.org/de/index.html', '_blank');
break;
case 'apache':
window.open('https://httpd.apache.org/', '_blank');
break;
case 'mysql':
window.open('https://www.mysql.com/de/', '_blank');
break;
case 'davinci':
window.open('https://www.blackmagicdesign.com/de/products/davinciresolve/', '_blank');
break;
case 'obsstudio':
window.open('https://obsproject.com/de', '_blank');
break;
case 'flstudio':
window.open('https://www.image-line.com/', '_blank');
break;
case 'voicemeeter':
window.open('https://vb-audio.com/Voicemeeter/', '_blank');
break;
case 'trello':
window.open('https://trello.com/', '_blank');
break;
case 'notion':
window.open('https://www.notion.com/', '_blank');
break;
default:
loadPage('404');
break;
}
}
function handleBodyClick(e){let t=document.getElementById("navigation"),n=document.getElementById("mobileFooter"),r=document.getElementById("mobileSettings"),a=document.querySelectorAll(".faqItem"),o=document.querySelector(".linkFilterMenu"),i=document.querySelector("#projectsFilterMenu");if(t?.contains(e.target)||n?.contains(e.target)||r?.contains(e.target)||o?.contains(e.target)||i?.contains(e.target))return;let l=!1;a.forEach(t=>{t.contains(e.target)&&(l=!0)}),l||a.forEach(e=>e.classList.remove("expanded")),isLinkFilterOpen&&toggleLinkFilterMenu(),isProjectFilterOpen&&toggleProjectFilterMenu(e),checkMenus()}
function addHoverEffectToLinkCard(e,r){e.addEventListener("mouseover",()=>{r.forEach(r=>{r!==e&&(r.style.filter="blur(5px) grayscale(1)")}),e.style.backgroundColor="rgba(255, 255, 255, 0.1)"}),e.addEventListener("mouseout",()=>{r.forEach(e=>{e.style.filter=""}),e.style.backgroundColor=""})}function addHoverEffectToProcessCard(e,r){e.addEventListener("mouseover",()=>{r.forEach(r=>{r!==e&&(r.style.filter="blur(5px) grayscale(1)")}),e.style.backgroundColor="rgba(255, 255, 255, 0.1)"}),e.addEventListener("mouseout",()=>{r.forEach(e=>{e.style.filter=""}),e.style.backgroundColor=""})}function addHoverEffectToImages(e){let r=document.querySelectorAll(".imgContainer img"),o=document.querySelectorAll(".skillsCardContainer img");r.forEach(r=>{r!==e&&(r.style.filter="blur(5px) grayscale(1)")}),o.forEach(r=>{r!==e&&(r.style.filter="blur(5px) grayscale(1)")}),e.style.backgroundColor="var(--hover-color)"}function removeHoverEffectFromImages(){let e=document.querySelectorAll(".imgContainer img"),r=document.querySelectorAll(".skillsCardContainer img");e.forEach(e=>{e.style.filter="",e.style.backgroundColor=""}),r.forEach(e=>{e.style.filter="",e.style.backgroundColor=""})}
function scrollToTop(){window.scrollTo({top:0,behavior:"smooth"})}
// DOMContentLoaded
document.addEventListener("DOMContentLoaded", function() {
setCookiesFromURL(),getCookie("cookieConsent")||document.getElementById("cookie-banner").classList.remove("hidden"),document.getElementById("cookie-accept").addEventListener("click",function(){setCookie("cookieConsent","true",365),document.getElementById("cookie-banner").classList.add("hidden")});
setTimeout(()=>{initTheme()},2500),setTimeout(()=>{initLanguage()},5e3);
});