Compare commits
11 Commits
a2a29195d7
...
frontend
Author | SHA1 | Date | |
---|---|---|---|
c6358b5ea6 | |||
cc4bc791c9 | |||
586322a189 | |||
1416fd7fa0 | |||
16a91cc028 | |||
![]() |
3be7e1ecfd | ||
![]() |
0cff38b71f | ||
d435ad36b4 | |||
034ee28187 | |||
![]() |
7b8abb3eab | ||
![]() |
9eaf948a9f |
10
.idea/.gitignore
generated
vendored
Normal file
10
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Environment-dependent path to Maven home directory
|
||||
/mavenHomeManager.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
9
.idea/EIA.iml
generated
Normal file
9
.idea/EIA.iml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="temurin-21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/EIA.iml" filepath="$PROJECT_DIR$/.idea/EIA.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/sqldialects.xml
generated
Normal file
6
.idea/sqldialects.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/contact.sql" dialect="GenericSQL" />
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
377
CSS/style.css
Normal file
377
CSS/style.css
Normal file
@@ -0,0 +1,377 @@
|
||||
body {
|
||||
background-color: #DFF0F2;
|
||||
color: black;
|
||||
font-size: 15px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
#wrapper {
|
||||
flex: 1 0 auto;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
margin-bottom: 20px;
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
#navigation {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
background: #BAC8D4;
|
||||
width: 100vw;
|
||||
}
|
||||
.link-container {
|
||||
display: grid;
|
||||
width: 80%;
|
||||
grid-template-columns: 20% 20% 56% 4%;
|
||||
background-color: #BAC8D4;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
}
|
||||
.links {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 25px;
|
||||
}
|
||||
#logo {
|
||||
height: 60px;
|
||||
width: 170px;
|
||||
background-image: url("../images/bibArts.png");
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
}
|
||||
#footer {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 180px;
|
||||
background-color: #BAC8D4;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
z-index: 999;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.container-zahlungsmittel {
|
||||
grid-column: 5;
|
||||
justify-content: right;
|
||||
}
|
||||
.header-zahlungsarten {
|
||||
padding-right: 15px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inhalt {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100vw;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
padding: 0 2vw;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.zahlungsmittel-img {
|
||||
height: 41px;
|
||||
width: 284px;
|
||||
background-image: url("../images/Zahlungsmittel.png");
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
justify-self: right;
|
||||
}
|
||||
|
||||
.line {
|
||||
width: 97%;
|
||||
height: 1px;
|
||||
background-color: grey;
|
||||
justify-self: center;
|
||||
grid-column-start: 1;
|
||||
grid-column-end: 6;
|
||||
}
|
||||
|
||||
.container-rest {
|
||||
grid-column-start: 1;
|
||||
grid-column-end: 6;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
.link-impressum {
|
||||
padding-left: 30px;
|
||||
|
||||
}
|
||||
.text-bib {
|
||||
grid-column: 5;
|
||||
justify-self: right;
|
||||
padding-right: 30px;
|
||||
}
|
||||
.container-welcome-inhalt {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
width: 100%;
|
||||
max-width: 900px;
|
||||
min-height: 200px;
|
||||
border-radius: 10px;
|
||||
background: white;
|
||||
box-shadow: 0 2px 16px rgba(0,0,0,0.08);
|
||||
justify-items: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.beispiel-austellung1-img, .beispiel-austellung2-img {
|
||||
height: 200px;
|
||||
width: 90vw;
|
||||
max-width: 320px;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.login-container {
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
background-color: #BAC8D4;
|
||||
width: 900px;
|
||||
height: 450px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tickets-container {
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
background-color: #BAC8D4;
|
||||
width: 900px;
|
||||
height: 450px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 14px;
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
#wrapper {
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
}
|
||||
#navigation {
|
||||
width: 100vw;
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.link-container {
|
||||
width: 100vw;
|
||||
min-width: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
row-gap: 8px;
|
||||
border-radius: 0;
|
||||
padding: 0 4px;
|
||||
}
|
||||
.links {
|
||||
font-size: 18px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 6px 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
#logo {
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
margin: 0 auto 8px auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.container-welcome-inhalt {
|
||||
grid-template-columns: 1fr;
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
min-height: 0;
|
||||
padding: 8px 0;
|
||||
}
|
||||
.beispiel-austellung1-img, .beispiel-austellung2-img {
|
||||
width: 90vw;
|
||||
max-width: 98vw;
|
||||
height: 120px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.inhalt {
|
||||
width: 100vw;
|
||||
min-width: 0;
|
||||
max-width: 100vw;
|
||||
padding: 0 2vw;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
#footer {
|
||||
width: 100vw;
|
||||
height: auto;
|
||||
min-height: 120px;
|
||||
padding: 10px 0 10px 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
.container-zahlungsmittel {
|
||||
width: 100vw;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
}
|
||||
.header-zahlungsarten {
|
||||
font-size: 1.1em;
|
||||
padding-right: 0;
|
||||
text-align: center;
|
||||
}
|
||||
.zahlungsmittel-img {
|
||||
width: 90vw;
|
||||
max-width: 200px;
|
||||
height: 30px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.line {
|
||||
width: 95vw;
|
||||
}
|
||||
.link-impressum, .link-datenschutz, .link-nutzungsbedingungen {
|
||||
display: block;
|
||||
padding: 2px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.text-bib {
|
||||
display: block;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
}
|
||||
.desktop-only {
|
||||
display: none !important;
|
||||
}
|
||||
.mobile-only {
|
||||
display: block !important;
|
||||
}
|
||||
.login-container {
|
||||
position: static;
|
||||
width: 95vw;
|
||||
max-width: 400px;
|
||||
height: auto;
|
||||
margin: 24px auto;
|
||||
padding: 16px 8px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.tickets-container {
|
||||
position: static;
|
||||
width: 95vw;
|
||||
max-width: 400px;
|
||||
height: auto;
|
||||
margin: 24px auto;
|
||||
padding: 16px 8px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.login-container h1 {
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
}
|
||||
.tickets-container h1 {
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
}
|
||||
.login-container form,
|
||||
.login-container label,
|
||||
.login-container input {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.login-container button,
|
||||
.login-container a {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin-top: 8px;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#nav-toggle-btn {
|
||||
display: block;
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 2em;
|
||||
cursor: pointer;
|
||||
margin: 0 auto 8px auto;
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
.nav-links {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
transition: max-height 0.3s ease;
|
||||
overflow: hidden;
|
||||
}
|
||||
.nav-links.open {
|
||||
display: flex;
|
||||
}
|
||||
#nav-toggle-btn.open {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 601px) {
|
||||
.mobile-only {
|
||||
display: none !important;
|
||||
}
|
||||
.desktop-only {
|
||||
display: block !important;
|
||||
}
|
||||
#nav-toggle-btn {
|
||||
display: none;
|
||||
}
|
||||
.nav-links {
|
||||
display: flex !important;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
width: auto;
|
||||
gap: 32px;
|
||||
}
|
||||
.nav-links .links {
|
||||
margin: 0 12px;
|
||||
}
|
||||
}
|
300
CSS/style_.css
Normal file
300
CSS/style_.css
Normal file
@@ -0,0 +1,300 @@
|
||||
/*
|
||||
To change this license header, choose License Headers in Project Properties.
|
||||
To change this template file, choose Tools | Templates
|
||||
and open the template in the editor.
|
||||
*/
|
||||
/*
|
||||
Created on : 01.04.2016, 15:39:10
|
||||
Author : reich
|
||||
*/
|
||||
|
||||
*, *:before, *:after {
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
#wrapper {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background-color: #4d4d4d;
|
||||
padding: 10px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 10px;
|
||||
color: #4d4d4d;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
h1 span {
|
||||
/*color: #09add0;*/
|
||||
color: orange;
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
nav li {
|
||||
float: left;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
nav li a {
|
||||
display: block;
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
border: 1px solid #4d4d4d;
|
||||
background-color: #4d4d4d;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
margin: 5px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
nav li a:hover {
|
||||
background-color: lightskyblue;
|
||||
}
|
||||
|
||||
nav {
|
||||
position: fixed;
|
||||
background: white;
|
||||
top: 0px;
|
||||
margin-left: -10px;
|
||||
width: 600px;
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
main {
|
||||
margin-top: 145px;
|
||||
}
|
||||
|
||||
.nav_back {
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.articleImg {
|
||||
width: 200px;
|
||||
float: left;
|
||||
border: 2px solid lightskyblue;
|
||||
padding: 5px;
|
||||
margin: 5px 10px 5px 5px;
|
||||
|
||||
}
|
||||
|
||||
.articleInfo {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
label {
|
||||
width: 80px;
|
||||
display: inline-block;
|
||||
margin: 5px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
label.errorMsg {
|
||||
width: 380px;
|
||||
display: inline-block;
|
||||
margin: 5px;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
width: 100px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
form {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#metanavi {
|
||||
color: #4d4d4d;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#metanavi a {
|
||||
background: #09add0;
|
||||
border: none;
|
||||
width: 100px;
|
||||
margin: 0 5px 0 5px;
|
||||
float: right;
|
||||
padding: 2px;
|
||||
border-radius: 5px;
|
||||
color:#fff;
|
||||
cursor:pointer;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#metanavi a:hover {
|
||||
background: orange;
|
||||
}
|
||||
|
||||
#signup form {
|
||||
padding: 20px 0 60px;
|
||||
}
|
||||
|
||||
#signup p {
|
||||
margin: 0 0 5px 0;
|
||||
}
|
||||
|
||||
#signup {
|
||||
margin: auto;
|
||||
width: 450px;
|
||||
}
|
||||
|
||||
#signup ol {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#signup li {
|
||||
margin: 0 0 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#signup label {
|
||||
width: 150px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
padding-right: 15px;
|
||||
font-weight: 500;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
#signup span {
|
||||
margin-top: 10px;
|
||||
width: 400px;
|
||||
color: orange;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#signup input {
|
||||
display: inline-block;
|
||||
width: 250px;
|
||||
border: 1px solid #aaa;
|
||||
padding: 6px 10px 6px 6px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#signup input[type="submit"]{
|
||||
background: #09add0;
|
||||
border:none;
|
||||
width:180px;
|
||||
margin-left: 230px;
|
||||
padding:5px;
|
||||
border-radius:5px;
|
||||
color:#fff;
|
||||
font-weight:bold;
|
||||
cursor:pointer;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#signup input[type="submit"]:hover {
|
||||
background: orange;
|
||||
}
|
||||
|
||||
#signup label.errorMsg {
|
||||
width: 400px;
|
||||
padding:5px 5px 5px 0;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.autherIcons i {
|
||||
margin: 0 5px 0 5px;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.autherIcons i:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/*** Formulare ***/
|
||||
|
||||
form {
|
||||
width: 440px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
label {
|
||||
width: 120px;
|
||||
display: inline-block;
|
||||
margin: 5px 15px 10px 0;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
label.errorMsg {
|
||||
width: 420px;
|
||||
display: inline-block;
|
||||
margin: 0 5px 15px 0;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
color: orange;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
width: 100px;
|
||||
margin-left: 330px;
|
||||
}
|
||||
|
||||
form textarea {
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
form select {
|
||||
width: 300px;
|
||||
}
|
66
CSS/style_columns.css
Normal file
66
CSS/style_columns.css
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
Created on : 04.01.2018, 04:54:54
|
||||
Author : reich
|
||||
*/
|
||||
|
||||
/*** 12 spaltiges Grid mit Flexboxen ***/
|
||||
|
||||
/*** Container ***/
|
||||
.row {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
/*** Spaltendefinitionen Smartphone Ansicht ***/
|
||||
@media (max-width: 529px) {
|
||||
.col-s-12 {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
|
||||
/*** Loesung Workshop-Seite ***/
|
||||
.textContent {
|
||||
padding: 15px 0 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*** Spaltendefinitionen Tablet Ansicht ***/
|
||||
@media (min-width: 530px) {
|
||||
.col-m-1 {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
.col-m-4 {
|
||||
flex: 0 0 33.3333333%;
|
||||
}
|
||||
.col-m-6 {
|
||||
flex: 0 0 50%;
|
||||
}
|
||||
.col-m-12 {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/*** Spaltendefinitionen Desktop Ansicht ***/
|
||||
@media (min-width: 800px) {
|
||||
.col-1 {
|
||||
flex: 0 0 8.3333333%;
|
||||
}
|
||||
.col-3 {
|
||||
flex: 0 0 25%;
|
||||
}
|
||||
.col-4 {
|
||||
flex: 0 0 33.3333333%;
|
||||
}
|
||||
.col-5 {
|
||||
flex: 0 0 41.6666667%;
|
||||
}
|
||||
.col-6 {
|
||||
flex: 0 0 50%;
|
||||
}
|
||||
.col-8 {
|
||||
flex: 0 0 66.66666667%;
|
||||
}
|
||||
.col-12 {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
56
Controller/ContactController.php
Normal file
56
Controller/ContactController.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\ContactModel;
|
||||
|
||||
class ContactController
|
||||
{
|
||||
protected $view;
|
||||
private $db;
|
||||
private $validData = array();
|
||||
private $errors = array();
|
||||
private $labels = array("name" => "Name", "email" => "E-Mail-Adresse", "content" => "Nachricht");
|
||||
|
||||
|
||||
public function __construct($view)
|
||||
{
|
||||
$this->db = new ContactModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showContactForm()
|
||||
{
|
||||
$this->view->setVars([
|
||||
'labels' => $this->labels,
|
||||
'validData' => $this->validData,
|
||||
'errors' => $this->errors
|
||||
]);
|
||||
}
|
||||
|
||||
public function showConfirmation()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function validateForm(){
|
||||
foreach ($this->labels as $index => $value) {
|
||||
if (!isset($_POST[$index]) || empty($_POST[$index])) {
|
||||
$this->errors[$index] = "Bitte " . $value . " angeben";
|
||||
} else {
|
||||
$this->validData[$index] = $_POST[$index];
|
||||
}
|
||||
}
|
||||
|
||||
if (count($this->errors) > 0) {
|
||||
$this->view->setDoMethodName("showContactForm");
|
||||
$this->showContactForm();
|
||||
} else {
|
||||
if ($this->db->writeContactData($this->validData)) {
|
||||
$this->view->setDoMethodName("showConfirmation");
|
||||
$this->showConfirmation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
12
Controller/LoginController.php
Normal file
12
Controller/LoginController.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class LoginController {
|
||||
function showLoginPage(){
|
||||
|
||||
}
|
||||
function showPasswortVergessen(){
|
||||
|
||||
}
|
||||
}
|
||||
|
10
Controller/ProfileController.php
Normal file
10
Controller/ProfileController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class ProfileController {
|
||||
function showProfile()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
10
Controller/RegisterController.php
Normal file
10
Controller/RegisterController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class RegisterController {
|
||||
function showRegisterPage()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
10
Controller/TicketsController.php
Normal file
10
Controller/TicketsController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class TicketsController {
|
||||
function showTickets()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
18
Controller/WelcomeController.php
Normal file
18
Controller/WelcomeController.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
class WelcomeController
|
||||
{
|
||||
function showWelcome() {
|
||||
|
||||
}
|
||||
|
||||
function showProjects() {
|
||||
|
||||
}
|
||||
|
||||
function showTutorials() {
|
||||
|
||||
}
|
||||
}
|
25
Library/ErrorMsg.php
Normal file
25
Library/ErrorMsg.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Library;
|
||||
|
||||
use Blog\Library\View;
|
||||
|
||||
class ErrorMsg
|
||||
{
|
||||
protected $view;
|
||||
|
||||
public function __construct($msg = 'Ihre Anfrage konnte nicht verarbeitet werden', $ex = '')
|
||||
{
|
||||
$this->view = new View(dirname(__DIR__).DIRECTORY_SEPARATOR.'Views'
|
||||
, 'Error', 'showErrMsg');
|
||||
$this->view->setVars([
|
||||
'error' => $msg,
|
||||
'debug' => $ex
|
||||
|
||||
]);
|
||||
$this->view->render();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
58
Library/View.php
Normal file
58
Library/View.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
namespace Blog\Library;
|
||||
|
||||
class View
|
||||
{
|
||||
protected $path, $controller, $do, $vars = [];
|
||||
|
||||
/**
|
||||
* @param string $path Basepath of the views.
|
||||
* @param string $controllerName Current controller.
|
||||
* @param string $doMethodName Current action.
|
||||
*/
|
||||
public function __construct($path, $controllerName, $doMethodName)
|
||||
{
|
||||
$this->path = $path;
|
||||
$this->controller = $controllerName;
|
||||
$this->do = $doMethodName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set view vars. The keys will be added, to existing keys.
|
||||
*
|
||||
* @param array $vars
|
||||
*/
|
||||
public function setVars(array $vars)
|
||||
{
|
||||
foreach ($vars as $key => $val) {
|
||||
$this->vars[$key] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
public function setDoMethodName($doMethodName)
|
||||
{
|
||||
$this->do = $doMethodName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the view.
|
||||
*
|
||||
* @throws NotFoundException
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$fileName = $this->path.DIRECTORY_SEPARATOR.$this->controller.DIRECTORY_SEPARATOR.$this->do.'.phtml';
|
||||
|
||||
if (!file_exists($fileName)) {
|
||||
echo "Fehler: Datei " . $fileName . " existiert nicht";
|
||||
exit();
|
||||
}
|
||||
|
||||
// spare the view the bloat of using "$this->vars[]" for every variable
|
||||
foreach ($this->vars as $key => $val) {
|
||||
$$key = $val; //Variable Variablen siehe http://php.net/manual/de/language.variables.variable.php
|
||||
}
|
||||
|
||||
include $fileName;
|
||||
}
|
||||
}
|
31
Model/ContactModel.php
Normal file
31
Model/ContactModel.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class ContactModel extends Database
|
||||
{
|
||||
public function writeContactData($values)
|
||||
{
|
||||
$guid = $this->createUUID();
|
||||
|
||||
$sql = "INSERT INTO contact (`id`, `name`, `email`, `content`) VALUES (
|
||||
:guid, :name, :email, :content);";
|
||||
|
||||
$pdo = $this->linkDB();
|
||||
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute(array(":guid" => $guid,
|
||||
":name" => $values["name"],
|
||||
":email" => $values["email"],
|
||||
":content" => $values["content"]));
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der Daten.", $e);
|
||||
die;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
49
Model/Database.php
Normal file
49
Model/Database.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDO;
|
||||
use PDOException;
|
||||
|
||||
abstract class Database {
|
||||
|
||||
/**
|
||||
* Zugangsdaten für die Datenbank
|
||||
*/
|
||||
private $dbName = "pbbfa23csc_bibarts"; //Datenbankname
|
||||
private $linkName = "localhost"; //Datenbank-Server
|
||||
private $user = "pbbfa23csc"; //Benutzername
|
||||
private $pw = "gfDVACEQ9BZr"; //Passwort
|
||||
|
||||
/**
|
||||
* Stellt eine Verbindung zur Datenbank her
|
||||
*
|
||||
* @return PDO Gibt eine Datenbankverbindung zurueck
|
||||
*/
|
||||
public function linkDB() {
|
||||
try {
|
||||
$pdo = new PDO("mysql:dbname=$this->dbName;host=$this->linkName"
|
||||
, $this->user
|
||||
, $this->pw
|
||||
, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
|
||||
return $pdo;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Verbindung konnte nicht aufgebaut werden.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Zum serverseitigen generieren einer UUID
|
||||
*
|
||||
* @return string Liefert eine UUID
|
||||
*/
|
||||
public function createUUID()
|
||||
{
|
||||
$data = openssl_random_pseudo_bytes(16);
|
||||
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
||||
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
|
||||
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
||||
}
|
||||
}
|
11
Views/Error/showErrMsg.phtml
Normal file
11
Views/Error/showErrMsg.phtml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<h2><?=$error?></h2>
|
||||
<p><?=$debug?></p>
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
||||
|
||||
|
||||
|
20
Views/Login/showLoginPage.phtml
Normal file
20
Views/Login/showLoginPage.phtml
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="inhalt">
|
||||
<div class="login-container">
|
||||
<h1>Anmelden</h1>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-email" type="text" placeholder="E-Mail">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-passwort" type="text" placeholder="Passwort">
|
||||
</label>
|
||||
</form>
|
||||
<button class="button-loggin">Login</button>
|
||||
<a class="link-passwort-vergessen" href="?controller=Login&do=showPasswortVergessen">Passwort vergessen?</a>
|
||||
<a class="link-konto-erstellen" href="?controller=Register&do=showRegisterPage">Konto erstellen</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
0
Views/Login/showPasswortVergessen.phtml
Normal file
0
Views/Login/showPasswortVergessen.phtml
Normal file
0
Views/Profile/showProfile.phtml
Normal file
0
Views/Profile/showProfile.phtml
Normal file
64
Views/Register/showRegisterPage.phtml
Normal file
64
Views/Register/showRegisterPage.phtml
Normal file
@@ -0,0 +1,64 @@
|
||||
<div class="inhalt">
|
||||
<div class="login-container">
|
||||
<h1>Registrieren</h1>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-vorname" type="text" placeholder="Vorname">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-nachname" type="text" placeholder="Nachname">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-email" type="text" placeholder="E-Mail">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-passwort" type="text" placeholder="Passwort">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-passwort-repeat" type="text" placeholder="Passwort wiederholen">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-strasse" type="text" placeholder="Straße">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-hausnr" type="text" placeholder="Hausnr.">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-postleitzahl" type="text" placeholder="Postleitzahl">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-ort" type="text" placeholder="Ort">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-land" type="text" placeholder="Land">
|
||||
</label>
|
||||
</form>
|
||||
<form class="form-horizontal" action="#" method="post">
|
||||
<label>
|
||||
<input class="input-tel" type="text" placeholder="Telefonnr.">
|
||||
</label>
|
||||
</form>
|
||||
<button class="button-register">Registrieren</button>
|
||||
<a class="link-konto-erstellen" href="?controller=Login&do=showLoginPage">Login</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
8
Views/Tickets/showTickets.phtml
Normal file
8
Views/Tickets/showTickets.phtml
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="inhalt">
|
||||
<div class="tickets-container">
|
||||
<h1>Tickets</h1>
|
||||
<div class="tickets-container-inhalt">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
13
Views/footer.phtml
Normal file
13
Views/footer.phtml
Normal file
@@ -0,0 +1,13 @@
|
||||
<div id="footer">
|
||||
<div class="container-zahlungsmittel">
|
||||
<h2 class="header-zahlungsarten">Mögliche Zahlungsarten</h2>
|
||||
<div class="zahlungsmittel-img"></div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<a class="link-impressum">Impressum</a>
|
||||
<a class="link-datenschutz">Datenschutz</a>
|
||||
<a class="link-nutzungsbedingungen">Nutzungsbedingungen</a>
|
||||
<span class="text-bib">© bib arts GmbH</span>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
36
Views/header.phtml
Normal file
36
Views/header.phtml
Normal file
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="HTML-5">
|
||||
<head>
|
||||
<title>VR Contact</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="CSS/style.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<nav id="navigation">
|
||||
<div class="link-container">
|
||||
<div id="logo" ><a class="link-logo" href="#"></a></div>
|
||||
<button id="nav-toggle-btn" aria-label="Menü ein-/ausklappen">▼</button>
|
||||
<div class="nav-links">
|
||||
<a id="link-tickets" class="links" href="?controller=Tickets&do=showTickets">Tickets</a>
|
||||
<a id="link-infos" class="links" href="?controller=Welcome&do=showWelcome">Infos</a>
|
||||
<a id="link-profil" class="links" href="?controller=Profile&do=showProfile">Profil</a>
|
||||
<a id="link-login" class="links" href="?controller=Login&do=showLoginPage">Login</a>
|
||||
<a id="link-register" class="links" href="?controller=Register&do=showRegisterPage">Register</a>
|
||||
<div id="profile-picture"></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var btn = document.getElementById('nav-toggle-btn');
|
||||
var links = document.querySelector('.nav-links');
|
||||
if (btn && links) {
|
||||
btn.addEventListener('click', function() {
|
||||
links.classList.toggle('open');
|
||||
btn.classList.toggle('open');
|
||||
btn.innerHTML = links.classList.contains('open') ? '▲' : '▼';
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
30
contact.sql
Normal file
30
contact.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- phpMyAdmin SQL Dump
|
||||
-- version 4.5.1
|
||||
-- http://www.phpmyadmin.net
|
||||
--
|
||||
-- Host: 127.0.0.1
|
||||
-- Erstellungszeit: 24. Nov 2017 um 17:01
|
||||
-- Server-Version: 10.1.16-MariaDB
|
||||
-- PHP-Version: 7.0.9
|
||||
|
||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
--
|
||||
-- Datenbank: `blog`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
CREATE TABLE `contact` (
|
||||
`id` varchar(36) NOT NULL,
|
||||
`topicCode` tinyint(2) NULL,
|
||||
`name` varchar(200) NOT NULL,
|
||||
`email` varchar(300) NOT NULL,
|
||||
`phone` varchar(16) NULL,
|
||||
`content` varchar(500) NOT NULL,
|
||||
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
ALTER TABLE `contact`
|
||||
ADD PRIMARY KEY (`id`)
|
BIN
images/Zahlungsmittel.png
Normal file
BIN
images/Zahlungsmittel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.0 KiB |
BIN
images/beispiel-austellung1.png
Normal file
BIN
images/beispiel-austellung1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 855 KiB |
BIN
images/beispiel-austellung2.png
Normal file
BIN
images/beispiel-austellung2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
BIN
images/bibArts.png
Normal file
BIN
images/bibArts.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
50
index.php
Normal file
50
index.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
session_start();
|
||||
include 'Views/header.phtml';
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
spl_autoload_register(function ($className) {
|
||||
if (substr($className, 0, 5) !== 'Blog\\') {
|
||||
// not our business
|
||||
return;
|
||||
}
|
||||
|
||||
$fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 5)).'.php';
|
||||
|
||||
if (file_exists($fileName)) {
|
||||
include $fileName;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$controllerName = "";
|
||||
$doMethodName = "";
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$controllerName = isset($_POST['controller']) && $_POST['controller'] ? $_POST['controller'] : "Welcome";
|
||||
$doMethodName = isset($_POST['do']) && $_POST['do'] ? $_POST['do'] : "showWelcome";
|
||||
} else {
|
||||
$controllerName = isset($_GET['controller']) && $_GET['controller'] ? $_GET['controller'] : "Welcome";
|
||||
$doMethodName = isset($_GET['do']) && $_GET['do'] ? $_GET['do'] : "showWelcome";
|
||||
}
|
||||
|
||||
$controllerClassName = 'Blog\\Controller\\'.ucfirst($controllerName).'Controller';
|
||||
|
||||
if (method_exists($controllerClassName, $doMethodName)) {
|
||||
$view = new \Blog\Library\View(__DIR__.DIRECTORY_SEPARATOR.'Views'
|
||||
, ucfirst($controllerName), $doMethodName);
|
||||
|
||||
$controller = new $controllerClassName($view);
|
||||
$controller->$doMethodName();
|
||||
|
||||
$view->render();
|
||||
|
||||
} else {
|
||||
new \Blog\Library\ErrorMsg('Page not found: '.$controllerClassName.'::'.$doMethodName);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
include 'Views/footer.phtml';
|
||||
?>
|
||||
|
Reference in New Issue
Block a user