|
| 1 | +// Dane slajdów (wszystkie narzędzia + 3 nowe tryby) |
| 2 | +const slidesData = [ |
| 3 | + { title: "HPM", desc: "HackerOS Package Manager – repozytorium społecznościowe dla HackerOS. Każdy użytkownik może tworzyć, udostępniać i instalować pakiety, budując otwarty, dynamiczny ekosystem." }, |
| 4 | +{ title: "HackerOS Containers", desc: "Autorski system kontenerów zaprojektowany z myślą o lekkiej izolacji, wysokiej wydajności i łatwym zarządzaniu środowiskami aplikacji. W pełni zintegrowany z jądrem HackerOS." }, |
| 5 | +{ title: "lpm", desc: "Legendary Package Manager – nowoczesny następca APT. Łączy prostotę klasycznych menedżerów z zaawansowanym rozwiązywaniem zależności, wsparciem dla wielu źródeł i błyskawiczną instalacją." }, |
| 6 | +{ title: "hammer", desc: "Narzędzie do atomowej instalacji oraz aktualizacji pakietów. Wykorzystywane wyłącznie w edycji Atomic HackerOS – gwarantuje nieuszkadzalne aktualizacje i możliwość przywracania poprzednich stanów systemu." }, |
| 7 | +{ title: "hacker", desc: "hacker – serce systemu. Zaawansowane narzędzie do monitorowania, zarządzania procesami i konfiguracją w czasie rzeczywistym. Stanowi fundament interakcji z jądrem oraz usprawnia diagnostykę." }, |
| 8 | +{ title: "hbuild", desc: "Własna, autorska alternatywa dla Meson, CMake, Make oraz Ninja. Upraszcza proces kompilacji oprogramowania dzięki deklaratywnym skryptom, inteligentnemu cache'owaniu i modułowej architekturze." }, |
| 9 | +{ title: "ULB", desc: "Universal Live Builder – elitarne narzędzie do budowania obrazów ISO HackerOS. Umożliwia tworzenie w pełni konfigurowalnych, przenośnych środowisk live oraz obrazów do wdrożeń masowych." }, |
| 10 | +{ title: ".hk", desc: "Format plików .hk używany do konfiguracji systemu oraz aplikacji. Zapewnia czytelną, hierarchiczną składnię, natywne wsparcie w narzędziach HackerOS oraz możliwość rozszerzeń poprzez wbudowane schematy." }, |
| 11 | +{ title: "hsh", desc: "hsh – nowoczesna powłoka systemowa, zaawansowana alternatywa dla ZSH i Bash. Oferuje rozszerzone możliwości skryptowe, lepszą autokompletację, wbudowane wsparcie dla kontenerów i natywne integracje z .hk." }, |
| 12 | +{ title: "HexAI", desc: "HexAI – Zintegrowany asystent AI dla HackerOS, wymagający wydajnego komputera. Oferuje lokalne wnioskowanie, analizę kodu źródłowego, generowanie skryptów oraz inteligentne wsparcie administracji z zachowaniem pełnej prywatności." }, |
| 13 | +{ title: "GhostFS", desc: "GhostFS – Zaawansowany system plików dla HackerOS, dostępny w dwóch edycjach: Cybersecurity (szyfrowanie, ukrywanie śladów, steganografia) oraz Normal (szybkość, niezawodność i pełna zgodność z aplikacjami). Idealny do zarządzania danymi." }, |
| 14 | +{ title: "HackerDeck", desc: "HackerDeck – nakładka środowiskowa dla Waydroid, pozwalająca uruchamiać aplikacje Android w HackerOS z pełną integracją, optymalizacją wydajności i dedykowanymi ustawieniami dla graczy oraz programistów." }, |
| 15 | +{ title: "hedit", desc: "hedit – edytor tekstu inspirowany klasycznym nano, w pełni zintegrowany z HackerOS. Łączy prostotę obsługi z zaawansowanymi funkcjami, takimi jak podświetlanie składni, obsługa makr oraz bezpośrednia edycja plików systemowych w trybie tekstowym." }, |
| 16 | +{ title: "ngt", desc: "ngt – narzędzie do zarządzania plikami inspirowane Midnight Commanderem (MC). Oferuje dwupanelowy interfejs, szybką nawigację, zaawansowane operacje na plikach (kopiowanie, przenoszenie, uprawnienia) oraz wbudowany podgląd plików i archiwów – niezbędne w codziennej pracy administratora." }, |
| 17 | +// === NOWE 3 SŁAJDY (Penetration Mode, Cybersecurity Mode, Hacker Term) === |
| 18 | +{ title: "Penetration Mode", desc: "Sesja z własnymi narzędziami do testów penetracyjnych. Jest to aplikacja wbudowana w HackerOS Cybersecurity Edition, która uruchamia dedykowane środowisko z frameworkami (Metasploit, Nmap, Burp Suite, własne skrypty) – idealna dla etycznych hackerów i zespołów Red Team." }, |
| 19 | +{ title: "Cybersecurity Mode", desc: "Narzędzie zarówno do defensywy, jak i ofensywy. Działa w lekkim kontenerze, używane i wbudowane w HackerOS Cybersecurity Edition jako aplikacja oraz jako sesja. Łączy monitoring zagrożeń, IDS/IPS, skanowanie podatności oraz taktyki adversary emulation – wszystko w izolowanym środowisku." }, |
| 20 | +{ title: "Hacker Term", desc: "Terminal dla dystrybucji Linuxa HackerOS. Nowoczesna powłoka z zaawansowaną autokompletacją, wieloma oknami, natywnym wsparciem dla kontenerów HackerOS, skryptami .hk i integracją z narzędziami pentesterskimi. Zapewnia pełną kontrolę nad systemem i środowiskiem deweloperskim." } |
| 21 | +]; |
| 22 | + |
| 23 | +const slidesTrack = document.getElementById('slidesTrack'); |
| 24 | +const dotsContainer = document.getElementById('dotsContainer'); |
| 25 | +const prevBtn = document.getElementById('prevSlideBtn'); |
| 26 | +const nextBtn = document.getElementById('nextSlideBtn'); |
| 27 | + |
| 28 | +let currentIndex = 0; |
| 29 | +let autoPlayInterval = null; |
| 30 | +let isHovering = false; |
| 31 | + |
| 32 | +// Renderowanie slajdów |
| 33 | +function renderSlides() { |
| 34 | + slidesTrack.innerHTML = ''; |
| 35 | + slidesData.forEach((slide) => { |
| 36 | + const slideDiv = document.createElement('div'); |
| 37 | + slideDiv.className = 'slide'; |
| 38 | + const titleElem = document.createElement('h3'); |
| 39 | + titleElem.textContent = slide.title; |
| 40 | + slideDiv.appendChild(titleElem); |
| 41 | + const descElem = document.createElement('p'); |
| 42 | + descElem.textContent = slide.desc; |
| 43 | + slideDiv.appendChild(descElem); |
| 44 | + slidesTrack.appendChild(slideDiv); |
| 45 | + }); |
| 46 | + updateSliderPosition(); |
| 47 | +} |
| 48 | + |
| 49 | +function updateSliderPosition() { |
| 50 | + if (!slidesTrack) return; |
| 51 | + const offset = -currentIndex * 100; |
| 52 | + slidesTrack.style.transform = `translateX(${offset}%)`; |
| 53 | + updateDots(); |
| 54 | +} |
| 55 | + |
| 56 | +function updateDots() { |
| 57 | + const dots = document.querySelectorAll('.dot'); |
| 58 | + dots.forEach((dot, i) => { |
| 59 | + if (i === currentIndex) dot.classList.add('active'); |
| 60 | + else dot.classList.remove('active'); |
| 61 | + }); |
| 62 | +} |
| 63 | + |
| 64 | +function buildDots() { |
| 65 | + dotsContainer.innerHTML = ''; |
| 66 | + for (let i = 0; i < slidesData.length; i++) { |
| 67 | + const dot = document.createElement('div'); |
| 68 | + dot.classList.add('dot'); |
| 69 | + if (i === currentIndex) dot.classList.add('active'); |
| 70 | + dot.addEventListener('click', () => { |
| 71 | + goToSlide(i); |
| 72 | + resetAutoPlay(); |
| 73 | + }); |
| 74 | + dotsContainer.appendChild(dot); |
| 75 | + } |
| 76 | +} |
| 77 | + |
| 78 | +function goToSlide(index) { |
| 79 | + if (index < 0) index = slidesData.length - 1; |
| 80 | + if (index >= slidesData.length) index = 0; |
| 81 | + currentIndex = index; |
| 82 | + updateSliderPosition(); |
| 83 | +} |
| 84 | + |
| 85 | +function nextSlide() { goToSlide(currentIndex + 1); } |
| 86 | +function prevSlide() { goToSlide(currentIndex - 1); } |
| 87 | + |
| 88 | +function startAutoPlay() { |
| 89 | + if (autoPlayInterval) clearInterval(autoPlayInterval); |
| 90 | + if (isHovering) return; |
| 91 | + autoPlayInterval = setInterval(() => { |
| 92 | + if (!isHovering) nextSlide(); |
| 93 | + }, 20000); |
| 94 | +} |
| 95 | + |
| 96 | +function stopAutoPlay() { |
| 97 | + if (autoPlayInterval) { |
| 98 | + clearInterval(autoPlayInterval); |
| 99 | + autoPlayInterval = null; |
| 100 | + } |
| 101 | +} |
| 102 | + |
| 103 | +function resetAutoPlay() { |
| 104 | + stopAutoPlay(); |
| 105 | + if (!isHovering) startAutoPlay(); |
| 106 | +} |
| 107 | + |
| 108 | +function bindHoverEvents() { |
| 109 | + const container = document.querySelector('.slider-container'); |
| 110 | + if (!container) return; |
| 111 | + container.addEventListener('mouseenter', () => { |
| 112 | + isHovering = true; |
| 113 | + stopAutoPlay(); |
| 114 | + }); |
| 115 | + container.addEventListener('mouseleave', () => { |
| 116 | + isHovering = false; |
| 117 | + startAutoPlay(); |
| 118 | + }); |
| 119 | +} |
| 120 | + |
| 121 | +function bindControls() { |
| 122 | + if (prevBtn) prevBtn.addEventListener('click', () => { prevSlide(); resetAutoPlay(); }); |
| 123 | + if (nextBtn) nextBtn.addEventListener('click', () => { nextSlide(); resetAutoPlay(); }); |
| 124 | +} |
| 125 | + |
| 126 | +function bindKeyboard() { |
| 127 | + window.addEventListener('keydown', (e) => { |
| 128 | + if (e.key === 'ArrowLeft') { prevSlide(); resetAutoPlay(); e.preventDefault(); } |
| 129 | + else if (e.key === 'ArrowRight') { nextSlide(); resetAutoPlay(); e.preventDefault(); } |
| 130 | + }); |
| 131 | +} |
| 132 | + |
| 133 | +// Obsługa dropdownu języków programowania |
| 134 | +function initLangDropdown() { |
| 135 | + const dropdown = document.getElementById('langDropdown'); |
| 136 | + const btn = document.getElementById('langDropdownBtn'); |
| 137 | + if (!dropdown || !btn) return; |
| 138 | + |
| 139 | + const toggleDropdown = (e) => { |
| 140 | + e.stopPropagation(); |
| 141 | + dropdown.classList.toggle('open'); |
| 142 | + }; |
| 143 | + btn.addEventListener('click', toggleDropdown); |
| 144 | + |
| 145 | + document.addEventListener('click', function(event) { |
| 146 | + if (!dropdown.contains(event.target)) { |
| 147 | + dropdown.classList.remove('open'); |
| 148 | + } |
| 149 | + }); |
| 150 | + |
| 151 | + document.addEventListener('keydown', function(e) { |
| 152 | + if (e.key === 'Escape' && dropdown.classList.contains('open')) { |
| 153 | + dropdown.classList.remove('open'); |
| 154 | + } |
| 155 | + }); |
| 156 | +} |
| 157 | + |
| 158 | +function initSlider() { |
| 159 | + renderSlides(); |
| 160 | + buildDots(); |
| 161 | + bindControls(); |
| 162 | + bindHoverEvents(); |
| 163 | + bindKeyboard(); |
| 164 | + isHovering = false; |
| 165 | + startAutoPlay(); |
| 166 | + initLangDropdown(); |
| 167 | +} |
| 168 | + |
| 169 | +window.addEventListener('resize', () => updateSliderPosition()); |
| 170 | +document.addEventListener('DOMContentLoaded', initSlider); |
0 commit comments