diff --git a/.gitignore b/.gitignore
index f3be5cb..3d060ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/.next/
/node_modules/
-/.idea
\ No newline at end of file
+/.idea
+check-syntax.sh
diff --git a/js/CommonComponents.js b/js/CommonComponents.js
index 87791dd..b32d412 100644
--- a/js/CommonComponents.js
+++ b/js/CommonComponents.js
@@ -2,20 +2,27 @@ import {
Badge,
Button,
ButtonGroup,
+ Card,
+ CardBody,
+ Container,
Collapse,
+ Form,
+ FormGroup,
Nav,
Navbar,
NavbarBrand,
NavbarToggler,
NavItem,
- NavLink
+ NavLink,
+ Input,
+ Label
} from 'reactstrap';
import { connect } from 'react-redux';
import React from 'react';
-import { logout } from './api';
+import { login, logout } from './api';
export function BigImage(props) {
return (
@@ -95,7 +102,6 @@ class InvisibleLoginLogoutButtons extends React.Component {
);
}
}
-
}
const mapStateToLoginLogoutButtonProperties = (state) => {
@@ -124,3 +130,153 @@ export function Footer() {
);
}
+
+/**
+ * This component works just like a switch statement, although the conditions of the first items
+ * are checked first, and the first component with a condition that is true will be shown.
+ *
+ * For single conditions and options any kind of component can be taken, while the Option-component
+ * is dedicated for this job. The only important thing is that this component has to have a condition property.
+ *
+ * You should also give a default option with a condition that always evaluates to true.
+ *
+ * A quick example would be some content that is only to be shown when the user is logged in:
+ *
+ * function SomeRestrictedContent(props) {
+ * const { isSignedIn } = props;
+ *
+ * return (
+ *
+ *
+ *
+ *
+ * );
+ * }
+ *
+ * In the example you'll have to note that the default option is at the bottom of all the options
+ * since it would always be taken otherwise (the options' conditions are checked from top to bottom)
+ */
+export class UserRestrictor extends React.Component {
+
+ render() {
+ const { children } = this.props;
+
+ for(var i in children) {
+ var c = children[i];
+
+ if(c.props.condition) {
+ return c;
+ }
+ }
+
+ return null;
+ }
+}
+
+export function Option(props) {
+ return props.children;
+}
+
+export function Login(props) {
+ return (
+
+
+
+