Skip to content

Commit 84556f9

Browse files
authored
Create script.js
1 parent 544feaa commit 84556f9

1 file changed

Lines changed: 170 additions & 0 deletions

File tree

tools-docs/script.js

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
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

Comments
 (0)