mirror of
https://gitlab.com/MrFry/qmining-page
synced 2025-04-01 20:23:44 +02:00
Merge branch 'new_style-2' into new_style
This commit is contained in:
commit
03aefe21b4
18 changed files with 461 additions and 522 deletions
|
@ -1,4 +1,4 @@
|
||||||
import React, { PureComponent } from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import Questions from './Questions.js'
|
import Questions from './Questions.js'
|
||||||
|
|
||||||
|
@ -8,10 +8,7 @@ const countReducer = (acc, subj) => {
|
||||||
return acc + subj.Questions.length
|
return acc + subj.Questions.length
|
||||||
}
|
}
|
||||||
|
|
||||||
class QuestionSearchResult extends PureComponent {
|
export default function QuestionSearchResult({ data, searchTerm }) {
|
||||||
render() {
|
|
||||||
const { data, searchTerm } = this.props
|
|
||||||
|
|
||||||
let subjs = []
|
let subjs = []
|
||||||
let results = -1
|
let results = -1
|
||||||
|
|
||||||
|
@ -51,13 +48,11 @@ class QuestionSearchResult extends PureComponent {
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
{searchTerm ? '' : 'Kezdj el írni kereséshez! '}
|
{searchTerm ? '' : 'Kezdj el írni kereséshez! '}
|
||||||
{`${results} találat, ${subjs.length} tárgyból`}
|
{`${results} találat, ${subjs.length || data.length} tárgyból`}
|
||||||
</div>
|
</div>
|
||||||
{results === 0 && (
|
{results === 0 && (
|
||||||
<div>
|
<div>
|
||||||
{
|
{'Pontos egyezést keres a kereső, próbálj kisebb részletre keresni'}
|
||||||
'Pontos egyezést keres a kereső, próbálj kisebb részletre keresni'
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -65,7 +60,14 @@ class QuestionSearchResult extends PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results > constants.maxQuestionsToRender) {
|
if (results > constants.maxQuestionsToRender) {
|
||||||
return renderCount()
|
return (
|
||||||
|
<div>
|
||||||
|
{renderCount()}
|
||||||
|
{searchTerm ? (
|
||||||
|
<div>Szűkítsd a keresést találatok megjelenítéséhez!</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -76,7 +78,4 @@ class QuestionSearchResult extends PureComponent {
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default QuestionSearchResult
|
|
||||||
|
|
22
src/components/externalLinkIcon.js
Normal file
22
src/components/externalLinkIcon.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
export default function ExternalLinkIcon({ size }) {
|
||||||
|
return (
|
||||||
|
<span style={{ margin: '4px', display: 'inline-block' }}>
|
||||||
|
<svg
|
||||||
|
width={size}
|
||||||
|
height={size}
|
||||||
|
viewBox={`0 0 24 24`}
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="2"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
>
|
||||||
|
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
|
||||||
|
<polyline points="15 3 21 3 21 9"></polyline>
|
||||||
|
<line x1="10" y1="14" x2="21" y2="3"></line>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
}
|
|
@ -15,6 +15,51 @@ const renderSnow = () => {
|
||||||
return date.getMonth() === 11 && date.getDate() > 5
|
return date.getMonth() === 11 && date.getDate() > 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function MessageButton({
|
||||||
|
userSpecificMotd,
|
||||||
|
setShowMotdModal,
|
||||||
|
refetchGlobalData,
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div className="msgs">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
if (!userSpecificMotd) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setShowMotdModal(true)
|
||||||
|
if (userSpecificMotd.seen) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fetch(constants.apiUrl + 'infos', {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'include',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
userSpecificMotdSeen: true,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
.then((resp) => {
|
||||||
|
return resp.json()
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
refetchGlobalData()
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
style={{ cursor: userSpecificMotd ? 'pointer' : 'default' }}
|
||||||
|
title={
|
||||||
|
userSpecificMotd && !userSpecificMotd.seen ? "You've got Mail!" : ''
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{userSpecificMotd && !userSpecificMotd.seen ? '📬' : '📭'}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export default function Layout({
|
export default function Layout({
|
||||||
children,
|
children,
|
||||||
route,
|
route,
|
||||||
|
@ -25,6 +70,7 @@ export default function Layout({
|
||||||
const [sidebarOpen, setSidebarOpen] = useState(true)
|
const [sidebarOpen, setSidebarOpen] = useState(true)
|
||||||
const [windowSize, setWindowSize] = useState([100, 200])
|
const [windowSize, setWindowSize] = useState([100, 200])
|
||||||
const [showMotdModal, setShowMotdModal] = useState(false)
|
const [showMotdModal, setShowMotdModal] = useState(false)
|
||||||
|
const [donateShowing, setDonateShowing] = useState(false)
|
||||||
const [showNewMsgModal, setShowNewMsgModal] = useState(true)
|
const [showNewMsgModal, setShowNewMsgModal] = useState(true)
|
||||||
|
|
||||||
const userId = globalData.userId
|
const userId = globalData.userId
|
||||||
|
@ -109,55 +155,22 @@ export default function Layout({
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
<a
|
<a
|
||||||
href={`/donate`}
|
onClick={() => {
|
||||||
className="donate"
|
console.log('AAAAAAAAA')
|
||||||
onClick={closeSideBar}
|
closeSideBar()
|
||||||
target="_blank"
|
setDonateShowing(true)
|
||||||
rel="noreferrer"
|
}}
|
||||||
>
|
>
|
||||||
Donate
|
Donate
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div className="userStatus">
|
<div className="userStatus">
|
||||||
<div className="msgs">
|
<MessageButton
|
||||||
<div
|
userSpecificMotd={userSpecificMotd}
|
||||||
onClick={() => {
|
setShowMotdModal={setShowMotdModal}
|
||||||
if (!userSpecificMotd) {
|
refetchGlobalData={refetchGlobalData}
|
||||||
return
|
/>
|
||||||
}
|
|
||||||
setShowMotdModal(true)
|
|
||||||
if (userSpecificMotd.seen) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fetch(constants.apiUrl + 'infos', {
|
|
||||||
method: 'POST',
|
|
||||||
credentials: 'include',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
userSpecificMotdSeen: true,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
.then((resp) => {
|
|
||||||
return resp.json()
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
refetchGlobalData()
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
style={{ cursor: userSpecificMotd ? 'pointer' : 'default' }}
|
|
||||||
title={
|
|
||||||
userSpecificMotd && !userSpecificMotd.seen
|
|
||||||
? "You've got Mail!"
|
|
||||||
: ''
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{userSpecificMotd && !userSpecificMotd.seen ? '📬' : '📭'}
|
|
||||||
</div>
|
|
||||||
<div title="User ID">UID: {userId || '...'}</div>
|
<div title="User ID">UID: {userId || '...'}</div>
|
||||||
</div>
|
|
||||||
<div
|
<div
|
||||||
className="logout"
|
className="logout"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
@ -175,6 +188,18 @@ export default function Layout({
|
||||||
Logout
|
Logout
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
{donateShowing ? (
|
||||||
|
<Modal
|
||||||
|
closeClick={() => {
|
||||||
|
setDonateShowing(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div>hi</div>
|
||||||
|
</Modal>
|
||||||
|
) : null}
|
||||||
{showMotdModal ? (
|
{showMotdModal ? (
|
||||||
<Modal
|
<Modal
|
||||||
closeClick={() => {
|
closeClick={() => {
|
||||||
|
@ -182,14 +207,9 @@ export default function Layout({
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div style={{ textAlign: 'center' }}>Üzenet admintól:</div>
|
<div style={{ textAlign: 'center' }}>Üzenet admintól:</div>
|
||||||
<div
|
<div dangerouslySetInnerHTML={{ __html: userSpecificMotd.msg }} />
|
||||||
dangerouslySetInnerHTML={{ __html: userSpecificMotd.msg }}
|
|
||||||
/>
|
|
||||||
</Modal>
|
</Modal>
|
||||||
) : null}
|
) : null}
|
||||||
</>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
<div className="content">{children}</div>
|
<div className="content">{children}</div>
|
||||||
{userSpecificMotd && !userSpecificMotd.seen && showNewMsgModal ? (
|
{userSpecificMotd && !userSpecificMotd.seen && showNewMsgModal ? (
|
||||||
<Modal
|
<Modal
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
"install": {
|
|
||||||
"href": "/install",
|
|
||||||
"text": "Install"
|
|
||||||
},
|
|
||||||
"allqr": {
|
|
||||||
"href": "/allqr.txt",
|
|
||||||
"text": "Összes kérdés TXT"
|
|
||||||
},
|
|
||||||
"data": {
|
|
||||||
"href": "/data.json",
|
|
||||||
"text": "Összes kérdés JSON"
|
|
||||||
},
|
|
||||||
"irc": {
|
|
||||||
"href": "/irc?index",
|
|
||||||
"text": "IRC chat"
|
|
||||||
},
|
|
||||||
"dataeditor": {
|
|
||||||
"href": "/dataeditor?index",
|
|
||||||
"text": "Dataeditor"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,14 +3,14 @@
|
||||||
"href": "/",
|
"href": "/",
|
||||||
"text": "Főoldal"
|
"text": "Főoldal"
|
||||||
},
|
},
|
||||||
|
"script": {
|
||||||
|
"href": "/script",
|
||||||
|
"text": "Script"
|
||||||
|
},
|
||||||
"allQuestions": {
|
"allQuestions": {
|
||||||
"href": "/allQuestions",
|
"href": "/allQuestions",
|
||||||
"text": "Kérdések és tárgyak"
|
"text": "Kérdések és tárgyak"
|
||||||
},
|
},
|
||||||
"pwRequest": {
|
|
||||||
"href": "/pwRequest",
|
|
||||||
"text": "Jelszó generálás"
|
|
||||||
},
|
|
||||||
"contribute": {
|
"contribute": {
|
||||||
"href": "/contribute",
|
"href": "/contribute",
|
||||||
"text": "Teendők"
|
"text": "Teendők"
|
||||||
|
@ -18,5 +18,17 @@
|
||||||
"ranklist": {
|
"ranklist": {
|
||||||
"href": "/ranklist",
|
"href": "/ranklist",
|
||||||
"text": "Ranklista"
|
"text": "Ranklista"
|
||||||
|
},
|
||||||
|
"pwRequest": {
|
||||||
|
"href": "/pwRequest",
|
||||||
|
"text": "Jelszó generálás"
|
||||||
|
},
|
||||||
|
"faq": {
|
||||||
|
"href": "/faq",
|
||||||
|
"text": "GYIK"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"href": "/contact",
|
||||||
|
"text": "Kapcsolat"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ textarea {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
background-color: var(--background-color);
|
background-color: var(--background-color);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: 120px;
|
height: 140px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 1px solid #666;
|
border: 1px solid #666;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
@ -39,10 +39,14 @@ textarea {
|
||||||
input {
|
input {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
background-color: var(--background-color);
|
background-color: var(--background-color);
|
||||||
border: 1px solid #444;
|
border: 0px solid #444;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input:focus {
|
||||||
|
border: 0px solid #444;
|
||||||
|
}
|
||||||
|
|
||||||
.link {
|
.link {
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
@ -184,6 +188,7 @@ input {
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtfmImage {
|
.rtfmImage {
|
||||||
|
text-align: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border: 2px solid white;
|
border: 2px solid white;
|
||||||
|
@ -263,6 +268,7 @@ input {
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtfmImage {
|
.rtfmImage {
|
||||||
|
text-align: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin: 0px 10px;
|
margin: 0px 10px;
|
||||||
}
|
}
|
||||||
|
@ -377,3 +383,50 @@ select:hover {
|
||||||
.actions > span:hover {
|
.actions > span:hover {
|
||||||
background-color: var(--hoover-color);
|
background-color: var(--hoover-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.buttonContainer {
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
margin: 10px 0px;
|
||||||
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonContainer > * {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
background-color: #f2cb05;
|
||||||
|
border: none;
|
||||||
|
color: black;
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 15px;
|
||||||
|
margin: 8px 2px 2px 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
text-shadow: 1px 1px 8px black;
|
||||||
|
transition: width 0.5s, height 0.5s, ease-in 0.5s;
|
||||||
|
|
||||||
|
user-select: none;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonContainer > *:active {
|
||||||
|
transform: translateY(2.5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonContainer > *:hover {
|
||||||
|
text-shadow: 2px 2px 8px black;
|
||||||
|
transition: width 0.5s, height 0.5s, ease-out 0.5s;
|
||||||
|
background-color: #a38c1a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonContainer > .activeButton {
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import QuestionSearchResult from '../components/QuestionSearchResult.js'
|
||||||
import Subject from '../components/Subject.js'
|
import Subject from '../components/Subject.js'
|
||||||
import SubjectSelector from '../components/SubjectSelector.js'
|
import SubjectSelector from '../components/SubjectSelector.js'
|
||||||
import Sleep from '../components/sleep'
|
import Sleep from '../components/sleep'
|
||||||
|
import ExternalLinkIcon from '../components/externalLinkIcon'
|
||||||
|
|
||||||
import styles from './allQuestions.module.css'
|
import styles from './allQuestions.module.css'
|
||||||
|
|
||||||
|
@ -74,6 +75,7 @@ export default function AllQuestions({ router }) {
|
||||||
const [searchTerm, setSearchTerm] = useState('')
|
const [searchTerm, setSearchTerm] = useState('')
|
||||||
const [activeSubjName, setActiveSubjName] = useState('')
|
const [activeSubjName, setActiveSubjName] = useState('')
|
||||||
const [dbs, setDbs] = useState(null)
|
const [dbs, setDbs] = useState(null)
|
||||||
|
const [selectedDb, setSelectedDb] = useState('')
|
||||||
const [data, setData] = useState(null)
|
const [data, setData] = useState(null)
|
||||||
const [fetchingData, setFetchingData] = useState(false)
|
const [fetchingData, setFetchingData] = useState(false)
|
||||||
const subjectCount = data ? data.length : 0
|
const subjectCount = data ? data.length : 0
|
||||||
|
@ -106,11 +108,13 @@ export default function AllQuestions({ router }) {
|
||||||
setData(null)
|
setData(null)
|
||||||
setFetchingData(true)
|
setFetchingData(true)
|
||||||
if (key === 'all') {
|
if (key === 'all') {
|
||||||
|
setSelectedDb(key)
|
||||||
fetchAllData(dbs).then((res) => {
|
fetchAllData(dbs).then((res) => {
|
||||||
setData(mergeData(res))
|
setData(mergeData(res))
|
||||||
setFetchingData(false)
|
setFetchingData(false)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
setSelectedDb(dbs[key].name)
|
||||||
fetchData(dbs[key]).then((res) => {
|
fetchData(dbs[key]).then((res) => {
|
||||||
setData(res.data)
|
setData(res.data)
|
||||||
setFetchingData(false)
|
setFetchingData(false)
|
||||||
|
@ -238,11 +242,11 @@ export default function AllQuestions({ router }) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{dbs ? (
|
{dbs ? <>{renderDbSelector()}</> : <LoadingIndicator />}
|
||||||
|
{dbs && data ? (
|
||||||
<>
|
<>
|
||||||
{renderDbSelector()}
|
{`${questionCount} kérdés, ${subjectCount} tárgy`}
|
||||||
{data && `${questionCount} kérdés, ${subjectCount} tárgy`}
|
<div className={'buttonContainer'}>
|
||||||
<div className={styles.typeSelector}>
|
|
||||||
<div
|
<div
|
||||||
className={!subjectsShowing ? styles.activeTypeSelector : ''}
|
className={!subjectsShowing ? styles.activeTypeSelector : ''}
|
||||||
onClick={() => setSubjectsShowing(false)}
|
onClick={() => setSubjectsShowing(false)}
|
||||||
|
@ -255,6 +259,21 @@ export default function AllQuestions({ router }) {
|
||||||
>
|
>
|
||||||
Tárgyak
|
Tárgyak
|
||||||
</div>
|
</div>
|
||||||
|
<a
|
||||||
|
onClick={() => {
|
||||||
|
if (selectedDb === 'all') {
|
||||||
|
window.open(`${constants.apiUrl}allqr.txt`, '_blank')
|
||||||
|
} else {
|
||||||
|
window.open(
|
||||||
|
`${constants.apiUrl}allqr.txt?db=${selectedDb}`,
|
||||||
|
'_blank'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{'Kérdések letöltése'}
|
||||||
|
<ExternalLinkIcon size={15} />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{fetchingData ? (
|
{fetchingData ? (
|
||||||
<LoadingIndicator />
|
<LoadingIndicator />
|
||||||
|
@ -266,9 +285,7 @@ export default function AllQuestions({ router }) {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
) : (
|
) : null}
|
||||||
<LoadingIndicator />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,28 +11,3 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.typeSelector {
|
|
||||||
margin: 10px 0px;
|
|
||||||
height: 50px;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.typeSelector div {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
font-size: 18px;
|
|
||||||
color: #fff;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.typeSelector div:hover {
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.activeTypeSelector {
|
|
||||||
background-color: #444;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
|
|
||||||
|
import FeedbackArea from '../components/feedbackArea'
|
||||||
|
|
||||||
import styles from './contact.module.css'
|
import styles from './contact.module.css'
|
||||||
|
|
||||||
const contactMethods = {
|
const contactMethods = {
|
||||||
|
@ -26,6 +28,7 @@ export default function Contact() {
|
||||||
<Head>
|
<Head>
|
||||||
<title>Kapcsolat - Qmining | Frylabs.net</title>
|
<title>Kapcsolat - Qmining | Frylabs.net</title>
|
||||||
</Head>
|
</Head>
|
||||||
|
<FeedbackArea from={'contact'} />
|
||||||
<div className={styles.contactsContainer}>
|
<div className={styles.contactsContainer}>
|
||||||
<div>Itt vannak hogy hogy lehet kontaktolni</div>
|
<div>Itt vannak hogy hogy lehet kontaktolni</div>
|
||||||
{Object.keys(contactMethods).map((key) => {
|
{Object.keys(contactMethods).map((key) => {
|
||||||
|
|
|
@ -1,65 +1,15 @@
|
||||||
import React, { useState } from 'react'
|
import React from 'react'
|
||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
|
|
||||||
import Sleep from '../components/sleep'
|
import Sleep from '../components/sleep'
|
||||||
import Todos from '../components/todoStuff/todos'
|
import Todos from '../components/todoStuff/todos'
|
||||||
|
import FeedbackArea from '../components/feedbackArea'
|
||||||
|
|
||||||
import constants from '../constants.json'
|
import constants from '../constants.json'
|
||||||
import styles from './contribute.module.css'
|
import styles from './contribute.module.css'
|
||||||
import repos from '../data/repos.json'
|
import repos from '../data/repos.json'
|
||||||
|
|
||||||
export default function contribute() {
|
export default function contribute() {
|
||||||
const [newTask, setNewTask] = useState('')
|
|
||||||
|
|
||||||
const submitNewTask = async () => {
|
|
||||||
if (!newTask) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fetch(constants.apiUrl + 'postfeedback', {
|
|
||||||
method: 'POST',
|
|
||||||
credentials: 'include',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
newTask: newTask,
|
|
||||||
from: 'contribute',
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
.then((resp) => {
|
|
||||||
return resp.json()
|
|
||||||
})
|
|
||||||
.then((resp) => {
|
|
||||||
if (resp.success) {
|
|
||||||
alert('Elküldve')
|
|
||||||
setNewTask('')
|
|
||||||
} else {
|
|
||||||
alert('Hiba küldés közben')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
alert('Hiba küldés közben')
|
|
||||||
console.error(err)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const renderNewTaskArea = () => {
|
|
||||||
return (
|
|
||||||
<div className={styles.inputArea}>
|
|
||||||
<textarea
|
|
||||||
onChange={(event) => setNewTask(event.target.value)}
|
|
||||||
value={newTask || ''}
|
|
||||||
className={styles.feedback}
|
|
||||||
/>
|
|
||||||
<button className={styles.button} onClick={submitNewTask}>
|
|
||||||
Küldés
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
|
@ -98,7 +48,7 @@ export default function contribute() {
|
||||||
</a>
|
</a>
|
||||||
-n és megbeszéljük.
|
-n és megbeszéljük.
|
||||||
</div>
|
</div>
|
||||||
{renderNewTaskArea()}
|
<FeedbackArea from={'contribute'} />
|
||||||
<hr />
|
<hr />
|
||||||
<Todos />
|
<Todos />
|
||||||
<Sleep />
|
<Sleep />
|
||||||
|
|
|
@ -14,28 +14,6 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feedback {
|
|
||||||
color: var(--text-color);
|
|
||||||
background-color: var(--background-color);
|
|
||||||
font-size: 14px;
|
|
||||||
width: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
background-color: var(--text-color);
|
|
||||||
border: none;
|
|
||||||
padding: 5px 15px;
|
|
||||||
margin: 5px;
|
|
||||||
color: white;
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inputArea {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
|
|
|
@ -1,116 +1,11 @@
|
||||||
import React from 'react'
|
import React, { useState } from 'react'
|
||||||
|
|
||||||
import Sleep from '../components/sleep'
|
import Sleep from '../components/sleep'
|
||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
|
|
||||||
export default function Manual() {
|
function PasswordSection() {
|
||||||
return <div>{renderMaual()}</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderMaual() {
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<>
|
||||||
<Head>
|
|
||||||
<title>Manual - Qmining | Frylabs.net</title>
|
|
||||||
</Head>
|
|
||||||
<center>
|
|
||||||
<div className={'pageHeader'}>
|
|
||||||
<h1>Manual</h1>
|
|
||||||
</div>
|
|
||||||
<h3 className={'warning'}>
|
|
||||||
Ha az oldalt vagy a scriptet használod: akármikor észrevehetik,
|
|
||||||
leállhat a szerver, és rossz lehet az összes válasz!
|
|
||||||
</h3>
|
|
||||||
<p id="manualWarn">
|
|
||||||
Valószínűleg semmi baj nem lesz, de én szóltam. Ha emiatt aggódsz,
|
|
||||||
olvasd el a <a href="#risk">kockázatok részt</a>.
|
|
||||||
</p>
|
|
||||||
</center>
|
|
||||||
<Sleep />
|
|
||||||
<center></center>
|
|
||||||
<hr />
|
|
||||||
<center>
|
|
||||||
<h2 className={'subtitle'}>A userscript használata</h2>
|
|
||||||
</center>
|
|
||||||
<div className={'manualUsage manualBody'}>
|
|
||||||
<div>
|
|
||||||
<p>
|
|
||||||
Ez a userscript Moodle/Elearnig/KMOOC tesztek megoldása során
|
|
||||||
segítséget jelenít meg.
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Tölts le egy userscript futtató kiegészítőt a böngésződhöz: pl. a{' '}
|
|
||||||
<a
|
|
||||||
href="https://www.tampermonkey.net/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
>
|
|
||||||
Tampermonkey
|
|
||||||
</a>
|
|
||||||
-t.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="http://qmining.frylabs.net/install?man"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
>
|
|
||||||
Kattints ide hogy felrakd a scriptet
|
|
||||||
</a>{' '}
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
A script ezt követően udvariasan megkér, hogy hadd beszélgessen a
|
|
||||||
szerverrel, mert mással nem tud, ezért ezt engedélyezd neki.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
A kitöltendő teszt oldalán a kérdésre a választ kell látnod felül
|
|
||||||
egy lebegő ablakban.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Teszt ellenőrzés oldalon a script beküldi a szervernek a helyes
|
|
||||||
válaszokat, az lementi az új kérdéseket, amik ezután azonnal
|
|
||||||
elérhetők lesznek (neked, és másoknak is)
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
Egyéb fontos tudnivalók:
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Ezt ments sokszor akár minden nap:{' '}
|
|
||||||
<a
|
|
||||||
href="http://qmining.frylabs.net/allqr.txt?man"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
>
|
|
||||||
{' '}
|
|
||||||
Összes kérdés TXT
|
|
||||||
</a>{' '}
|
|
||||||
(az összes összegyűjtött kérdés, ha elszállna a szerver)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Az{' '}
|
|
||||||
<a href="/allQuestions" rel="noreferrer">
|
|
||||||
összes kérdés oldal
|
|
||||||
</a>{' '}
|
|
||||||
az oldal, ahol manuálisan tudsz keresni, ha valami gáz lenne a
|
|
||||||
scripttel.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div className={'rtfmImage'}>
|
|
||||||
<img
|
|
||||||
style={{ maxWidth: '100%', minWidth: '200px' }}
|
|
||||||
src="img/rtfm.jpg"
|
|
||||||
alt="img"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<center>
|
|
||||||
<h2 id="pw" className={'subtitle'}>
|
|
||||||
Jelszavak
|
|
||||||
</h2>
|
|
||||||
</center>
|
|
||||||
<div className={'manualBody'}>
|
<div className={'manualBody'}>
|
||||||
<p>
|
<p>
|
||||||
Ha ezt olvasod valszeg már neked is van. Azért lett bevezetve, hogy
|
Ha ezt olvasod valszeg már neked is van. Azért lett bevezetve, hogy
|
||||||
|
@ -161,9 +56,13 @@ function renderMaual() {
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
<center>
|
</>
|
||||||
<h2 className={'subtitle'}>Gyakran Ismételt Kérdések</h2>
|
)
|
||||||
</center>
|
}
|
||||||
|
|
||||||
|
function FAQSection() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
<div className={'manualBody'}>
|
<div className={'manualBody'}>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
@ -204,12 +103,13 @@ function renderMaual() {
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
</>
|
||||||
<center>
|
)
|
||||||
<h2 id="risk" className={'subtitle'}>
|
}
|
||||||
Kockázatok
|
|
||||||
</h2>
|
function RiskSection() {
|
||||||
</center>
|
return (
|
||||||
|
<>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b>Bármikor észrevehetik hogy használod a scriptet</b>
|
<b>Bármikor észrevehetik hogy használod a scriptet</b>
|
||||||
|
@ -248,9 +148,13 @@ function renderMaual() {
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr />
|
<hr />
|
||||||
<h2 id="sitesave" className={'subtitle'}>
|
</>
|
||||||
Weboldal lementése
|
)
|
||||||
</h2>
|
}
|
||||||
|
|
||||||
|
function WebsiteSaveSection() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
<p>
|
<p>
|
||||||
Ha hibát észlesz, kérlek jelents. Hogy a hibákat a saját gépemen
|
Ha hibát észlesz, 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
|
||||||
|
@ -274,10 +178,13 @@ function renderMaual() {
|
||||||
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
|
||||||
azt az oldalt amin hibával találkozol.
|
azt az oldalt amin hibával találkozol.
|
||||||
</p>
|
</p>
|
||||||
<hr />
|
</>
|
||||||
<h2 id="scriptreinstall" className={'subtitle'}>
|
)
|
||||||
Script újratelepítése
|
}
|
||||||
</h2>
|
|
||||||
|
function ScriptReinstallSection() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
<p>
|
<p>
|
||||||
Jelenleg két helyről lehet telepíteni a scriptet: greasyforkról és a
|
Jelenleg két helyről lehet telepíteni a scriptet: greasyforkról és a
|
||||||
weboldalról. A greasyforkos telepítési lehetőség meg fog szűnni, így ha
|
weboldalról. A greasyforkos telepítési lehetőség meg fog szűnni, így ha
|
||||||
|
@ -313,6 +220,55 @@ function renderMaual() {
|
||||||
</ul>
|
</ul>
|
||||||
Ezzel semmi adat nem vész el, régi jelszó ugyanolyan jó marad (csak ne
|
Ezzel semmi adat nem vész el, régi jelszó ugyanolyan jó marad (csak ne
|
||||||
felejtsd azt el)
|
felejtsd azt el)
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const pages = {
|
||||||
|
faq: { name: 'GYIK', component: FAQSection },
|
||||||
|
pw: { name: 'Jelszavak', component: PasswordSection },
|
||||||
|
risk: { name: 'Kockázatok', component: RiskSection },
|
||||||
|
websitedl: { name: 'Weboldal letöltése', component: WebsiteSaveSection },
|
||||||
|
reinstall: {
|
||||||
|
name: 'Script újratelepítése',
|
||||||
|
component: ScriptReinstallSection,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function FAQ() {
|
||||||
|
const [currPage, setCurrPage] = useState(pages.faq)
|
||||||
|
|
||||||
|
const renderCurrPage = (page) => {
|
||||||
|
if (page) {
|
||||||
|
return <page.component />
|
||||||
|
} else {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Head>
|
||||||
|
<title>GYIK - Qmining | Frylabs.net</title>
|
||||||
|
</Head>
|
||||||
|
<div className={'buttonContainer'}>
|
||||||
|
{Object.keys(pages).map((key) => {
|
||||||
|
const page = pages[key]
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={`${page === currPage && 'activeButton'}`}
|
||||||
|
key={key}
|
||||||
|
onClick={() => {
|
||||||
|
setCurrPage(page)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{page.name}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
{renderCurrPage(currPage)}
|
||||||
|
<Sleep />
|
||||||
<p className={'endofpage'} />
|
<p className={'endofpage'} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
|
@ -1,36 +1,15 @@
|
||||||
import React, { useState, useEffect } from 'react'
|
import React, { useState, useEffect } from 'react'
|
||||||
import fetch from 'unfetch'
|
import fetch from 'unfetch'
|
||||||
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 Sleep from '../components/sleep'
|
import Sleep from '../components/sleep'
|
||||||
import NewsEntry from '../components/newsEntry'
|
import NewsEntry from '../components/newsEntry'
|
||||||
import Composer from '../components/composer'
|
import Composer from '../components/composer'
|
||||||
import DbSelector from '../components/dbSelector.js'
|
|
||||||
|
|
||||||
import styles from './index.module.css'
|
import styles from './index.module.css'
|
||||||
import constants from '../constants.json'
|
import constants from '../constants.json'
|
||||||
|
|
||||||
const links = {
|
|
||||||
install: {
|
|
||||||
href: '/install',
|
|
||||||
text: 'Install',
|
|
||||||
},
|
|
||||||
manual: {
|
|
||||||
href: '/manual',
|
|
||||||
text: 'A script használata',
|
|
||||||
},
|
|
||||||
post: {
|
|
||||||
href: '/',
|
|
||||||
text: 'Bejegyzés írása...',
|
|
||||||
},
|
|
||||||
dataeditor: {
|
|
||||||
href: '/dataeditor',
|
|
||||||
text: 'Kérdés szerkesztő',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetchNews() {
|
function fetchNews() {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
fetch(`${constants.apiUrl}news.json`, {
|
fetch(`${constants.apiUrl}news.json`, {
|
||||||
|
@ -115,7 +94,6 @@ export default function Index({ globalData }) {
|
||||||
const userId = globalData.userId
|
const userId = globalData.userId
|
||||||
const motd = globalData.motd
|
const motd = globalData.motd
|
||||||
const [news, setNews] = useState(null)
|
const [news, setNews] = useState(null)
|
||||||
const [allQrSelector, setAllQrSelector] = useState(null)
|
|
||||||
// const userSpecificMotd = props.globalData.userSpecificMotd
|
// const userSpecificMotd = props.globalData.userSpecificMotd
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -299,66 +277,15 @@ export default function Index({ globalData }) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const renderDbSelector = () => {
|
|
||||||
if (allQrSelector) {
|
|
||||||
return (
|
|
||||||
<DbSelector
|
|
||||||
text={`Válaszd ki melyik adatbázist szeretnéd letölteni!`}
|
|
||||||
showAll={allQrSelector === 'txt'}
|
|
||||||
closeClick={() => {
|
|
||||||
setAllQrSelector(null)
|
|
||||||
}}
|
|
||||||
onDbSelect={(selectedDb) => {
|
|
||||||
if (allQrSelector === 'txt') {
|
|
||||||
if (selectedDb === 'all') {
|
|
||||||
window.open(`${constants.apiUrl}allqr.txt`, '_blank')
|
|
||||||
} else {
|
|
||||||
window.open(
|
|
||||||
`${constants.apiUrl}allqr.txt?db=${selectedDb.name}`,
|
|
||||||
'_blank'
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else if (allQrSelector === 'json') {
|
|
||||||
window.open(`${constants.apiUrl}${selectedDb.path}`, '_blank')
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>Qmining | Frylabs.net</title>
|
<title>Qmining | Frylabs.net</title>
|
||||||
</Head>
|
</Head>
|
||||||
<div className={styles.buttonContainer}>
|
|
||||||
{Object.keys(links).map((key) => {
|
|
||||||
let link = links[key]
|
|
||||||
return (
|
|
||||||
<Link key={key} href={link.href}>
|
|
||||||
<a className={styles.button} target="_blank">
|
|
||||||
{link.text}
|
|
||||||
</a>
|
|
||||||
</Link>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
<a
|
|
||||||
onClick={() => {
|
|
||||||
setAllQrSelector('txt')
|
|
||||||
}}
|
|
||||||
className={styles.button}
|
|
||||||
>
|
|
||||||
{'Összes kérdés TXT'}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{renderMotd()}
|
{renderMotd()}
|
||||||
{/*{userSpecificMotd && renderUserSpecificMotd()} */}
|
{/*{userSpecificMotd && renderUserSpecificMotd()} */}
|
||||||
<Sleep />
|
<Sleep />
|
||||||
{renderNews()}
|
{renderNews()}
|
||||||
{renderDbSelector()}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,3 @@
|
||||||
.buttonContainer {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
color: white;
|
|
||||||
background-color: #313131;
|
|
||||||
margin: 0px 4px;
|
|
||||||
padding: 15px 4px;
|
|
||||||
max-width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 16px;
|
|
||||||
cursor: pointer;
|
|
||||||
word-wrap: break-word;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: width 0.5s, height 0.5s, ease-in 0.5s;
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button:hover {
|
|
||||||
background-color: #555;
|
|
||||||
color: var(--text-color);
|
|
||||||
transition: width 0.5s, height 0.5s, ease-out 0.5s;
|
|
||||||
text-shadow: 2px 1.5px 8px black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hr {
|
.hr {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import React, { useState, useEffect } from 'react'
|
import React, { useState, useEffect } from 'react'
|
||||||
import fetch from 'unfetch'
|
import fetch from 'unfetch'
|
||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
|
import Link from 'next/link'
|
||||||
|
|
||||||
import styles from './pwRequest.module.css'
|
import styles from './pwRequest.module.css'
|
||||||
import constants from '../constants.json'
|
import constants from '../constants.json'
|
||||||
|
|
||||||
export default function PwRequest(props) {
|
export default function PwRequest() {
|
||||||
const [result, setResult] = useState([])
|
const [result, setResult] = useState([])
|
||||||
const [remaining, setRemaining] = useState('...')
|
const [remaining, setRemaining] = useState('...')
|
||||||
const [requestedPWS, setRequestedPWS] = useState('...')
|
const [requestedPWS, setRequestedPWS] = useState('...')
|
||||||
|
@ -56,7 +57,7 @@ export default function PwRequest(props) {
|
||||||
setResult([...result, resp.pw])
|
setResult([...result, resp.pw])
|
||||||
setRemaining(resp.remaining)
|
setRemaining(resp.remaining)
|
||||||
setRequestedPWS(resp.requestedPWS)
|
setRequestedPWS(resp.requestedPWS)
|
||||||
} else if (resp.result === 'success') {
|
} else if (resp.result === 'nouser') {
|
||||||
setResult(['Nem vagy bejelentkezve!']) // this should never happpen
|
setResult(['Nem vagy bejelentkezve!']) // this should never happpen
|
||||||
} else {
|
} else {
|
||||||
setResult([
|
setResult([
|
||||||
|
@ -99,11 +100,11 @@ export default function PwRequest(props) {
|
||||||
egyet és add oda másnak, mint hogy közösen használjatok egyet, mert
|
egyet és add oda másnak, mint hogy közösen használjatok egyet, mert
|
||||||
egyszerre, egy felhasználó csak egy helyen, egy eszközön lehet
|
egyszerre, egy felhasználó csak egy helyen, egy eszközön lehet
|
||||||
belépve, mindenhol máshol automatikusan kijelentkeztetésre kerül. A
|
belépve, mindenhol máshol automatikusan kijelentkeztetésre kerül. A
|
||||||
jelszavakról bővebben a Script használata oldal{' '}
|
jelszavakról bővebben a{' '}
|
||||||
<a href="/manual#pw" target="_blank">
|
<Link href="/faq">
|
||||||
vonatkozó részén
|
<a>GYIK</a>
|
||||||
</a>{' '}
|
</Link>
|
||||||
olvashatsz.
|
-ben olvashatsz.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.text}>
|
<div className={styles.text}>
|
||||||
|
@ -131,10 +132,8 @@ export default function PwRequest(props) {
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={'buttonContainer'}>
|
||||||
<div onClick={handleSubmit} className={styles.button}>
|
<div onClick={handleSubmit}>Jelszó kérése</div>
|
||||||
Jelszó kérése
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{result ? (
|
{result ? (
|
||||||
<div className={styles.pwContainer}>
|
<div className={styles.pwContainer}>
|
||||||
|
|
|
@ -1,33 +1,3 @@
|
||||||
.buttonContainer {
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
background-color: #f2cb05;
|
|
||||||
border: none;
|
|
||||||
color: black;
|
|
||||||
padding: 15px 30px;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 15px;
|
|
||||||
margin: 8px 2px 2px 2px;
|
|
||||||
cursor: pointer;
|
|
||||||
text-shadow: 1px 1px 8px black;
|
|
||||||
transition: width 0.5s, height 0.5s, ease-in 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button:active {
|
|
||||||
transform: translateY(2.5px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.button:hover {
|
|
||||||
text-shadow: 2px 2px 8px black;
|
|
||||||
transition: width 0.5s, height 0.5s, ease-out 0.5s;
|
|
||||||
background-color: #a38c1a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|
110
src/pages/script.js
Normal file
110
src/pages/script.js
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
import Sleep from '../components/sleep'
|
||||||
|
import Head from 'next/head'
|
||||||
|
|
||||||
|
import ExternalLinkIcon from '../components/externalLinkIcon'
|
||||||
|
|
||||||
|
export default function Script() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Head>
|
||||||
|
<title>Manual - Qmining | Frylabs.net</title>
|
||||||
|
</Head>
|
||||||
|
<div className={'buttonContainer'}>
|
||||||
|
<a href="https://www.tampermonkey.net/">
|
||||||
|
Ajánlott userscript kezelő bővítmény
|
||||||
|
<ExternalLinkIcon size={15} />
|
||||||
|
</a>
|
||||||
|
<a href="/install">
|
||||||
|
Script telepítése
|
||||||
|
<ExternalLinkIcon size={15} />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<Sleep />
|
||||||
|
{renderManual()}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderManual() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<center>
|
||||||
|
<h2 className={'subtitle'}>A userscript telepítése, és használata</h2>
|
||||||
|
</center>
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
Ez a userscript Moodle/Elearnig/KMOOC tesztek megoldása során
|
||||||
|
segítséget jelenít meg.
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Tölts le egy userscript futtató kiegészítőt a böngésződhöz: pl. a{' '}
|
||||||
|
<a
|
||||||
|
href="https://www.tampermonkey.net/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Tampermonkey
|
||||||
|
</a>
|
||||||
|
-t.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="http://qmining.frylabs.net/install"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Kattints ide hogy felrakd a scriptet
|
||||||
|
</a>{' '}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
A script ezt követően udvariasan megkér, hogy hadd beszélgessen a
|
||||||
|
szerverrel, ezt engedélyezd neki. (Always allow domain)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
A támogatott oldalakon a script egy apró menü ablakot jelenít meg a
|
||||||
|
weboldal bal alsó részén
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Ezután a kitöltendő teszt oldalán a kérdésre a választ kell látnod
|
||||||
|
felül egy lebegő ablakban.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Teszt ellenőrzés oldalon a script beküldi a szervernek a helyes
|
||||||
|
válaszokat, az lementi az új kérdéseket, amik ezután azonnal
|
||||||
|
elérhetők lesznek (neked, és másoknak is)
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
Egyéb fontos tudnivalók:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Ezt ments sokszor akár minden nap:{' '}
|
||||||
|
<a
|
||||||
|
href="http://qmining.frylabs.net/allqr.txt"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
{' '}
|
||||||
|
Összes kérdés TXT
|
||||||
|
</a>{' '}
|
||||||
|
(az összes összegyűjtött kérdés, ha elszállna a szerver)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Az{' '}
|
||||||
|
<a href="/allQuestions" rel="noreferrer">
|
||||||
|
összes kérdés oldal
|
||||||
|
</a>{' '}
|
||||||
|
az oldal, ahol manuálisan tudsz keresni, ha valami gáz lenne a
|
||||||
|
scripttel.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div>
|
||||||
|
Ha útközben elakadsz, vagy hibát észlelsz, akkor oldalt a Kapcsolat
|
||||||
|
résznél sok elérhetőséget találsz, amin segítséget kérhetsz.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
0
src/pages/script.module.css
Normal file
0
src/pages/script.module.css
Normal file
Loading…
Add table
Add a link
Reference in a new issue