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
Commits on Source (80)
Showing
with 24514 additions and 14939 deletions
variables: variables:
CONTAINER_IMAGE: 'registry.kszk.bme.hu/kszk/devteam/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME' CONTAINER_IMAGE: 'harbor.sch.bme.hu/kszk-kepzes/frontend:$CI_COMMIT_REF_NAME'
stages: stages:
- Pre Build - Pre Build
...@@ -8,9 +8,11 @@ stages: ...@@ -8,9 +8,11 @@ stages:
PreBuild: PreBuild:
stage: Pre Build stage: Pre Build
tags: [docker] # tags: [kszk]
image: node:latest image: node:14.19-alpine3.14
script: script:
- 'echo -n "Node version: " && node --version \
&& echo -n "NPM version: " && npm --version'
- npm install - npm install
- npm run build - npm run build
cache: cache:
...@@ -25,29 +27,32 @@ PreBuild: ...@@ -25,29 +27,32 @@ PreBuild:
Docker build: Docker build:
stage: Docker Build stage: Docker Build
tags: [docker] # tags: [kszk]
only: only:
- tags - tags
image: image:
name: gcr.io/kaniko-project/executor:debug name: gcr.io/kaniko-project/executor:debug
entrypoint: [''] entrypoint: ['']
script: script:
- echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - echo "{\"auths\":{\"harbor.sch.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE
Deploy to Kubernetes: Deploy to Kubernetes:
stage: deploy stage: deploy
image: alpine image: alpine
tags: [k9r]
environment: environment:
name: master name: master
script: before_script:
- chmod 600 $KUBECONFIG
- apk add --no-cache curl - apk add --no-cache curl
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- chmod +x ./kubectl - chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl - mv ./kubectl /usr/local/bin/kubectl
- kubectl version - kubectl version
script:
- cd k8s - cd k8s
- sed -i "s|##IMAGETAG##|${CI_COMMIT_REF_NAME}|" deployment.yaml - sed -i "s|##IMAGETAG##|${CI_COMMIT_REF_NAME}|" deployment.yaml
- kubectl apply -f deployment.yaml - kubectl apply -f ./
only: only:
- tags - tags
...@@ -3,12 +3,14 @@ apiVersion: apps/v1 ...@@ -3,12 +3,14 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: kszkepzes-frontend name: kszkepzes-frontend
namespace: devteam-kszk-bme-hu namespace: kszk-kepzes-site
spec: spec:
replicas: 1 replicas: 1
selector: selector:
matchLabels: matchLabels:
app: kszkepzes-frontend app: kszkepzes-frontend
strategy:
type: Recreate
template: template:
metadata: metadata:
labels: labels:
...@@ -16,9 +18,12 @@ spec: ...@@ -16,9 +18,12 @@ spec:
spec: spec:
containers: containers:
- name: kszkepzes-frontend - name: kszkepzes-frontend
image: registry.kszk.bme.hu/kszk/devteam/kszkepzes-frontend:##IMAGETAG## image: harbor.sch.bme.hu/kszk-kepzes/frontend:##IMAGETAG##
imagePullPolicy: 'Always' imagePullPolicy: 'Always'
ports: ports:
- containerPort: 3000 - containerPort: 3000
resources:
limits:
memory: 200Mi
imagePullSecrets: imagePullSecrets:
- name: kszkepzes-regcred - name: harbor
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: kszk-kepzes-site
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/tls-acme: "true"
name: kszkepzes-frontend
spec:
rules:
- host: "ujonc.kszk.bme.hu"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kszkepzes-frontend
port:
number: 3000
tls:
- hosts:
- "ujonc.kszk.bme.hu"
secretName: kszkepzes-cert
\ No newline at end of file
...@@ -3,7 +3,7 @@ apiVersion: v1 ...@@ -3,7 +3,7 @@ apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: kszkepzes-frontend name: kszkepzes-frontend
namespace: devteam-kszk-bme-hu namespace: kszk-kepzes-site
spec: spec:
type: ClusterIP type: ClusterIP
ports: ports:
......
...@@ -50,7 +50,7 @@ http { ...@@ -50,7 +50,7 @@ http {
try_files $uri =404; try_files $uri =404;
expires 1y; expires 1y;
access_log off; access_log off;
add_header Cache-Control "public"; add_header Cache-Control "public, max-age=60";
} }
# Any route containing a file extension (e.g. /devicesfile.js) # Any route containing a file extension (e.g. /devicesfile.js)
......
This diff is collapsed.
<!doctype html> <!DOCTYPE html>
<html lang="hu"> <html lang="hu">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta
<meta name="theme-color" content="#000000"> name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<!-- <!--
manifest.json provides metadata used when your web app is added to the manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/ homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
--> -->
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" /> <meta http-equiv="Expires" content="0" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json"> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"> <link
<link rel="stylesheet" href="index.css"> rel="shortcut icon"
type="image/svg+xml"
href="%PUBLIC_URL%/kszk_circle_lightblue.svg"
/>
<link rel="stylesheet" href="%PUBLIC_URL%/index.css" />
<!-- <!--
Notice the use of %PUBLIC_URL% in the tags above. Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build. It will be replaced with the URL of the `public` folder during the build.
...@@ -22,12 +29,10 @@ ...@@ -22,12 +29,10 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<title>KSZKépzés 2020</title> <title>KSZKépzés 2025</title>
</head> </head>
<body> <body>
<noscript> <noscript> You need to enable JavaScript to run this app. </noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root" style="height: 100%"></div> <div id="root" style="height: 100%"></div>
<!-- <!--
This HTML file is a template. This HTML file is a template.
......
This diff is collapsed.
...@@ -58,6 +58,11 @@ export const getUserData = () => async (dispatch) => { ...@@ -58,6 +58,11 @@ export const getUserData = () => async (dispatch) => {
}); });
} catch (e) { } catch (e) {
console.log(e); console.log(e);
// Invalid session bug workaround
if (!e.response) {
window.location = "/oidc/logout"
}
} }
}; };
...@@ -105,6 +110,7 @@ export const submitRegistration = ({ ...@@ -105,6 +110,7 @@ export const submitRegistration = ({
alert('Mentés nem sikerült!'); alert('Mentés nem sikerült!');
} }
} catch (e) { } catch (e) {
console.log(e); console.log(e, e.response);
alert('Mentés nem sikerült!');
} }
}; };
...@@ -4,7 +4,7 @@ import Main from './Main'; ...@@ -4,7 +4,7 @@ import Main from './Main';
import React from 'react'; import React from 'react';
const App = () => ( const App = () => (
<div style={{ minHeight: '100%', position: 'relative' }}> <div style={{ minHeight: '100%', position: 'relative', paddingBottom: '3em' }}>
<header id="header"> <header id="header">
<Header /> <Header />
</header> </header>
......
import { Container, Segment } from 'semantic-ui-react'; import { Container, Segment } from "semantic-ui-react";
import React from 'react'; import React from "react";
const Footer = () => ( const Footer = () => (
<Segment inverted vertical textAlign="center"> <Segment inverted vertical textAlign="center">
<Container> <Container>
<p textalign="center">Created by DevTeam &copy; 2018-2020.</p> <p textalign="center">Created by DevTeam &copy; 2018-2025.</p>
</Container> </Container>
</Segment> </Segment>
); );
......
...@@ -7,64 +7,64 @@ import { ...@@ -7,64 +7,64 @@ import {
Popup, Popup,
Responsive, Responsive,
Segment, Segment,
} from 'semantic-ui-react'; } from "semantic-ui-react";
import React, { Component } from 'react'; import React, { Component } from "react";
import KSZKlogo from './images/kszk_logo.svg'; import KSZKlogo from "./images/kszk_logo.svg";
import { Link } from 'react-router-dom'; import { Link } from "react-router-dom";
import { connect } from 'react-redux'; import { connect } from "react-redux";
import { getUserData } from '../actions'; import { getUserData } from "../actions";
// Objects that will be converted to menu items in the render method // Objects that will be converted to menu items in the render method
const menuItems = [ const menuItems = [
{ {
text: 'Főoldal', text: "Főoldal",
to: '/home', to: "/home",
prefix: ( prefix: (
<Image size="mini" src={KSZKlogo} style={{ marginRight: '1.5em' }} /> <Image size="mini" src={KSZKlogo} style={{ marginRight: "1.5em" }} />
), ),
permissionLevel: 0, permissionLevel: 0,
}, },
{ {
text: 'Hírek', text: "Hírek",
to: '/news', to: "/news",
prefix: '', prefix: "",
permissionLevel: 0, permissionLevel: 0,
}, },
{ {
text: 'Köreink', text: "Köreink",
to: '/groups', to: "/groups",
prefix: '', prefix: "",
permissionLevel: 0, permissionLevel: 0,
}, },
{ {
text: 'Ütemterv', text: "Ütemterv",
to: '/schedule', to: "/schedule",
prefix: '', prefix: "",
permissionLevel: 1, permissionLevel: 1,
}, },
{ {
text: 'Mentorok', text: "Mentorok",
to: '/mentors', to: "/mentors",
prefix: '', prefix: "",
permissionLevel: 2, permissionLevel: 1,
}, },
{ {
text: 'Statisztika', text: "Statisztika",
to: '/statistics', to: "/statistics",
prefix: '', prefix: "",
permissionLevel: 3, permissionLevel: 3,
}, },
{ {
text: 'Jelentkezések', text: "Jelentkezések",
to: '/applications', to: "/applications",
prefix: '', prefix: "",
permissionLevel: 3, permissionLevel: 3,
}, },
{ {
text: 'Házi feladatok', text: "Házi feladatok",
to: '/homework', to: "/homework",
prefix: '', prefix: "",
permissionLevel: 2, permissionLevel: 2,
}, },
]; ];
...@@ -97,7 +97,7 @@ class Header extends Component { ...@@ -97,7 +97,7 @@ class Header extends Component {
let maxNum = 0; let maxNum = 0;
if (this.props.user.id) { if (this.props.user.id) {
maxNum = menuItems.filter( maxNum = menuItems.filter(
(item) => this.props.user.permission >= item.permissionLevel (item) => this.props.user.permission >= item.permissionLevel,
).length; ).length;
} else { } else {
maxNum = 3; maxNum = 3;
...@@ -161,7 +161,7 @@ class Header extends Component { ...@@ -161,7 +161,7 @@ class Header extends Component {
{item.prefix} {item.prefix}
{item.text} {item.text}
</Menu.Item> </Menu.Item>
) : null ) : null,
)} )}
</Menu> </Menu>
</Popup> </Popup>
...@@ -173,10 +173,10 @@ class Header extends Component { ...@@ -173,10 +173,10 @@ class Header extends Component {
<Button inverted as={Link} to="/profile"> <Button inverted as={Link} to="/profile">
Profilom Profilom
</Button> </Button>
<Button as="a" href="/api/v1/logout/" icon="sign out" /> <Button as="a" href="/oidc/logout/" icon="sign out" />
</Button.Group> </Button.Group>
) : ( ) : (
<Button as="a" href="/api/v1/login/authsch/" inverted> <Button as="a" href="/oidc/authenticate/" inverted>
Bejelentkezés Bejelentkezés
</Button> </Button>
)} )}
...@@ -247,7 +247,7 @@ class Header extends Component { ...@@ -247,7 +247,7 @@ class Header extends Component {
{item.prefix} {item.prefix}
{item.text} {item.text}
</Menu.Item> </Menu.Item>
) : null ) : null,
)} )}
<Menu.Item> <Menu.Item>
{this.props.user.id ? ( {this.props.user.id ? (
...@@ -263,7 +263,7 @@ class Header extends Component { ...@@ -263,7 +263,7 @@ class Header extends Component {
<Button <Button
onClick={this.handleClose} onClick={this.handleClose}
as="a" as="a"
href="/api/v1/logout/" href="/oidc/logout/"
icon="sign out" icon="sign out"
/> />
</Button.Group> </Button.Group>
...@@ -271,7 +271,7 @@ class Header extends Component { ...@@ -271,7 +271,7 @@ class Header extends Component {
<Button <Button
onClick={this.handleClose} onClick={this.handleClose}
as="a" as="a"
href="/api/v1/login/authsch/" href="/oidc/authenticate/"
inverted inverted
> >
Bejelentkezés Bejelentkezés
......
...@@ -35,6 +35,16 @@ const allowedFileTypes = [ ...@@ -35,6 +35,16 @@ const allowedFileTypes = [
'application/x-zip', 'application/x-zip',
]; ];
const allowedFileEnds = ['.zip', '.jpeg', '.jpg', '.jpe', '.png'];
function validateFileName(fileNameToValidate) {
return (
allowedFileEnds.find((typeName) => {
return fileNameToValidate.toLowerCase().endsWith(typeName);
}).length > 0
);
}
// in megabytes // in megabytes
const maxFileSize = 50; const maxFileSize = 50;
...@@ -211,7 +221,7 @@ class AddSolutionForm extends Component { ...@@ -211,7 +221,7 @@ class AddSolutionForm extends Component {
!description || !description ||
(!file (!file
? false ? false
: !allowedFileTypes.includes(file.type) || : !validateFileName(file.name) ||
file.size > maxFileSize * 1024 ** 2) file.size > maxFileSize * 1024 ** 2)
} }
inverted inverted
...@@ -270,7 +280,7 @@ class AddSolutionForm extends Component { ...@@ -270,7 +280,7 @@ class AddSolutionForm extends Component {
!description || !description ||
(!file (!file
? false ? false
: !allowedFileTypes.includes(file.type) || : !validateFileName(file.name) ||
file.size > maxFileSize * 1024 ** 2) file.size > maxFileSize * 1024 ** 2)
} }
onClick={() => { onClick={() => {
......
...@@ -8,24 +8,24 @@ import { ...@@ -8,24 +8,24 @@ import {
Item, Item,
Segment, Segment,
Table, Table,
} from 'semantic-ui-react'; } from "semantic-ui-react";
import React, { Component } from 'react'; import React, { Component } from "react";
import { import {
clearWrite, clearWrite,
getNotesByEvent, getNotesByEvent,
postEventNote, postEventNote,
writeNote, writeNote,
} from '../../actions/notes'; } from "../../actions/notes";
import { import {
getEventById, getEventById,
getTrainees, getTrainees,
submitVisitors, submitVisitors,
visitorChange, visitorChange,
} from '../../actions/statistics'; } from "../../actions/statistics";
import TraineeTableRow from './EventDetailTableRow'; import TraineeTableRow from "./EventDetailTableRow";
import { connect } from 'react-redux'; import { connect } from "react-redux";
import moment from 'moment'; import moment from "moment";
class EventDetail extends Component { class EventDetail extends Component {
constructor(props) { constructor(props) {
...@@ -43,20 +43,30 @@ class EventDetail extends Component { ...@@ -43,20 +43,30 @@ class EventDetail extends Component {
renderTrainees() { renderTrainees() {
const event = this.props.selectedEvent; const event = this.props.selectedEvent;
return this.props.trainees?.map((item) => { return this.props.trainees
const notes = this.props.eventNotes?.filter( ?.sort(function (a, b) {
(note) => note.profile === item.id var nameA = a.full_name.toLowerCase(),
); nameB = b.full_name.toLowerCase();
return item.role === 'Student' ? ( if (nameA < nameB)
<TraineeTableRow //sort string ascending
selectedEvent={event} return -1;
notes={notes} if (nameA > nameB) return 1;
trainee={item} return 0; //default return value (no sorting)
edit={this.state.edit} })
key={item.id} .map((item) => {
/> const notes = this.props.eventNotes?.filter(
) : null; (note) => note.profile === item.id
}); );
return item.role === "Student" ? (
<TraineeTableRow
selectedEvent={event}
notes={notes}
trainee={item}
edit={this.state.edit}
key={item.id}
/>
) : null;
});
} }
renderEvent() { renderEvent() {
...@@ -64,11 +74,11 @@ class EventDetail extends Component { ...@@ -64,11 +74,11 @@ class EventDetail extends Component {
return ( return (
<Segment> <Segment>
<Item> <Item>
<Divider style={{ fontSize: '2em' }} horizontal> <Divider style={{ fontSize: "2em" }} horizontal>
<Header as="h1"> <Header as="h1">
{name} {name}
<Item.Header style={{ fontSize: '0.6em' }}> <Item.Header style={{ fontSize: "0.6em" }}>
{moment(date).format('LL')} {moment(date).format("LL")}
</Item.Header> </Item.Header>
</Header> </Header>
</Divider> </Divider>
...@@ -91,7 +101,7 @@ class EventDetail extends Component { ...@@ -91,7 +101,7 @@ class EventDetail extends Component {
<Comment.Content> <Comment.Content>
<Comment.Author>{note.created_by_name}</Comment.Author> <Comment.Author>{note.created_by_name}</Comment.Author>
<Comment.Metadata> <Comment.Metadata>
{moment(note.created_at).format('LL')} {moment(note.created_at).format("LL")}
</Comment.Metadata> </Comment.Metadata>
<Comment.Text>{note.note}</Comment.Text> <Comment.Text>{note.note}</Comment.Text>
</Comment.Content> </Comment.Content>
...@@ -99,7 +109,7 @@ class EventDetail extends Component { ...@@ -99,7 +109,7 @@ class EventDetail extends Component {
</Segment> </Segment>
); );
} }
return ''; return "";
}); });
} }
...@@ -107,24 +117,12 @@ class EventDetail extends Component { ...@@ -107,24 +117,12 @@ class EventDetail extends Component {
const event = this.props.selectedEvent; const event = this.props.selectedEvent;
const note = this.props.actualNote; const note = this.props.actualNote;
return ( return (
<Container style={{ paddingTop: '1em', paddingBottom: '7em' }}> <Container style={{ paddingTop: "1em", paddingBottom: "7em" }}>
<Container textAlign="center"> <Container textAlign="center">
{this.props.selectedEvent && this.props.trainees {this.props.selectedEvent && this.props.trainees
? this.renderEvent() ? this.renderEvent()
: ''} : ""}
</Container> </Container>
<Table celled unstackable>
<Table.Header>
<Table.Row textAlign="center">
<Table.HeaderCell>Név</Table.HeaderCell>
<Table.HeaderCell>Jelen volt</Table.HeaderCell>
<Table.HeaderCell>Megjegyzések</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{this.props.selectedEvent ? this.renderTrainees() : null}
</Table.Body>
</Table>
{!this.state.edit ? ( {!this.state.edit ? (
<Button onClick={() => this.setState({ edit: true })}> <Button onClick={() => this.setState({ edit: true })}>
Módosítás Módosítás
...@@ -133,16 +131,27 @@ class EventDetail extends Component { ...@@ -133,16 +131,27 @@ class EventDetail extends Component {
<Button <Button
onClick={() => { onClick={() => {
this.setState({ edit: false }); this.setState({ edit: false });
this.props.submitVisitors(this.props.selectedEvent);
}} }}
> >
{' '} {" "}
Kész Kész
</Button> </Button>
)} )}
<Table celled unstackable>
<Table.Header>
<Table.Row textAlign="center">
<Table.HeaderCell>Név</Table.HeaderCell>
<Table.HeaderCell>Jelen volt</Table.HeaderCell>
<Table.HeaderCell>Megjegyzések</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{this.props.selectedEvent ? this.renderTrainees() : null}
</Table.Body>
</Table>
<Comment.Group> <Comment.Group>
<Header dividing>Megjegyzések</Header> <Header dividing>Megjegyzések</Header>
{this.props.eventNotes ? this.renderComments() : ''} {this.props.eventNotes ? this.renderComments() : ""}
<Form reply> <Form reply>
<Form.TextArea <Form.TextArea
value={note.note} value={note.note}
......
...@@ -9,3 +9,29 @@ ...@@ -9,3 +9,29 @@
text-shadow: black 0px 0px 10px, black 0px 0px 6px; text-shadow: black 0px 0px 10px, black 0px 0px 6px;
-webkit-text-fill-color: white; -webkit-text-fill-color: white;
} }
.quote {
position: relative;
margin-bottom: 0.5rem;
}
.quote:before {
content: '“';
position: absolute;
left: -0.45em;
}
.quote::after {
content: '”';
margin-right: -1rem;
}
.quote--container {
margin: 2rem auto 0;
padding-bottom: 0.7rem;
}
.quote--author {
text-align: right;
font-weight: 300;
}
import './Home.css'; import "./Home.css";
import { import {
Button, Button,
...@@ -9,15 +9,15 @@ import { ...@@ -9,15 +9,15 @@ import {
Image, Image,
Responsive, Responsive,
Segment, Segment,
} from 'semantic-ui-react'; } from "semantic-ui-react";
/* eslint-disable react/jsx-props-no-spreading */ /* eslint-disable react/jsx-props-no-spreading */
import React, { Component } from 'react'; import React, { Component } from "react";
import KSZKbiglogo from '../images/kszk_with_shadow.png'; import KSZKbiglogo from "../images/kszk_with_shadow.png";
import { Link } from 'react-router-dom'; import { Link } from "react-router-dom";
import Slider from 'react-slick'; import Slider from "react-slick";
import { connect } from 'react-redux'; import { connect } from "react-redux";
import { getImages } from '../../actions/home'; import { getImages } from "../../actions/home";
const settings = { const settings = {
dots: false, dots: false,
...@@ -42,12 +42,14 @@ class Home extends Component { ...@@ -42,12 +42,14 @@ class Home extends Component {
if (view === 0) { if (view === 0) {
return ( return (
<div> <div>
{!!this.props.images}
<Slider {...settings}> <Slider {...settings}>
{this.props.images.map((image) => ( {this.props.images &&
<div key={image}> this.props.images.map((image) => (
<img src={image.image} width={imageWidth} alt="" /> <div key={image}>
</div> <img src={image.image} width={imageWidth} alt="" />
))} </div>
))}
</Slider> </Slider>
<div className="car-text-kszk"> <div className="car-text-kszk">
<Segment textAlign="center" vertical> <Segment textAlign="center" vertical>
...@@ -56,8 +58,8 @@ class Home extends Component { ...@@ -56,8 +58,8 @@ class Home extends Component {
content="Üdvözlünk a" content="Üdvözlünk a"
inverted inverted
style={{ style={{
fontSize: '3vw', fontSize: "3vw",
fontWeight: 'normal', fontWeight: "normal",
marginBottom: 0, marginBottom: 0,
}} }}
/> />
...@@ -66,10 +68,10 @@ class Home extends Component { ...@@ -66,10 +68,10 @@ class Home extends Component {
content="Kollégiumi Számítástechnikai Kör" content="Kollégiumi Számítástechnikai Kör"
inverted inverted
style={{ style={{
fontSize: '3.5vw', fontSize: "3.5vw",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: '0.5vw', marginBottom: "0.5vw",
marginTop: '0.5vw', marginTop: "0.5vw",
}} }}
/> />
<Header <Header
...@@ -77,57 +79,57 @@ class Home extends Component { ...@@ -77,57 +79,57 @@ class Home extends Component {
content="újoncképzésének weboldalán!" content="újoncképzésének weboldalán!"
inverted inverted
style={{ style={{
fontSize: '3vw', fontSize: "3vw",
fontWeight: 'normal', fontWeight: "normal",
marginBottom: 0, marginBottom: 0,
marginTop: '0.5vw', marginTop: "0.5vw",
}} }}
/> />
<Image <Image
verticalAlign="middle" verticalAlign="middle"
src={KSZKbiglogo} src={KSZKbiglogo}
style={{ marginTop: '1vw', width: '17%' }} style={{ marginTop: "1vw", width: "17%" }}
/> />
<Header <Header
as="h1" as="h1"
content="Szeretettel várunk a KSZKépzésre!" content="Szeretettel várunk a KSZKépzésre!"
inverted inverted
style={{ style={{
fontSize: '3vw', fontSize: "3vw",
fontWeight: 'normal', fontWeight: "normal",
marginBottom: 0, marginBottom: 0,
marginTop: '1vw', marginTop: "1vw",
}} }}
/> />
<Container> <Container>
{this.props.user.id ? ( {this.props.user.id ? (
<Button <Button
as={Link} as={Link}
to="/profile" to="/profile"
primary primary
size="huge" size="huge"
style={{ style={{
fontSize: '2vw', fontSize: "2vw",
marginTop: '1vw', marginTop: "1vw",
marginBottom: '1vw', marginBottom: "1vw",
fontWeight: 'bold', fontWeight: "bold",
letterSpacing: '0.13vw', letterSpacing: "0.13vw",
}} }}
> >
Jelentkezés Jelentkezés
<Icon name="right arrow" /> <Icon name="right arrow" />
</Button> </Button>
) : ( ) : (
<Button <Button
href="/api/v1/login/authsch/" href="/oidc/authenticate/"
primary primary
size="huge" size="huge"
style={{ style={{
fontSize: '2vw', fontSize: "2vw",
marginTop: '1vw', marginTop: "1vw",
marginBottom: '1vw', marginBottom: "1vw",
fontWeight: 'bold', fontWeight: "bold",
letterSpacing: '0.13vw', letterSpacing: "0.13vw",
}} }}
> >
Bejelentkezés Bejelentkezés
...@@ -157,8 +159,8 @@ class Home extends Component { ...@@ -157,8 +159,8 @@ class Home extends Component {
content="Üdvözlünk a" content="Üdvözlünk a"
inverted inverted
style={{ style={{
fontSize: '5vw', fontSize: "5vw",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: 0, marginBottom: 0,
}} }}
/> />
...@@ -167,10 +169,10 @@ class Home extends Component { ...@@ -167,10 +169,10 @@ class Home extends Component {
content="Kollégiumi Számítástechnikai Kör" content="Kollégiumi Számítástechnikai Kör"
inverted inverted
style={{ style={{
fontSize: '6vw', fontSize: "6vw",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: '0.5vw', marginBottom: "0.5vw",
marginTop: '0.5vw', marginTop: "0.5vw",
}} }}
/> />
<Header <Header
...@@ -178,27 +180,27 @@ class Home extends Component { ...@@ -178,27 +180,27 @@ class Home extends Component {
content="újoncképzésének weboldalán!" content="újoncképzésének weboldalán!"
inverted inverted
style={{ style={{
fontSize: '5vw', fontSize: "5vw",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: 0, marginBottom: 0,
marginTop: '0.5vw', marginTop: "0.5vw",
}} }}
/> />
<Image <Image
className="kszklogo" className="kszklogo"
verticalAlign="middle" verticalAlign="middle"
src={KSZKbiglogo} src={KSZKbiglogo}
style={{ marginTop: '1vw', width: '20%' }} style={{ marginTop: "1vw", width: "20%" }}
/> />
<Header <Header
as="h1" as="h1"
content="Szeretettel várunk a KSZKépzésre!" content="Szeretettel várunk a KSZKépzésre!"
inverted inverted
style={{ style={{
fontSize: '5vw', fontSize: "5vw",
fontWeight: 'bold', fontWeight: "bold",
marginBottom: 0, marginBottom: 0,
marginTop: '1vw', marginTop: "1vw",
}} }}
/> />
<Container> <Container>
...@@ -209,11 +211,11 @@ class Home extends Component { ...@@ -209,11 +211,11 @@ class Home extends Component {
primary primary
size="massive" size="massive"
style={{ style={{
fontSize: '4vw', fontSize: "4vw",
marginTop: '1.5vw', marginTop: "1.5vw",
marginBottom: '1vw', marginBottom: "1vw",
fontWeight: 'bold', fontWeight: "bold",
letterSpacing: '0.15vw', letterSpacing: "0.15vw",
}} }}
> >
Jelentkezés Jelentkezés
...@@ -221,15 +223,15 @@ class Home extends Component { ...@@ -221,15 +223,15 @@ class Home extends Component {
</Button> </Button>
) : ( ) : (
<Button <Button
href="/api/v1/login/authsch/" href="/oidc/authenticate/"
primary primary
size="massive" size="massive"
style={{ style={{
fontSize: '4vw', fontSize: "4vw",
marginTop: '1vw', marginTop: "1vw",
marginBottom: '1vw', marginBottom: "1vw",
fontWeight: 'bold', fontWeight: "bold",
letterSpacing: '0.15vw', letterSpacing: "0.15vw",
}} }}
> >
Bejelentkezés Bejelentkezés
...@@ -248,12 +250,29 @@ class Home extends Component { ...@@ -248,12 +250,29 @@ class Home extends Component {
renderText() { renderText() {
const kszk_age = new Date().getFullYear() - 1976; const kszk_age = new Date().getFullYear() - 1976;
return ( return (
<Segment style={{ padding: '8em 0em', fontFamily: 'Arial' }} vertical> <Segment style={{ padding: "1em 0em", fontFamily: "Arial" }} vertical>
<Container text> <Container text>
<Header as="h3" style={{ fontSize: '2em', fontFamily: 'Arial' }}> <Segment inverted color="green" tertiary>
<Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Bemutatkozó videók
</Header>
<p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
A gólyakörtére készített videóinkat megnézhetitek a{" "}
<a
href="https://www.youtube.com/@kollegiumiszamitastechnika470/videos"
target="_blank"
rel="noopener noreferrer"
style={{ color: "white", textDecoration: "underline" }}
>
YouTube csatornánkon
</a>
!
</p>
</Segment>
<Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Kik is vagyunk mi? Kik is vagyunk mi?
</Header> </Header>
<p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> <p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
A Kollégiumi Számítástechnikai Kör az Egyetem legrégebben működő és A Kollégiumi Számítástechnikai Kör az Egyetem legrégebben működő és
legnagyobb aktív, informatikával foglalkozó öntevékeny legnagyobb aktív, informatikával foglalkozó öntevékeny
csoportosulása, idén ünnepeljük {kszk_age}. születésnapunkat. A csoportosulása, idén ünnepeljük {kszk_age}. születésnapunkat. A
...@@ -265,11 +284,11 @@ class Home extends Component { ...@@ -265,11 +284,11 @@ class Home extends Component {
<Button as={Link} size="large" to="/groups"> <Button as={Link} size="large" to="/groups">
Ismerd meg a köreinket! <Icon name="right arrow" /> Ismerd meg a köreinket! <Icon name="right arrow" />
</Button> </Button>
<Divider as="h4" className="header" style={{ margin: '3em 0em' }} /> <Divider as="h4" className="header" style={{ margin: "3em 0em" }} />
<Header as="h3" style={{ fontSize: '2em', fontFamily: 'Arial' }}> <Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Lehetőségek Lehetőségek
</Header> </Header>
<p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> <p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
A KSZK a lehetőségek tárháza, a hely ahol Te leendő mérnök A KSZK a lehetőségek tárháza, a hely ahol Te leendő mérnök
minden területen kipróbálhatod, továbbképezheted magad. Nálunk minden területen kipróbálhatod, továbbképezheted magad. Nálunk
kibontakoztathatod kreativitásod, tapasztalatot, mérnöki szemléletet kibontakoztathatod kreativitásod, tapasztalatot, mérnöki szemléletet
...@@ -279,34 +298,92 @@ class Home extends Component { ...@@ -279,34 +298,92 @@ class Home extends Component {
szakma egy-egy meghatározó területével foglalkoznak a fejlesztés és szakma egy-egy meghatározó területével foglalkoznak a fejlesztés és
üzemeltetés területén. üzemeltetés területén.
</p> </p>
<Divider as="h4" className="header" style={{ margin: '3em 0em' }} /> <Divider as="h4" className="header" style={{ margin: "3em 0em" }} />
<Header as="h3" style={{ fontSize: '2em', fontFamily: 'Arial' }}> <Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Miért KSZK-snak lenni?
</Header>
<div
class="quote--container"
style={{ fontSize: "1.5em", fontFamily: "Arial" }}
>
<p class="quote">
Szerintem KSZK-snak lenni, mert rengeteget tanulok belőle.
Gyakorlok, hallok újdonságokat, kipróbálhatom magam mindenféle
szerepben, és közben még barátokat is szerzek. Ezek a barátságok,
tapasztalatok egyébként később is nagyon jól jönnek, például a
CV-mben egész erős fegyvertény, hogy ennyi mindent csináltam.
Tényleg rengeteget kaptam a reszorttól, szakmailag és emberileg
is. Ja, és szeretem, hogy a KSZK ilyen szabad, és abba kóstolok
bele, amibe akarok.
</p>
<p class="quote--author">&ndash; Feri</p>
</div>
<div
class="quote--container"
style={{ fontSize: "1.5em", fontFamily: "Arial" }}
>
<p class="quote">
A nulláról kezdtem a képzést és az egyetemi tanulmányaimat is,
semmilyen infós tudásom nem volt, de rengeteget fejlődtem a
KSZK-nak köszönhetően. Ezenkívül nem csak szakmai tudást
szereztem, hanem egy fantasztikus közösség részévé is váltam.
</p>
<p class="quote--author">&ndash; Patrik</p>
</div>
<div
class="quote--container"
style={{ fontSize: "1.5em", fontFamily: "Arial" }}
>
<p class="quote">
Amikor idejöttem egyetemre nem tudtam, hogy mennyire fogom
megtalálni a helyem. Aztán, elkezdtem megismerkedni a kari
közösséggel és barátokat szereztem, akik jelentős részét a
KSZK-ban ismertem meg, vagy velem csatlakozott ide. Együtt
foglalkozgatunk projektekkel, a Ház rendszereinek üzemeltetésével
és egyéb nagyon érdekes ügyes-bajos dolgokkal. Úgy érzem, hogy a
KSZK-ban igazán megtaláltam a helyem, mind emberileg, mind
szakmailag.
</p>
<p class="quote--author">&ndash; Mike</p>
</div>
<div
class="quote--container"
style={{ fontSize: "1.5em", fontFamily: "Arial" }}
>
<p class="quote">
Számtalan dologgal foglalkozunk, és tényleg azt csinálhatom, ami
csak érdekel. Emellett a KSZK-t a szívügyemnek tekintem, szerintem
a legjobb lehetőség a szakmai fejlődésen kívül életre szóló
barátságok alakítására.
</p>
<p class="quote--author">&ndash; Blint</p>
</div>
<Divider as="h4" className="header" style={{ margin: "3em 0em" }} />
<Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Képzésünk Képzésünk
</Header> </Header>
<p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> <p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
Kilenc alkalmas képzésünk végén Te is igazi KSZK-ssá válhatsz, Képzésünk végén Te is igazi KSZK-ssá válhatsz, hiszen rengeteg
hiszen rengeteg szakmai tudást igyekszünk átadni nektek. A szakmai tudást igyekszünk átadni nektek. A képzésalkalmak rendkívül
képzésalkalmak rendkívül hangulatban telnek, és a szociális hangulatban telnek, és a szociális irányultságú foglalkozások
irányultságú foglalkozások alatt egy nagyon csapat kovácsolódik alatt egy nagyon csapat kovácsolódik az érdeklődőkből. Az első
az érdeklődőkből. Az első képzés időpontja február 16. vasárnap képzés időpontja február 20. csütörtök 18:00, ettől kezdve pedig
18:00, ettől kezdve pedig minden héten találkozunk ugyanabban az minden héten egy közösségi és számos szakmai alkalom során
időpontban. A képzés ideje alatt április 17-19 között rendezünk találkozunk. A képzésalkalmak után április 11-től 13-ig rendezünk
tábort. Az alkalmakon és a táboron kötelező a részvétel. tábort. Az közösségi alkalmakon és a táboron kötelező a részvétel.
</p> </p>
<Divider as="h4" className="header" style={{ margin: '3em 0em' }} /> <Divider as="h4" className="header" style={{ margin: "3em 0em" }} />
<Segment inverted color="red" tertiary> <Segment inverted color="red" tertiary>
<Header as="h3" style={{ fontSize: '2em', fontFamily: 'Arial' }}> <Header as="h3" style={{ fontSize: "2em", fontFamily: "Arial" }}>
Korlátos férőhely Korlátos férőhely
</Header> </Header>
<p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> <p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
Általánosságban elmondható, hogy a KSZK tagjai rengeteg dologgal Általánosságban elmondható, hogy a KSZK tagjai rengeteg dologgal
foglalkoznak a hétköznapjaik során, hogy minden informatikai foglalkoznak a hétköznapjaik során, hogy minden informatikai
rendszer úgy működjön a kollégiumban, ahogy kell. Így van ez rendszer úgy működjön a kollégiumban, ahogy kell. Így van ez
velünk képzőkkel is, emiatt hetente csak egy képzésalkalmat tudunk velünk képzőkkel is, emiatt a férőhelyek korlátosak.
tartani. Mivel az oktatóterem férőhelyében korlátozott, ezért a
képzésre maximum 35 embert tudunk befogadni.
</p> </p>
<p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> <p style={{ fontSize: "1.33em", fontFamily: "Arial" }}>
Sajnos előfordulhat olyan eset, hogy valaki már nem fér be a Sajnos előfordulhat olyan eset, hogy valaki már nem fér be a
képzésre, ezért kérünk titeket, hogy ennek tudatában képzésre, ezért kérünk titeket, hogy ennek tudatában
jelentkezzetek majd. Ilyen esetben reméljük ez nem szegi jelentkezzetek majd. Ilyen esetben reméljük ez nem szegi
...@@ -324,12 +401,12 @@ class Home extends Component { ...@@ -324,12 +401,12 @@ class Home extends Component {
<Responsive minWidth={600}> <Responsive minWidth={600}>
<div className="car-image-kszk"> <div className="car-image-kszk">
<div /> <div />
{this.renderSlider(0, '120%')} {this.renderSlider(0, "120%")}
</div> </div>
{this.renderText()} {this.renderText()}
</Responsive> </Responsive>
<Responsive maxWidth={600}> <Responsive maxWidth={600}>
<div className="car-image-kszk">{this.renderSlider(1, '200%')}</div> <div className="car-image-kszk">{this.renderSlider(1, "200%")}</div>
{this.renderText()} {this.renderText()}
</Responsive> </Responsive>
</div> </div>
......
...@@ -14,9 +14,8 @@ class LeaderBoard extends Component { ...@@ -14,9 +14,8 @@ class LeaderBoard extends Component {
return this.props.trainees return this.props.trainees
.sort( .sort(
(a, b) => (a, b) =>
Number(b.homework_bits) + (Number(b.homework_bits) + Number(b.events_visited) + Number(b.extra_bits)) -
b.events_visited - (Number(a.homework_bits) + Number(a.events_visited) + Number(a.extra_bits))
(Number(a.homework_bits) + a.events_visited)
) )
.map((trainee) => .map((trainee) =>
trainee.role === 'Student' ? ( trainee.role === 'Student' ? (
...@@ -24,10 +23,10 @@ class LeaderBoard extends Component { ...@@ -24,10 +23,10 @@ class LeaderBoard extends Component {
<Table.Cell textAlign="center">{trainee.full_name}</Table.Cell> <Table.Cell textAlign="center">{trainee.full_name}</Table.Cell>
<Table.Cell textAlign="center">{trainee.events_visited}</Table.Cell> <Table.Cell textAlign="center">{trainee.events_visited}</Table.Cell>
<Table.Cell textAlign="center"> <Table.Cell textAlign="center">
{Number(trainee.homework_bits)} {Number(trainee.homework_bits) + Number(trainee.extra_bits)}
</Table.Cell> </Table.Cell>
<Table.Cell textAlign="center"> <Table.Cell textAlign="center">
{Number(trainee.homework_bits) + trainee.events_visited} {Number(trainee.homework_bits) + trainee.events_visited + Number(trainee.extra_bits)}
</Table.Cell> </Table.Cell>
</Table.Row> </Table.Row>
) : null ) : null
......
...@@ -31,7 +31,7 @@ class Mentors extends Component { ...@@ -31,7 +31,7 @@ class Mentors extends Component {
<Item.Content style={{ padding: '1rem' }}> <Item.Content style={{ padding: '1rem' }}>
<Item.Header>{item.name}</Item.Header> <Item.Header>{item.name}</Item.Header>
<Item.Description> <Item.Description>
<p>{item.text}</p> <p dangerouslySetInnerHTML={{ __html: item.text }}></p>
</Item.Description> </Item.Description>
<Item.Extra> <Item.Extra>
<Label> <Label>
...@@ -56,7 +56,9 @@ class Mentors extends Component { ...@@ -56,7 +56,9 @@ class Mentors extends Component {
<Image src={item.image} wrapped ui={false} /> <Image src={item.image} wrapped ui={false} />
<Card.Content> <Card.Content>
<Card.Header>{item.name}</Card.Header> <Card.Header>{item.name}</Card.Header>
<Card.Description>{item.text}</Card.Description> <Card.Description>
<p dangerouslySetInnerHTML={{ __html: item.text }}></p>
</Card.Description>
</Card.Content> </Card.Content>
<Card.Content extra> <Card.Content extra>
<Label> <Label>
......
...@@ -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>
......