Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • kszk/devteam/kszkepzes/old/kszkepzes-frontend
  • kbgergely/kszkepzes-frontend
2 results
Show changes
...@@ -10,6 +10,19 @@ import EditNewsForm from '../forms/EditNewsForm'; ...@@ -10,6 +10,19 @@ import EditNewsForm from '../forms/EditNewsForm';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import moment from 'moment'; import moment from 'moment';
const linkify = (text) => {
const urlRegex = /(https?:\/\/[^\s]+)/g;
return text.split(urlRegex).map((part, index) =>
part.match(urlRegex) ? (
<a key={index} href={part} target="_blank" rel="noopener noreferrer">
{part}
</a>
) : (
part
)
);
};
class News extends Component { class News extends Component {
UNSAFE_componentWillMount() { UNSAFE_componentWillMount() {
this.props.getNews(); this.props.getNews();
...@@ -61,7 +74,7 @@ class News extends Component { ...@@ -61,7 +74,7 @@ class News extends Component {
renderMultiLine = (text) => { renderMultiLine = (text) => {
const strings = text.split('\n'); const strings = text.split('\n');
return strings.map((string) => <p key={Math.random()}>{string}</p>); return strings.map((string) => <p key={Math.random()}>{linkify(string)}</p>);
}; };
render() { render() {
......
import { Container, Divider, Dropdown, Form, Segment } from 'semantic-ui-react'; import { Container, Divider, Dropdown, Form, Segment } from "semantic-ui-react";
import React, { Component } from 'react'; import React, { Component } from "react";
import { groupChange, submitRegistration, textChange } from '../../actions'; import { groupChange, submitRegistration, textChange } from "../../actions";
import HiddenForm from '../forms/HiddenForm'; import HiddenForm from "../forms/HiddenForm";
import { connect } from 'react-redux'; import { connect } from "react-redux";
import { getDeadline } from '../../actions/auth'; import { getDeadline } from "../../actions/auth";
const options = [ const options = [
{ key: 'DT', text: 'DevTeam', value: 'DT' }, { key: "DT", text: "DevTeam", value: "DT" },
{ key: 'NET', text: 'NETeam', value: 'NET' }, { key: "NET", text: "NETeam", value: "NET" },
{ key: 'ST', text: 'SecurITeam', value: 'ST' }, { key: "ST", text: "SecurITeam", value: "ST" },
{ key: 'SYS', text: 'SysAdmin', value: 'SYS' }, { key: "SYS", text: "SysAdmin", value: "SYS" },
{ key: 'HAT', text: 'Hallgatói Tudásbázis', value: 'HAT' }, { key: "HAT", text: "Hallgatói Tudásbázis", value: "HAT" },
]; ];
class Profile extends Component { class Profile extends Component {
UNSAFE_componentWillMount() { UNSAFE_componentWillMount() {
this.props.getDeadline(); this.props.getDeadline();
if (!this.props.id) { if (!this.props.id) {
this.props.history.push('/home'); this.props.history.push("/home");
} }
} }
...@@ -40,20 +40,20 @@ class Profile extends Component { ...@@ -40,20 +40,20 @@ class Profile extends Component {
return ( return (
<Container <Container
style={{ style={{
marginTop: '1em', marginTop: "1em",
}} }}
> >
{canEdit ? ( {canEdit ? (
<Segment inverted color="red" tertiary> <Segment inverted color="red" tertiary>
<p <p
style={{ fontSize: '1.3em' }} style={{ fontSize: "1.3em" }}
dangerouslySetInnerHTML={{ __html: messageBefore }} dangerouslySetInnerHTML={{ __html: messageBefore }}
/> />
</Segment> </Segment>
) : ( ) : (
<Segment inverted color="red" tertiary> <Segment inverted color="red" tertiary>
<p <p
style={{ fontSize: '1.3em' }} style={{ fontSize: "1.3em" }}
dangerouslySetInnerHTML={{ __html: messageAfter }} dangerouslySetInnerHTML={{ __html: messageAfter }}
/> />
</Segment> </Segment>
...@@ -134,29 +134,30 @@ class Profile extends Component { ...@@ -134,29 +134,30 @@ class Profile extends Component {
</li> </li>
<br /> <br />
<li> <li>
Két előadás közti szünetben úgy döntesz, hogy laptopoddal Kicsit hosszúra nyúlt az előadás és lassan rohannod kell
az index.hu tech cikkeit fogod görgetni. Ám az oldal nem haza, ezért úgy döntesz, hogy megnézed a menetrendet a
válaszol, a hiba okát megpróbálod kideríteni. Ekkor veszed menetrendek.hu weboldalon. Ám az oldal nem válaszol, a
észre, hogy az alábbiakat sem éred el: sze.hu, 444.hu, hiba okát megpróbálod kideríteni. Ekkor veszed észre, hogy
corvinus.hu, startlap.hu. Ugyanakkor a Facebook, a Gmail, az alábbiakat sem éred el: sze.hu, corvinus.hu,
a YouTube, de még az egyetemi oldalak többsége is működik. startlap.hu. Ugyanakkor a Facebook, a Gmail, a YouTube, de
Szerinted mi lehet a hiba oka? még az egyetemi oldalak többsége is működik. Szerinted mi
lehet a hiba oka?
</li> </li>
<br /> <br />
<li> <li>
Találsz egy értelmetlen szöveget egy honlapon (például:{' '} Találsz egy értelmetlen szöveget egy honlapon (például:{" "}
<a href="https://ujonc.kszk.bme.hu/zebra.html"> <a href="https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html">
https://ujonc.kszk.bme.hu/zebra.html https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html
</a> </a>
), de feltűnik, hogy két egyenlőségjellel fejeződik be. ), de feltűnik, hogy egyenlőségjellel fejeződik be.
Nyomozz, s a végeredményt (amit találtál) írd ide! Nyomozz, s a végeredményt (amit találtál) írd ide!
</li> </li>
<br /> <br />
<li> <li>
A <b>ujonc.kszk.bme.hu</b> címen elérhető gépen fut egy A <b>ujonc-gres.kszk.bme.hu</b> címen elérhető gépen fut
szolgáltatás az alapértelmezett <b>5432</b> porton egy szolgáltatás az alapértelmezett <b>5432</b> porton
(használd az előző feladatban kapott adatokat). Belépés (használd az előző feladatban kapott adatokat). Belépés
után keresd meg a feladat megoldását! után írd le mit találtál!
</li> </li>
</ul> </ul>
</div> </div>
...@@ -184,26 +185,30 @@ class Profile extends Component { ...@@ -184,26 +185,30 @@ class Profile extends Component {
címsorába írva eléred a kiszolgáló webszervert. Mi lehet a címsorába írva eléred a kiszolgáló webszervert. Mi lehet a
baj? baj?
</li> </li>
<br />
<li> <li>
Két előadás közti szünetben úgy döntesz, hogy laptopoddal Kicsit hosszúra nyúlt az előadás és lassan rohannod kell
az index.hu tech cikkeit fogod görgetni. Ám az oldal nem haza, ezért úgy döntesz, hogy megnézed a menetrendet a
válaszol, a hiba okát megpróbálod kideríteni. Ekkor veszed menetrendek.hu weboldalon. Ám az oldal nem válaszol, a
észre, hogy az alábbiakat sem éred el: sze.hu, 444.hu, hiba okát megpróbálod kideríteni. Ekkor veszed észre, hogy
corvinus.hu, startlap.hu. Ugyanakkor a Facebook, a Gmail, az alábbiakat sem éred el: sze.hu, corvinus.hu,
a YouTube, de még az egyetemi oldalak többsége is működik. startlap.hu. Ugyanakkor a Facebook, a Gmail, a YouTube, de
Szerinted mi lehet a hiba oka? még az egyetemi oldalak többsége is működik. Szerinted mi
lehet a hiba oka?
</li> </li>
<br />
<li> <li>
Találsz egy értelmetlen szöveget egy honlapon (például:{' '} Találsz egy értelmetlen szöveget egy honlapon (például:{" "}
<a href="https://ujonc.kszk.bme.hu/zebra.html"> <a href="https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html">
https://ujonc.kszk.bme.hu/zebra.html https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html
</a> </a>
), de feltűnik, hogy két egyenlőségjellel fejeződik be. ), de feltűnik, hogy egyenlőségjellel fejeződik be.
Nyomozz, s a végeredményt (amit találtál) írd ide! Nyomozz, s a végeredményt (amit találtál) írd ide!
</li> </li>
<br />
<li> <li>
A <b>ujonc.kszk.bme.hu</b> címen elérhető gépen fut egy A <b>ujonc-gres.kszk.bme.hu</b> címen elérhető gépen fut
szolgáltatás az alapértelmezett <b>5432</b> porton egy szolgáltatás az alapértelmezett <b>5432</b> porton
(használd az előző feladatban kapott adatokat). Belépés (használd az előző feladatban kapott adatokat). Belépés
után keresd meg a feladat megoldását! után keresd meg a feladat megoldását!
</li> </li>
...@@ -214,7 +219,7 @@ class Profile extends Component { ...@@ -214,7 +219,7 @@ class Profile extends Component {
/> />
)} )}
<Divider horizontal>Érdekelődés</Divider> <Divider horizontal>Érdeklődés</Divider>
<Dropdown <Dropdown
fluid fluid
multiple multiple
...@@ -236,12 +241,12 @@ class Profile extends Component { ...@@ -236,12 +241,12 @@ class Profile extends Component {
} }
checked={signed} checked={signed}
readOnly={!canEdit} readOnly={!canEdit}
style={!canEdit ? { marginBottom: '5em' } : null} style={!canEdit ? { marginBottom: "5em" } : null}
/> />
{canEdit ? ( {canEdit ? (
<Form.Button <Form.Button
primary primary
style={{ marginBottom: '5em' }} style={{ marginBottom: "5em" }}
disabled={!signed} disabled={!signed}
onClick={() => onClick={() =>
this.props.submitRegistration({ this.props.submitRegistration({
...@@ -258,7 +263,7 @@ class Profile extends Component { ...@@ -258,7 +263,7 @@ class Profile extends Component {
Mentés Mentés
</Form.Button> </Form.Button>
) : ( ) : (
'' ""
)} )}
</Form> </Form>
</Container> </Container>
......
import 'moment/locale/hu'; import "moment/locale/hu";
import { import {
Accordion, Accordion,
...@@ -7,12 +7,12 @@ import { ...@@ -7,12 +7,12 @@ import {
Header, Header,
Icon, Icon,
Segment, Segment,
} from 'semantic-ui-react'; } from "semantic-ui-react";
import React, { Component } from 'react'; import React, { Component } from "react";
import { connect } from 'react-redux'; import { connect } from "react-redux";
import { getStudentEvents } from '../../actions/statistics'; import { getStudentEvents } from "../../actions/statistics";
import moment from 'moment'; import moment from "moment";
class Schedule extends Component { class Schedule extends Component {
// eslint-disable-next-line react/state-in-constructor // eslint-disable-next-line react/state-in-constructor
...@@ -34,32 +34,34 @@ class Schedule extends Component { ...@@ -34,32 +34,34 @@ class Schedule extends Component {
const { activeIndex } = this.state; const { activeIndex } = this.state;
const { events } = this.props; const { events } = this.props;
const panels = events.map((event) => ( const panels = events
<Accordion key={Math.random()}> .sort((a, b) => a.date - b.date)
<Accordion.Title .map((event) => (
active={activeIndex === event.id} <Accordion key={Math.random()}>
index={event.id} <Accordion.Title
onClick={this.handleClick} active={activeIndex === event.id}
> index={event.id}
<h2> onClick={this.handleClick}
<Grid> >
<Grid.Column floated="left" width={5} textAlign="left"> <h2>
<Icon name="calendar alternate outline" color="blue" />{' '} <Grid>
{event.name} <Grid.Column floated="left" width={5} textAlign="left">
</Grid.Column> <Icon name="calendar alternate outline" color="blue" />{" "}
<Grid.Column floated="right" width={8} textAlign="right"> {event.name}
{moment(event.date).locale('hu').format('LLLL')} </Grid.Column>
</Grid.Column> <Grid.Column floated="right" width={8} textAlign="right">
</Grid> {moment(event.date).locale("hu").format("LLLL")}
</h2> </Grid.Column>
</Accordion.Title> </Grid>
<Accordion.Content active={activeIndex === event.id}> </h2>
<Segment textAlign="left" style={{ overflowWrap: 'break-word' }}> </Accordion.Title>
{event.description} <Accordion.Content active={activeIndex === event.id}>
</Segment> <Segment textAlign="left" style={{ overflowWrap: "break-word" }}>
</Accordion.Content> {event.description}
</Accordion> </Segment>
)); </Accordion.Content>
</Accordion>
));
return ( return (
<div> <div>
...@@ -68,10 +70,10 @@ class Schedule extends Component { ...@@ -68,10 +70,10 @@ class Schedule extends Component {
as="h1" as="h1"
content="Képzés alkalmak" content="Képzés alkalmak"
style={{ style={{
fontSize: '2em', fontSize: "2em",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: '0.5em', marginBottom: "0.5em",
marginTop: '0.5em', marginTop: "0.5em",
}} }}
/> />
<Accordion fluid styled> <Accordion fluid styled>
...@@ -79,12 +81,12 @@ class Schedule extends Component { ...@@ -79,12 +81,12 @@ class Schedule extends Component {
</Accordion> </Accordion>
<Header <Header
as="h1" as="h1"
content="Tábor" content="Tábor: április 11-13"
style={{ style={{
fontSize: '2em', fontSize: "2em",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: '0.5em', marginBottom: "0.5em",
marginTop: '1.5em', marginTop: "1.5em",
}} }}
/> />
</Container> </Container>
......
const { createProxyMiddleware } = require('http-proxy-middleware'); const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) { module.exports = function (app) {
app.use( app.use(
'/api', "/api",
createProxyMiddleware({ createProxyMiddleware({
target: 'http://localhost:8000', target: "http://localhost:8000",
changeOrigin: true, changeOrigin: true,
}) }),
); );
app.use( app.use(
'/admin', "/admin",
createProxyMiddleware({ createProxyMiddleware({
target: 'http://localhost:8000', target: "http://localhost:8000",
changeOrigin: true, changeOrigin: true,
}) }),
); );
app.use( app.use(
'/staticfiles', "/staticfiles",
createProxyMiddleware({ createProxyMiddleware({
target: 'http://localhost:8000', target: "http://localhost:8000",
changeOrigin: true, changeOrigin: true,
}) }),
); );
app.use( app.use(
'/mediafiles', "/mediafiles",
createProxyMiddleware({ createProxyMiddleware({
target: 'http://localhost:8000', target: "http://localhost:8000",
changeOrigin: true, changeOrigin: true,
}) }),
);
app.use(
"/oidc",
createProxyMiddleware({
target: "http://localhost:8000",
changeOrigin: true,
}),
); );
}; };
This diff is collapsed.