mirror of
https://gitlab.com/MrFry/qmining-page
synced 2025-04-01 20:23:44 +02:00
added subject download button, fixed all questions display on allquestions
This commit is contained in:
parent
2e12f3275d
commit
055a732733
5 changed files with 161 additions and 48 deletions
|
@ -98,7 +98,13 @@ function TopBar({
|
|||
)
|
||||
}
|
||||
|
||||
function SideBar({ sidebarOpen, closeSideBar, href, setDonateShowing }) {
|
||||
function SideBar({
|
||||
sidebarOpen,
|
||||
closeSideBar,
|
||||
href,
|
||||
setDonateShowing,
|
||||
setReposShowing,
|
||||
}) {
|
||||
return sidebarOpen ? (
|
||||
<>
|
||||
<div id="sideBarLinks" className={styles.sidebarLinks}>
|
||||
|
@ -120,6 +126,14 @@ function SideBar({ sidebarOpen, closeSideBar, href, setDonateShowing }) {
|
|||
</Link>
|
||||
)
|
||||
})}
|
||||
<a
|
||||
onClick={() => {
|
||||
closeSideBar()
|
||||
setReposShowing(true)
|
||||
}}
|
||||
>
|
||||
Project Git linkek
|
||||
</a>
|
||||
<a
|
||||
onClick={() => {
|
||||
closeSideBar()
|
||||
|
@ -133,6 +147,54 @@ function SideBar({ sidebarOpen, closeSideBar, href, setDonateShowing }) {
|
|||
) : null
|
||||
}
|
||||
|
||||
function Repos() {
|
||||
return (
|
||||
<div>
|
||||
<div className={styles.modalHead}>Project Git repository-k</div>
|
||||
<div style={{ textAlign: 'justify', margin: '8px' }}>
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
href="https://gitlab.com/MrFry/mrfrys-node-server"
|
||||
>
|
||||
Szerver
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
href="https://gitlab.com/MrFry/moodle-test-userscript"
|
||||
>
|
||||
Userscript
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
href="https://gitlab.com/MrFry/qmining-page"
|
||||
>
|
||||
Frontend
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
href="https://gitlab.com/MrFry/qmining-data-editor"
|
||||
>
|
||||
Data editor frontend
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function Donate() {
|
||||
return (
|
||||
<div>
|
||||
|
@ -233,6 +295,7 @@ function MenuIcon({ setSidebarOpen, sidebarOpen }) {
|
|||
export default function Layout({ children, router, globalData }) {
|
||||
const [sidebarOpen, setSidebarOpen] = useState(true)
|
||||
const [donateShowing, setDonateShowing] = useState(false)
|
||||
const [reposShowing, setReposShowing] = useState(false)
|
||||
|
||||
const userId = globalData.userId
|
||||
const unreads = globalData.unreads
|
||||
|
@ -279,8 +342,18 @@ export default function Layout({ children, router, globalData }) {
|
|||
closeSideBar={closeSideBar}
|
||||
href={href}
|
||||
setDonateShowing={setDonateShowing}
|
||||
setReposShowing={setReposShowing}
|
||||
/>
|
||||
</div>
|
||||
{reposShowing ? (
|
||||
<Modal
|
||||
closeClick={() => {
|
||||
setReposShowing(false)
|
||||
}}
|
||||
>
|
||||
<Repos />
|
||||
</Modal>
|
||||
) : null}
|
||||
{donateShowing ? (
|
||||
<Modal
|
||||
closeClick={() => {
|
||||
|
|
|
@ -211,8 +211,8 @@ export default function AllQuestions({ router, globalState, setGlobalState }) {
|
|||
// FIXME: active item is all then no highlight
|
||||
const key = dbs.findIndex((x) => x.path === item.path)
|
||||
setData(null)
|
||||
setSelectedDb(key === 'all' ? 'all' : key)
|
||||
if (key === 'all') {
|
||||
setSelectedDb(key === -1 ? 'all' : key)
|
||||
if (key === -1) {
|
||||
router.replace(
|
||||
`${router.pathname}?question=${encodeURIComponent(
|
||||
searchTerm
|
||||
|
@ -267,7 +267,32 @@ export default function AllQuestions({ router, globalState, setGlobalState }) {
|
|||
setActiveSubjName(subjName)
|
||||
}}
|
||||
/>
|
||||
|
||||
{currSubj && (
|
||||
<>
|
||||
{selectedDb !== 'all' ? (
|
||||
<div className={'buttonContainer'}>
|
||||
<a
|
||||
onClick={() => {
|
||||
window.open(
|
||||
`${constants.apiUrl}allqr.txt?db=${dbs[selectedDb].name}&subj=${currSubj.Name}`,
|
||||
'_blank'
|
||||
)
|
||||
}}
|
||||
>
|
||||
{'Tárgy kérdéseinek letöltése'}
|
||||
<ExternalLinkIcon size={15} />
|
||||
</a>
|
||||
</div>
|
||||
) : (
|
||||
<div style={{ textAlign: 'center' }}>
|
||||
<i>
|
||||
Tárgy letöltéséhez válaszd ki a pontos DB-t az{' '}
|
||||
{'"Összes kérdés"'} helyett!
|
||||
</i>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
<div>
|
||||
<hr />
|
||||
<Subject subj={currSubj} />
|
||||
|
|
|
@ -12,6 +12,10 @@ function PasswordSection() {
|
|||
<div className={'manualBody'}>
|
||||
<ul>
|
||||
<li>Minden felhasználónak más jelszava van.</li>
|
||||
<li>
|
||||
A jelszavak automatikusan és azonnal szinkronizálva vannak peerek
|
||||
között. Egy jelszó minden peer-hez jó
|
||||
</li>
|
||||
<li>Elvileg elég csak egyszer beírnod, és többet nem kell, de </li>
|
||||
<li>
|
||||
Mentsd le biztos helyre a jelszót, hogy később is meglegyen!
|
||||
|
@ -77,14 +81,6 @@ function FAQSection() {
|
|||
<br />
|
||||
Több infó a <Link href="/faq?tab=risk">kockázatok résznél</Link>.
|
||||
</li>
|
||||
<li>
|
||||
<b>Peer váltás után nem tudok bejelentkezni!</b>
|
||||
Peer (vagy másnéven host) váltás után ha még nem kapcsolódtál a
|
||||
megadott host-hoz engedélyezned kell a scriptnek hogy csatlakozzon
|
||||
hozzá. Ez a felugró ablak nem minding azonnal jelenik meg, néha
|
||||
előfordulhat hogy frissíteni kell az oldalt. Ha ezután sem működik
|
||||
ellenőrizd hogy elérhető-e a host
|
||||
</li>
|
||||
<li>
|
||||
<b>Hogyan tudok a projektben segíteni?</b>
|
||||
Szinte mindig végtelen javítanivaló és tennivaló a projekttel
|
||||
|
@ -110,10 +106,9 @@ function RiskSection() {
|
|||
<li>
|
||||
<b>Adminnak küldött fájlok kezelése</b>A beküldött fájlokban
|
||||
(adminnnak chat-en küldött, vagy kapcsolat oldalon küldött fájlok)
|
||||
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.
|
||||
szerepelhet személyes adat, pl.: név. Ezekhez a fájlokhoz és
|
||||
információkhoz csak az admin fér hozzá. Ezek az információk nincsenek
|
||||
sehol gyűjtve.
|
||||
</li>
|
||||
<li>
|
||||
<b>
|
||||
|
@ -126,18 +121,17 @@ function RiskSection() {
|
|||
teszi.
|
||||
<p />
|
||||
Bizonyíték? A script, weboldal és szerver teljesen nyílt forráskódú,{' '}
|
||||
TODO: ADD CONTRIBUTE TAB
|
||||
<Link href="/contribute#gitrepo">
|
||||
ezek repository-ja publikus
|
||||
</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.
|
||||
ezek repository-ja publikus, é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, és frissítéseknél megtekinthetőek a
|
||||
változások.
|
||||
<p />A projeckt git repókhoz vezető linkek megtalálhatók az
|
||||
oldalsávban
|
||||
</li>
|
||||
<li>
|
||||
<b>Bármikor észrevehetik hogy használod a scriptet</b> Vannak rá
|
||||
módszerek, hogy a weboldalon érzékeljék hogy fut-e userscript, de ez
|
||||
ellen minden ismert módon védekezik a script. <p />
|
||||
ellen védekezik a script. <p />
|
||||
A script shadow-root hoz teszi hozzá az összes megjelenített
|
||||
elementet, így ezeket lehetetlen detektálni. A moodle semmiféleképpen
|
||||
nem látja, hogy milyen más oldalak vannak megnyitva a böngésződben.
|
||||
|
@ -147,8 +141,8 @@ function RiskSection() {
|
|||
át, hanem javascript eseménnyel, amit nem tud nyomon követni.
|
||||
<p />
|
||||
Aztán ki tudja ténylegesen hogy lehet, ezért{' '}
|
||||
<b>csak saját felelősségre használd a scriptet!</b>
|
||||
<p />A kérdésekre a válaszokat
|
||||
<i>csak saját felelősségre használd a scriptet!</i>
|
||||
<p />A kérdésekre a válaszokat{' '}
|
||||
<a
|
||||
href={`${constants.siteUrl}dataeditor`}
|
||||
target="_blank"
|
||||
|
@ -157,7 +151,8 @@ function RiskSection() {
|
|||
manuálisan is be lehet küldeni
|
||||
</a>
|
||||
, és teszt kitöltés közben helyes válaszokat a weboldalon is meg lehet
|
||||
keresni.
|
||||
keresni. Ez viszont azért lehet veszélyes, mert a moodle figyelheti
|
||||
mikor veszíti el a fókuszt a weboldal.
|
||||
</li>
|
||||
<li>
|
||||
<b>Bármikor leállhat a szerver</b>
|
||||
|
@ -177,8 +172,8 @@ function RiskSection() {
|
|||
<b>Akármelyik válasz rossz lehet</b>
|
||||
Pl.: ha a script rosszul menti le, vagy rossz kérdésre ad választ. A
|
||||
script minding a moodle szerint helyesnek vélt választ menti le, így
|
||||
előfordulhat hogy logikailag nem helyes a válasz, de a tanárok azt
|
||||
jelölték be helyesnek.
|
||||
ritkán előfordulhat hogy logikailag nem helyes a válasz, de a tanárok
|
||||
azt jelölték be helyesnek.
|
||||
</li>
|
||||
</ul>
|
||||
</>
|
||||
|
@ -303,6 +298,14 @@ function ScriptSection() {
|
|||
áttetszőségét, vagy be tudod zárni jobb felül X-el, vagy egér középső
|
||||
gombbal.
|
||||
</li>
|
||||
<li>
|
||||
<b>Peer váltás után nem tudok bejelentkezni a scripten keresztül!</b>
|
||||
Peer (vagy másnéven host) váltás után ha még nem kapcsolódtál a
|
||||
megadott host-hoz engedélyezned kell a scriptnek hogy csatlakozzon
|
||||
hozzá. Ez a felugró ablak nem minding azonnal jelenik meg, néha
|
||||
előfordulhat hogy frissíteni kell az oldalt. Ha ezután sem működik
|
||||
ellenőrizd hogy elérhető-e a host
|
||||
</li>
|
||||
<li>
|
||||
<b>Script felugró ablakon szereplő adatok és gombok értelmezése</b>
|
||||
<img
|
||||
|
@ -448,13 +451,14 @@ function AddSite() {
|
|||
function P2PSection() {
|
||||
return (
|
||||
<>
|
||||
<p>
|
||||
A szerverben peer to peer (p2p) funkcionalitás is implementálva van, így
|
||||
ha több szerver fut egyszerre, akkor azok meg tudják osztani egymás
|
||||
között a fontosabb adatokat, így az összes szerveren ugyanazok az adatok
|
||||
érhetőek el.
|
||||
</p>
|
||||
Szinkronizált adatok:
|
||||
A szerverben peer to peer (p2p) funkcionalitás is implementálva van, így
|
||||
ha több szerver fut egyszerre, akkor azok meg tudják osztani egymás között
|
||||
a fontosabb adatokat, így az összes szerveren ugyanazok az adatok érhetőek
|
||||
el.
|
||||
<p />
|
||||
Ha az egyik szerver kiesne, a script a megadott szerverek közül választ
|
||||
egy újat.
|
||||
<p />A következő adatok a szerverek között azonnal szinkronizálva vannak:
|
||||
<ul>
|
||||
<li>
|
||||
<i>Felhasználók</i>: egy jelszóval az összes oldalra be tudsz lépni
|
||||
|
@ -470,13 +474,26 @@ function P2PSection() {
|
|||
<li>Fórum</li>
|
||||
<li>Motd (motto of the day)</li>
|
||||
</ul>
|
||||
A szinkronizált adatok frissessége több mindenen múlik: a szerver adminja
|
||||
szinkronizál-e rendesein, illetve a két szerver között működik-e a
|
||||
felhasználó szinkronizálás (van-e publick key megoszva a kettő között)
|
||||
<h4>Peerek kezelése scriptnél:</h4>
|
||||
Ha nincs alapértelmezett peer, akkor ez az ablak fog megjelenni:
|
||||
<br />
|
||||
<img src="img/scriptimg/script-5.jpg" alt="img" />
|
||||
<br />
|
||||
Itt a szerver domain-jét kell megadni a következő példa formátumban:
|
||||
{" 'qmining.com'"}, {"'https://'"} és {"'/'"}-ek nélkül
|
||||
<p />
|
||||
Egy szerverhez beérkező új kérdések automatikusan tovább vannak küldve a
|
||||
szervernél regisztrált peerekhez, így az új kérdések azonnal elérhetők
|
||||
mindenhol máshol.
|
||||
<img src="img/scriptimg/script-1.jpg" alt="img" />
|
||||
<br />
|
||||
Ennél az ablaknál a legördülő menüben ki lehet választani egy másik peert,
|
||||
vagy újat lehet hozzáadni. Ha olyan peer-hez próbál a script kapcsolódni,
|
||||
amihez még előtte nem kapcsolódott, akkor engedélyezned kell a felugró
|
||||
ablakban a tampermonkey-nak, hogy csatlakozhasson a domain-hez.
|
||||
<br />
|
||||
<img
|
||||
style={{ width: '70%' }}
|
||||
src="img/scriptimg/script-6.jpg"
|
||||
alt="img"
|
||||
/>
|
||||
<p />A szervereknek 1-1 adminja van, akik belelátnak minden szerveren
|
||||
tárolt adatba, a szervereken ők a <i>#1</i> számú felhasználók. Errő
|
||||
többet a <Link href="/faq?tab=risk">kockázatok résznél</Link> tudtok
|
||||
|
|
|
@ -149,12 +149,8 @@ export default function P2PInfo({ globalState, setGlobalState }) {
|
|||
<Header title={'P2P infó'} />
|
||||
<div style={{ textAlign: 'center' }}>
|
||||
A weboldal peer to peer (p2p) megoldást implementál, folyamatosan
|
||||
megosztja az új kérdéseket a lent megadott regisztrált szerverekkel,
|
||||
és hozzáadja a kapott új kérdéseket a helyi adatbázishoz.
|
||||
<p />
|
||||
Ha az egyik szerver kiesne, a script a megadott szerverek közül
|
||||
választ egy újat. A felhasználók is szinkronizálva vannak, így a
|
||||
jelenlegi jelszavaddal bármelyik másik oldalra be tudsz lépni
|
||||
megosztja az új kérdéseket és felhasználókat a lent megadott
|
||||
regisztrált szerverekkel
|
||||
<p />A szervert akár te is hostolhatod, érdeklődj a lentebb megadott
|
||||
kontakton
|
||||
</div>
|
||||
|
|
|
@ -109,6 +109,8 @@ export default function PwRequest({ globalData, globalState, setGlobalState }) {
|
|||
ha ugyan az a felhasználó több helyen is belépve marad. A
|
||||
jelszavakról bővebben a <Link href="/faq?tab=pw">GYIK</Link>{' '}
|
||||
vonatkozó részében olvashatsz.
|
||||
<p />A jelszavak automatikusan és azonnal szinkronizálva vannak
|
||||
peerek között. Egy jelszó minden peer-hez jó
|
||||
</p>
|
||||
</div>
|
||||
<div className={styles.text}>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue