FAQ / script update

This commit is contained in:
mrfry 2021-05-18 11:10:57 +02:00
parent 9d71b64e92
commit 98deeb1706
5 changed files with 287 additions and 235 deletions

View file

@ -17,7 +17,12 @@ body {
} }
img { img {
margin: 10px; margin: 5px;
max-width: 90%;
}
.manual_img {
padding: 2px 2px;
border: 2px solid white; border: 2px solid white;
} }
@ -270,11 +275,6 @@ input:focus {
font-size: 14px; font-size: 14px;
} }
.manual_img {
padding: 2px 2px;
max-width: 90%;
}
.subtitle { .subtitle {
color: var(--text-color); color: var(--text-color);
font-size: 23px; font-size: 23px;

View file

@ -64,22 +64,12 @@ function PasswordSection() {
function FAQSection() { function FAQSection() {
return ( return (
<>
<div className={'manualBody'}> <div className={'manualBody'}>
<ul> <ul>
<li> <li>
<b> <b>
Hogy kell a scriptet telepíteni, milyen oldalakon működik és hogy Lehet-e valahol szerkeszteni, törölni, illetve manuálisan hozzáadni
működik? a meglévő kérdésekhez?
</b>
<Link href="/script">
<a>Ezen az oldalon van leírva</a>
</Link>{' '}
</li>
<li>
<b>
Lehet-e valahol szerkeszteni, törölni, illetve manuálisan
hozzáadni a meglévő kéréseket?
</b> </b>
Igen,{' '} Igen,{' '}
<a <a
@ -93,125 +83,68 @@ function FAQSection() {
</li> </li>
<li> <li>
<b> <b>
A teszt ellenőrző oldal nem elérhető. Ilyenkor lehet valamit Mennyire anonymus a weboldal/script, és kiderülhet-e hogy használom?
tenni, hogy mégis el legyenek mentve a válaszok?
</b>
A{' '}
<a
href={`${constants.siteUrl}dataeditor`}
target="_blank"
rel="noreferrer"
>
dataeditor
</a>{' '}
oldal erre is , a <i>Kitöltetlen tesztek</i> részhez a script
automatikusan feltölti a kérdéseket még megoldás közben. Ehhez nincs
lementve helyes válasz, de ezt te utólag bejelölheted, és
beküldheted.
</li>
<li>
<b>
Mennyire anonymus a weboldal/script, és kiderülhet-e hogy
használom?
</b> </b>
A weboldal teljesen anonymus, mindenki csak egy számként van A weboldal teljesen anonymus, mindenki csak egy számként van
nyilvántartva (ami a user ID), random generált uuidv4 jelszavak nyilvántartva (ami a user ID), random generált uuidv4 jelszavak vannak
vannak (így nicknevek sem kellenek), és még IP cím sincs sehol (így nicknevek sem kellenek), és még IP cím sincs sehol letárolva
letárolva szerver oldalon. szerver oldalon.
<br /> <br />
Több infó a kockázatok résznél ezen az oldalon. Több infó a{' '}
<Link href="/faq?tab=risk">
<a>kockázatok résznél</a>
</Link>
.
</li> </li>
<li> <li>
<b> <b>Ki és miért csinálja ezt a weboldalt?</b>
Olyan helyeken fut le a script, ahol nem kellene, vagy Az egész projektet (szerver, weboldal és script) egy személy
ideiglenesen ki akarom kapcsolni fejlesztette (oldalon id-ja: #1). A weboldal designját #1677
</b> készítette, illetve egy pár apróbb hozzájárulás (fejlesztésben és
Tampermonkey bővítmény ikon böngészőben -{'>'} click -{'>'} a hardverben) is érkezett a projekthez.
scriptet kapcsold ki. Csak ne felejtsd el visszakapcsolni ;)
</li>
<li>
<b>
Túl nagy a kérdést és a választ megjelenítő ablak, nem tudok a
válaszra kattintani
</b>
A felugró ablakot ha minden jól megy akkor a szélénél fogva tudod
mozgatni, vagy egeret rajtatartva a görgővel tudod állítani az
áttetszőségét, vagy be tudod zárni jobb felül X-el, vagy egér
középső gombbal.
</li>
<li>
<b>Script felugró ablakon szereplő adatok és gombok értelmezése</b>
<img className={'manual_img'} src="img/script-3.png" alt="img" />
<ul>
<li>
Felső középső szöveg:
<br /> <br />
[Talált kérdés tárgya] - [Talált kérdés adatbázisának neve] Az egész projekt egy hobby, csupán azért csinálom (#1) mert
</li> időtöltés, és szeretem az ilyen kihívásokat.
<li>
Jobb oldalt nyilak:
<br />
Ha több kérdés van egy oldalon, akkor azzal lehet váltogatni
</li>
<li>
Bal oldalt felső szám (3./1.)
<br />
Azt jelöli, hogy éppen hanyadik kérdés válasza van megjelenítve.
Itt a 3./1. azt jelenti, hogy a tesztben a 3. kérdés 1. talált
válasza.
</li>
<li>
Bal oldalt %
<br />A szerver szerint hány százalékban egyezik a talált válasz
azzal, amit tényleg keresni kell
</li>
<li>
Középen
<br />
Első sorban kérdés, másodikban válasz (ha a sor hosszú, akkor
megtörhet)
</li>
</ul>
<img className={'manual_img'} src="img/script-1.png" alt="img" />
<ul>
<li>
Alul nyilak:
<br />
Itt egy kérdésre több találat van, így közöttük neked kell
eldönteni, hogy mi a helyes válasz. Ez akkor van, ha a kérdés
szövege ugyan az, de más válasz is lehet. A nyilak segítségével
válogathatsz a válaszok között.
</li>
<li>
Bal oldalt felső szám (1./3.)
<br />
Itt az 1. azt jelenti hogy az oldalon az első kérdéshez van
megjelenítve a válasz, a 3. pedig azt, hogy a sok talált
válaszok közül a 3.
</li>
<li>
A kérdés mellett lévő [0]
<br />A teszt kérdésben itt épp egy kép van, és azt jelenti a
szögletes zárójelben lévő szám. A tesztben lévő képnél is
megjelenik ez a [0] azonosító, hogy könnyen párosítani lehessen.
<br />
Ez akkor hasznos, ha képekhez tartozik a válasz. Ekkor figyelni
kell, mert a képek nem biztos hogy sorrendben vannak a
tesztben a talált válaszhoz képest, de a []-ben lévő azonosítók
segítenek.
</li>
</ul>
</li> </li>
</ul> </ul>
</div> </div>
</>
) )
} }
function RiskSection() { function RiskSection() {
return ( return (
<> <>
Itt {'"én"'} alatt a szerver, weboldal és script egyedüli üzemeltetője
értendő, az egyetlen személy, aki hozzáfér akármilyen szolgáltatással
kapcsolatos adathoz, pl.: szerver statisztikák, szerver operációs
rendszere, beküldött fájlok. A weboldalon a felhasználó azonosítója:{' '}
<i>#1</i>
<ul> <ul>
<li>
<b>Beküldött fájlok kezelése</b>A beküldött fájlokban szerepelhet
személyes adat, pl.: név. Ha ilyen információval találkozok, akkor azt
ki szoktam törölni. Ezekhez a fájlokhoz és információkhoz csak én
férek hozzá, és sehova sincs kiadva. Ezek az információk nincsenek
sehol gyűjtve.
</li>
<li>
<b>
Ha esetleg {'"'}lebukik{'"'} a szerver, és tárolt személyes infók
</b>
Semmi személyes információ nincs eltárolva szerveren. Egyedüli
információ amit egyáltalán ki tudnék deríteni az amúgy is az IP címed,
de az nincs letárolva. Ha nagyon gonosz lennék, akkor a script el
tudná küldeni a neved és talán még 1-2 adatot a szervernek, de ezt nem
teszi.
<p />
Bizonyíték? A script, weboldal és szerver teljesen nyílt forráskódú,{' '}
<Link href="/contribute#gitrepo">
<a>ezek repository-ja publikus</a>
</Link>{' '}
(contribute oldal alja), és akármikor felülvizsgálható. A script a te
böngésződben fut, tampermonkey bővítmény menüjében megtekinthető
milyen kód fut pontosan.
</li>
<li> <li>
<b>Bármikor észrevehetik hogy használod a scriptet</b>A weboldalt már <b>Bármikor észrevehetik hogy használod a scriptet</b>A weboldalt már
kevésbé, de úgy nem menti el a kérdéseket a script, mert nem fut.{' '} kevésbé, de úgy nem menti el a kérdéseket a script, mert nem fut.{' '}
@ -248,24 +181,6 @@ function RiskSection() {
<b>Akármelyik válasz rossz lehet</b> <b>Akármelyik válasz rossz lehet</b>
Pl.: ha a script rosszul menti le, vagy rossz kérdésre ad választ Pl.: ha a script rosszul menti le, vagy rossz kérdésre ad választ
</li> </li>
<li>
<b>
Ha esetleg {'"'}lebukik{'"'} a szerver, és személyes infók
</b>
Semmi személyes információ nincs eltárolva szerveren. Egyedüli
információ amit egyáltalán ki tudnék deríteni az amúgy is az IP címed,
de az nincs letárolva. Ha nagyon gonosz lennék, akkor a script el
tudná küldeni a neved és talán még 1-2 adatot a szervernek, de ezt nem
teszi.
<p />
Bizonyíték? A script, weboldal és szerver teljesen nyílt forráskódú,{' '}
<Link href="/contribute#gitrepo">
<a>ezek repository-ja publikus</a>
</Link>{' '}
(contribute oldal alja), és akármikor felülvizsgálható. A script a te
böngésződben fut, tampermonkey bővítmény menüjében megtekinthető
milyen kód fut pontosan.
</li>
</ul> </ul>
</> </>
) )
@ -275,23 +190,45 @@ function WebsiteSaveSection() {
return ( return (
<> <>
<p> <p>
Ha hibát észlesz, kérlek jelents. Hogy a hibákat a saját gépemen Ha hibát találsz, kérlek jelents. Hogy a hibákat a saját gépemen
reprodukálni tudjam, és könnyen ki bírjam javítani, sokszor jól jön, ha reprodukálni tudjam, és könnyen ki bírjam javítani, sokszor jól jön, ha
egy lementett weboldalt megkapok, amin a hiba történik. Így lehet egy lementett weboldalt megkapok, amin a hiba történik. Így lehet
menteni egy oldalt: menteni egy oldalt:
</p> </p>
<center> <ul>
<li>
Lementett oldalon jobb klikk, oldal mentése
<br />
<img <img
style={{ maxWidth: '90%' }} src="img/faq/sitesave-1.jpg"
src="img/websitesave.png"
alt="img" alt="img"
className={'manual_img'} className={'manual_img'}
/> />
</li>
<li>
A lementett oldal egy fájlból és mappából áll.
<br /> <br />
<a href="/contact" rel="noreferrer"> <img
Ide tudod feltölteni src="img/faq/sitesave-2.jpg"
</a> alt="img"
</center> className={'manual_img'}
/>
</li>
<li>
A fájlt nyisd meg szövegszerkesztővel (notepad), és keress a
nevedre, majd (csak a neved, ne a sort) töröld ki, és mentsd el. Nem
szoktam megnézni a neveket, nem is tudok velük mit kezdeni, és nem is
adom ki soha. Amit beküldesz, azt csak én látom.{' '}
<Link href="/faq?tab=risk">
<a>Több infó itt</a>
</Link>{' '}
</li>
<li>
<Link href="/contact">
<a>Ide tudod feltölteni</a>
</Link>{' '}
</li>
</ul>
<p> <p>
Mivel nincs hozzáférésem semmilyen egyetemi oldalhoz, így csak így tudom Mivel nincs hozzáférésem semmilyen egyetemi oldalhoz, így csak így tudom
hatékonyan tesztelni a scriptet. Ezért hatalmas segítség ha feltöltöd hatékonyan tesztelni a scriptet. Ezért hatalmas segítség ha feltöltöd
@ -301,45 +238,150 @@ function WebsiteSaveSection() {
) )
} }
function ScriptReinstallSection() { function ScriptSection() {
return ( return (
<> <div className={'manualBody'}>
<p>
Jelenleg két helyről lehet telepíteni a scriptet: greasyforkról és a
weboldalról. A greasyforkos telepítési lehetőség megszűnt, így ha onnan
telepítetted, akkor nem lesznek frissítések elérhetők (amik nagyon
fontosak (de tényleg)). Ezért a következő rövid manővert kellene
végrehajtani, hogy minden zökkenőmentesen menjen:
</p>
<ul> <ul>
<li>Böngésző bővítményeidnél kattints a tampermonkey-ra</li>
<li>Válaszd ki alulról második opciót, ami dashboard néven fut</li>
<li> <li>
Ekkor új tabban felugranak telepített scriptjeid. Keresd meg a <b>Hogy kell a scriptet telepíteni, és milyen oldalakon működik? </b>
Moodle/Elearning/KMOOC test help-et, és a sor végén kattints a kuka <Link href="/script">
gombra <a>Ezen az oldalon van leírva</a>
</Link>{' '}
</li> </li>
<li>Ha megkérdezi mondd neki, hogy biztos törölni akarod</li>
<li> <li>
Ezután simán kattints{' '} <b>Hogyan működik a script?</b>
<ul>
<li>
Az egész folyamat a teszt ellenőrzés oldalon kezdődik, a script
onnan beolvassa, és szervernek beküldi a helyes válaszokat
</li>
<li>
Ezután ha újból kitöltöd a tesztet, vagy ugyanazzal a kérdéssel
találkozol másik tesztben (pl.: gyakorló teszt után zh/vizsga)
akkor ott megjeleníti a választ
</li>
<li>
Más felhasználóknak köszönhetően már valószínűleg lesznek
megoldások a tesztjeidhez.{' '}
<Link href="/allQuestions">
<a>Itt</a>
</Link>{' '}
meg tudod tekinteni, hogy vannak-e válaszok a tárgyadhoz.
</li>
<li>
Ha teszt ellenőrzés oldal nem elérhető, vagy nem egyértelműen
kitalálható a helyes válasz, akkor a script nem tud mit csinálni,
nem ment le semmit
</li>
</ul>
</li>
<li>
<b>
A teszt ellenőrző oldal nem elérhető. Ilyenkor lehet valamit tenni,
hogy mégis el legyenek mentve a válaszok?
</b>
A{' '}
<a <a
href="http://qmining.frylabs.net/install?man" href={`${constants.siteUrl}dataeditor`}
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
> >
ide dataeditor
</a>{' '} </a>{' '}
a script újratelepítéséhez a weboldalról. oldal erre is , a <i>Kitöltetlen tesztek</i> részhez a script
automatikusan feltölti a kérdéseket még megoldás közben. Ehhez nincs
lementve helyes válasz, de ezt te utólag bejelölheted, és beküldheted.
</li> </li>
<li> <li>
Kész! Lehet megkérdezi újra, hogy elérheti-e a szervert, de azt csak <b>
egyszer. Szokásos módon engedélyezd, hogy le bírja kérni a helyes Olyan helyeken fut le a script, ahol nem kellene, vagy ideiglenesen
válaszokat ki akarom kapcsolni
</b>
Tampermonkey bővítmény ikon böngészőben -{'>'} click -{'>'} a scriptet
kapcsold ki. Csak ne felejtsd el visszakapcsolni {';)'}
</li>
<li>
<b>
Túl nagy a kérdést és a választ megjelenítő ablak, nem tudok a
válaszra kattintani
</b>
A felugró ablakot ha minden jól megy akkor a szélénél fogva tudod
mozgatni, vagy egeret rajtatartva a görgővel tudod állítani az
áttetszőségét, vagy be tudod zárni jobb felül X-el, vagy egér középső
gombbal.
</li>
<li>
<b>Script felugró ablakon szereplő adatok és gombok értelmezése</b>
<img
className={'manual_img'}
src="img/scriptimg/script-3.jpg"
alt="img"
/>
<ul>
<li>
Felső középső szöveg:
<br />
[Talált kérdés tárgya] - [Talált kérdés adatbázisának neve]
</li>
<li>
Jobb oldalt nyilak:
<br />
Ha több kérdés van egy oldalon, akkor azzal lehet váltogatni
</li>
<li>
Bal oldalt felső szám (5./1.)
<br />
Azt jelöli, hogy éppen hányadik kérdés válasza van megjelenítve.
Itt a 5./1. azt jelenti, hogy a tesztben a 5. kérdés 1. talált
válasza.
</li>
<li>
Bal oldalt %
<br />A szerver szerint hány százalékban egyezik a talált válasz
azzal, amit tényleg keresni kell
</li>
<li>
Középen
<br />
Első sorban kérdés, másodikban válasz (ha a sor hosszú, akkor
megtörhet)
</li> </li>
</ul> </ul>
Ezzel semmi adat nem vész el, régi jelszó ugyanolyan marad (csak ne <img
felejtsd azt el) className={'manual_img'}
</> src="img/scriptimg/script-4.jpg"
alt="img"
/>
<ul>
<li>
Alul nyilak:
<br />
Itt egy kérdésre több találat van, így közöttük neked kell
eldönteni, hogy mi a helyes válasz. Ez akkor van, ha a kérdés
szövege ugyan az, de más válasz is lehet. A nyilak segítségével
válogathatsz a válaszok között.
</li>
<li>
Bal oldalt felső szám (1./3.)
<br />
Itt az 1. azt jelenti hogy az oldalon az első kérdéshez van
megjelenítve a válasz, a 3. pedig azt, hogy a sok talált válaszok
közül a 3.
</li>
<li>
A kérdés mellett lévő [0]
<br />A teszt kérdésben itt épp egy kép van, és azt jelenti a
szögletes zárójelben lévő szám. A tesztben lévő képnél is
megjelenik ez a [0] azonosító, hogy könnyen párosítani lehessen.
<br />
Ez akkor hasznos, ha képekhez tartozik a válasz. Ekkor figyelni
kell, mert a képek nem biztos hogy sorrendben vannak a tesztben
a talált válaszhoz képest, de a []-ben lévő azonosítók segítenek.
</li>
</ul>
</li>
</ul>
</div>
) )
} }
@ -372,19 +414,19 @@ function AddSite() {
</li> </li>
<li> <li>
Böngészőben nyisd meg a Tampermonkey bővítményt <br /> Böngészőben nyisd meg a Tampermonkey bővítményt <br />
<img className={'manual_img'} src={`img/siteadd/1.png`} /> <img className={'manual_img'} src={`img/faq/siteadd-1.png`} />
<br /> <br />
Itt kattints a Dashboard-ra. Itt kattints a Dashboard-ra.
</li> </li>
<li> <li>
Keresd meg a scriptet, majd kattints : Keresd meg a scriptet, majd kattints :
<br /> <br />
<img className={'manual_img'} src={`img/siteadd/2.png`} /> <img className={'manual_img'} src={`img/faq/siteadd-2.png`} />
</li> </li>
<li> <li>
A felugró szerkesztőben keresd meg a következő sorokat: A felugró szerkesztőben keresd meg a következő sorokat:
<br /> <br />
<img className={'manual_img'} src={`img/siteadd/3.png`} /> <img className={'manual_img'} src={`img/faq/siteadd-3.png`} />
</li> </li>
<li> <li>
Itt az egyik <i>@require ...</i> sor után egy új sorban írd be az Itt az egyik <i>@require ...</i> sor után egy új sorban írd be az
@ -399,7 +441,7 @@ function AddSite() {
rajta. Ezek után azon az oldalon amit beírtál meg kell jelennie a rajta. Ezek után azon az oldalon amit beírtál meg kell jelennie a
Tampermonkey menüjében is: Tampermonkey menüjében is:
<br /> <br />
<img className={'manual_img'} src={`img/siteadd/4.png`} /> <img className={'manual_img'} src={`img/faq/siteadd-4.png`} />
</li> </li>
<li> <li>
Ha a tesztek közben mégsem megy, akkor ellenőrizd, hogy a beírt moodle Ha a tesztek közben mégsem megy, akkor ellenőrizd, hogy a beírt moodle
@ -417,16 +459,19 @@ function AddSite() {
const pages = { const pages = {
faq: { name: 'Vegyes általános kérdések', component: FAQSection }, faq: { name: 'Vegyes általános kérdések', component: FAQSection },
script: {
name: 'Script specifikus kérdések',
component: ScriptSection,
},
pw: { name: 'Infó jelszavakról', component: PasswordSection }, pw: { name: 'Infó jelszavakról', component: PasswordSection },
risk: { name: 'Kockázatok', component: RiskSection }, risk: {
name: 'Kockázatok, személyes infók kezelése',
component: RiskSection,
},
websitedl: { websitedl: {
name: 'Teszt közbeni hiba jelentése', name: 'Teszt közbeni hiba jelentése',
component: WebsiteSaveSection, component: WebsiteSaveSection,
}, },
reinstall: {
name: 'Script újratelepítése',
component: ScriptReinstallSection,
},
addsite: { addsite: {
name: 'Futtatás (még) nem támogatott oldalon', name: 'Futtatás (még) nem támogatott oldalon',
component: AddSite, component: AddSite,

View file

@ -1,3 +1,7 @@
.content {
text-align: justify;
}
.content b { .content b {
color: #fff; color: #fff;
display: block; display: block;

View file

@ -8,7 +8,7 @@ import ExternalLinkIcon from '../components/externalLinkIcon'
import styles from './script.module.css' import styles from './script.module.css'
function fetchSupportedSites(from) { function fetchSupportedSites() {
return new Promise((resolve) => { return new Promise((resolve) => {
fetch(`${constants.apiUrl}supportedSites`, { fetch(`${constants.apiUrl}supportedSites`, {
credentials: 'include', credentials: 'include',
@ -114,29 +114,33 @@ export default function Script() {
</Link> </Link>
</li> </li>
</ol> </ol>
<b>Script működési elve:</b> <b>Példa felugró ablakokra:</b>
<ul> <ul>
<li> <li>
Az egész folyamat a teszt ellenőrzés oldalon kezdődik, a script Menü bejelentkezés előtt / után:
onnan beolvassa, és szervernek beküldi a helyes válaszokat <br />
<img src="img/scriptimg/script-2.jpg" alt="img" />
<img src="img/scriptimg/script-1.jpg" alt="img" />
</li> </li>
<li> <li>
Ezután ha újból kitöltöd a tesztet, vagy ugyanazzal a kérdéssel Teszt közben felugró ablak a kérdéssel és válasszal:
találkozol másik tesztben (pl.: zh/vizsga) akkor ott megjeleníti a <br />
választ <img src="img/scriptimg/script-3.jpg" alt="img" />
</li>
</ul>
<b>Amiket az ablakokkal lehet csinálni:</b>
<ul>
<li>
Görgővel lehet az ablakok áttetszőségét állítani (menü / felugró
ablakét külön)
</li> </li>
<li> <li>
Más felhasználóknak köszönhetően már valószínűleg lesznek megoldások Az felső üzenet ablakot meg lehet fogni és mozgatni a szélénél (ahol
a tesztjeidhez.{' '} a kurzor átvált)
<Link href="/allQuestions">
<a>Itt</a>
</Link>{' '}
meg tudod tekinteni, hogy vannak-e válaszok a tárgyadhoz.
</li> </li>
<li> <li>
Ha teszt ellenőrzés oldal nem elérhető, vagy nem egyértelműen Jobb felső X gombbal be lehet zárni az ablakot, illetve ahol lehet
kitalálható a helyes válasz, akkor a script nem tud mit csinálni, mozgatni ott középső egér gombra be is zárul{' '}
nem ment le semmit
</li> </li>
</ul> </ul>
<b>Egyéb fontos tudnivalók:</b> <b>Egyéb fontos tudnivalók:</b>
@ -158,11 +162,6 @@ export default function Script() {
ha esetleg nem lenne elérhető a szerver, vagy bármi hiba történne ha esetleg nem lenne elérhető a szerver, vagy bármi hiba történne
</li> </li>
</ul> </ul>
<b>Példa felugró ablakokra:</b>
<br />
<img className={'manual_img'} src="img/script-3.png" alt="img" />
<br />
<img className={'manual_img'} src="img/script-2.png" alt="img" />
</div> </div>
</div> </div>
) )

View file

@ -1,5 +1,6 @@
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import Head from 'next/head' import Head from 'next/head'
import Link from 'next/link'
import LoadingIndicator from '../components/LoadingIndicator' import LoadingIndicator from '../components/LoadingIndicator'
import Modal from '../components/modal' import Modal from '../components/modal'
@ -440,8 +441,11 @@ export default function UserFiles({ router, globalData }) {
hibás információért, vírusokért és hasonlókért semmi felelősség hibás információért, vírusokért és hasonlókért semmi felelősség
vállalás nincs. vállalás nincs.
</b>{' '} </b>{' '}
Ha valami nem idevalót látsz, azt a Kapcsolat oldalon jelezd kérlek. Ha valami nem idevalót látsz, azt a{' '}
Tudatos károkozásért ban jár. <Link href="/contact">
<a>Kapcsolat</a>
</Link>{' '}
oldalon jelezd kérlek. Tudatos károkozásért ban jár.
</div> </div>
)} )}
<hr /> <hr />