Compare commits
16 Commits
a2a29195d7
...
backend
Author | SHA1 | Date | |
---|---|---|---|
cbd7b0f8cc | |||
db1b26f017 | |||
![]() |
3be7e1ecfd | ||
d8865cbd27 | |||
66ff531ba4 | |||
1964cadd8c | |||
6e3e3708b2 | |||
![]() |
0cff38b71f | ||
5bde268b89 | |||
5cef69ae81 | |||
f3699cb287 | |||
1f8e7dc67b | |||
d435ad36b4 | |||
034ee28187 | |||
![]() |
7b8abb3eab | ||
![]() |
9eaf948a9f |
193
.gitignore
vendored
Normal file
193
.gitignore
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/intellij,windows,macos,git
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij,windows,macos,git
|
||||
|
||||
### Git ###
|
||||
# Created by git for backups. To disable backups in Git:
|
||||
# $ git config --global mergetool.keepBackup false
|
||||
*.orig
|
||||
|
||||
# Created by git when using merge tools for conflicts
|
||||
*.BACKUP.*
|
||||
*.BASE.*
|
||||
*.LOCAL.*
|
||||
*.REMOTE.*
|
||||
*_BACKUP_*.txt
|
||||
*_BASE_*.txt
|
||||
*_LOCAL_*.txt
|
||||
*_REMOTE_*.txt
|
||||
|
||||
### Intellij ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/encodings.xml
|
||||
.idea/php.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### Intellij Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||
.idea/**/sonarlint/
|
||||
|
||||
# SonarQube Plugin
|
||||
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||
.idea/**/sonarIssues.xml
|
||||
|
||||
# Markdown Navigator plugin
|
||||
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||
.idea/**/markdown-navigator.xml
|
||||
.idea/**/markdown-navigator-enh.xml
|
||||
.idea/**/markdown-navigator/
|
||||
|
||||
# Cache file creation bug
|
||||
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||
.idea/$CACHE_FILE$
|
||||
|
||||
# CodeStream plugin
|
||||
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||
.idea/codestream.xml
|
||||
|
||||
# Azure Toolkit for IntelliJ plugin
|
||||
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||
.idea/**/azureSettings.xml
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### macOS Patch ###
|
||||
# iCloud generated files
|
||||
*.icloud
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/intellij,windows,macos,git
|
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>
|
136
CSS/style.css
Normal file
136
CSS/style.css
Normal file
@@ -0,0 +1,136 @@
|
||||
body {
|
||||
background-color: #DFF0F2;
|
||||
color: black;
|
||||
font-size: 15px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#wrapper {
|
||||
|
||||
}
|
||||
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
#navigation {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.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: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
background-color: #BAC8D4;
|
||||
|
||||
display: grid;
|
||||
grid-template-columns: 6% 5% 43% 32% 14%;
|
||||
grid-template-rows: 45% 10% 45%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container-zahlungsmittel {
|
||||
grid-column: 5;
|
||||
justify-content: right;
|
||||
}
|
||||
.header-zahlungsarten {
|
||||
padding-right: 15px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inhalt {
|
||||
display: flex;
|
||||
height: 10px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.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 {
|
||||
grid-template-columns: 39% 61%;
|
||||
display: grid;
|
||||
width: 110em;
|
||||
min-height: 80%;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.beispiel-austellung1-img {
|
||||
height: 480px;
|
||||
width: 670px;
|
||||
background-image: url("../images/beispiel-austellung1.png");
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
justify-self: right;
|
||||
border-radius: 10px;
|
||||
}
|
||||
.beispiel-austellung2-img {
|
||||
background-image: url("../images/beispiel-austellung2.png");
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
justify-self: right;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.login-container {
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
background-color: #BAC8D4;
|
||||
width: 900px;
|
||||
height: 450px;
|
||||
border-radius: 10px;
|
||||
}
|
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%;
|
||||
}
|
||||
}
|
53
Controller/ContactController.php
Normal file
53
Controller/ContactController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
64
Controller/EventController.php
Normal file
64
Controller/EventController.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\EventModel;
|
||||
|
||||
class EventController {
|
||||
|
||||
private $model;
|
||||
private $view;
|
||||
|
||||
public function __construct($view) {
|
||||
$this->model = new EventModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showEvents() {
|
||||
$events = $this->model->getEvents();
|
||||
$this->view->setVars([
|
||||
'events' => $events
|
||||
]);
|
||||
}
|
||||
|
||||
public function createEvent() {
|
||||
$data = [
|
||||
'name' => $_POST['name'] ?? null,
|
||||
'beschreibung' => $_POST['beschreibung'] ?? null,
|
||||
'standortid' => $_POST['standortid'] ?? null,
|
||||
'datum_von' => $_POST['datum_von'] ?? null,
|
||||
'datum_bis' => $_POST['datum_bis'] ?? null,
|
||||
'max_tickets' => $_POST['max_tickets'] ?? null,
|
||||
'preis' => $_POST['preis'] ?? null
|
||||
];
|
||||
|
||||
$this->model->createEvent($data);
|
||||
$this->view->setVars(['event' => $data]);
|
||||
exit;
|
||||
}
|
||||
|
||||
public function editEventForm() {
|
||||
$id = $_GET['ausstellungid'];
|
||||
$event = $this->model->getEvent($id);
|
||||
$this->view->setVars(['event' => $event]);
|
||||
}
|
||||
|
||||
public function updateEvent($id, $data) {
|
||||
$id = $_POST['ausstellungid'];
|
||||
$data = [
|
||||
'standortid' => $_POST['standortid'] ?? null,
|
||||
'datum_von' => $_POST['datum_von'] ?? null,
|
||||
'datum_bis' => $_POST['datum_bis'] ?? null,
|
||||
'name' => $_POST['name'] ?? null,
|
||||
'beschreibung' => $_POST['beschreibung'] ?? null,
|
||||
'max_tickets' => $_POST['max_tickets'] ?? null,
|
||||
'preis' => $_POST['preis'] ?? null
|
||||
];
|
||||
$this->model->updateEvent($id, $data);
|
||||
}
|
||||
|
||||
public function deleteEvent($id) {
|
||||
$this->model->deleteEvent($id);
|
||||
$this->view->setVars(['id' => $id]);
|
||||
}
|
||||
}
|
57
Controller/GutscheinController.php
Normal file
57
Controller/GutscheinController.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\GutscheinModel;
|
||||
|
||||
class GutscheinController {
|
||||
|
||||
private $model;
|
||||
private $view;
|
||||
|
||||
public function __construct($view) {
|
||||
$this->model = new GutscheinModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showGutscheine() {
|
||||
$gutscheine = $this->model->getGutscheine();
|
||||
$this->view->setVars(['gutscheine' => $gutscheine]);
|
||||
}
|
||||
|
||||
public function createGutschein() {
|
||||
$data = [
|
||||
'code' => $_POST['code'] ?? null,
|
||||
'rabatt' => $_POST['rabatt'] ?? null,
|
||||
'eventid' => $_POST['eventid'] ?? null,
|
||||
'gültigkeit' => $_POST['gültigkeit'] ?? null
|
||||
];
|
||||
$erg = $this->model->createGutschein($data);
|
||||
$this->view->setVars(['gutschein' => $erg]);
|
||||
exit;
|
||||
}
|
||||
|
||||
public function editGutscheinForm() {
|
||||
$id = $_GET['gutscheinid'];
|
||||
if ($id) {
|
||||
$gutschein = $this->model->getGutschein($id);
|
||||
$this->view->setVars(['gutschein' => $gutschein]);
|
||||
}
|
||||
}
|
||||
|
||||
public function updateGutschein() {
|
||||
$id = $_POST['gutscheinid'];
|
||||
$data = [
|
||||
'code' => $_POST['code'] ?? null,
|
||||
'rabatt' => $_POST['rabatt'] ?? null,
|
||||
'eventid' => $_POST['eventid'] ?? null,
|
||||
'gültigkeit' => $_POST['gültigkeit'] ?? null
|
||||
];
|
||||
$this->model->updateGutschein($id, $data);
|
||||
}
|
||||
|
||||
public function deleteGutschein() {
|
||||
$id = $_GET['gutscheinid'] ?? null;
|
||||
$this->model->deleteGutschein($id);
|
||||
}
|
||||
}
|
10
Controller/LoginController.php
Normal file
10
Controller/LoginController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class LoginController {
|
||||
function showLoginPage()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
53
Controller/NewsController.php
Normal file
53
Controller/NewsController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\NewsModel;
|
||||
|
||||
class NewsController {
|
||||
|
||||
private $model;
|
||||
private $view;
|
||||
|
||||
public function __construct($view) {
|
||||
$this->model = new NewsModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showNews() {
|
||||
$news = $this->model->getNews();
|
||||
$this->view->setVars(['news' => $news]);
|
||||
}
|
||||
|
||||
public function createNews() {
|
||||
$data = [
|
||||
'name' => $_POST['name'],
|
||||
'beschreibung' => $_POST['beschreibung'],
|
||||
'datum' => $_POST['datum'],
|
||||
];
|
||||
$erg = $this->model->createNews($data);
|
||||
$this->view->setVars(['news' => $erg]);
|
||||
exit;
|
||||
}
|
||||
|
||||
public function editNewsForm() {
|
||||
$id = $_GET['newsid'];
|
||||
$news = $this->model->getNewsById($id);
|
||||
$this->view->setVars(['news' => $news]);
|
||||
}
|
||||
|
||||
public function updateNews() {
|
||||
$id = $_POST['newsid'] ?? null;
|
||||
$data = [
|
||||
'name' => $_POST['name'],
|
||||
'beschreibung' => $_POST['beschreibung'],
|
||||
'datum' => $_POST['datum'],
|
||||
];
|
||||
$this->model->updateNews($id, $data);
|
||||
}
|
||||
|
||||
public function deleteNews() {
|
||||
$id = $_GET['newsid'] ?? null;
|
||||
$this->model->deleteNews($id);
|
||||
}
|
||||
}
|
10
Controller/RegisterController.php
Normal file
10
Controller/RegisterController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Blog\Controller;
|
||||
|
||||
class RegisterController {
|
||||
function showRegisterPage()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
61
Controller/StandortController.php
Normal file
61
Controller/StandortController.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\StandortModel;
|
||||
|
||||
class StandortController {
|
||||
|
||||
private $model;
|
||||
private $view;
|
||||
|
||||
public function __construct($view) {
|
||||
$this->model = new StandortModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showStandorte() {
|
||||
$standorte = $this->model->getStandorte();
|
||||
$this->view->setVars(['standorte' => $standorte]);
|
||||
}
|
||||
|
||||
public function createStandort() {
|
||||
$data = [
|
||||
'straße' => $_POST['straße'],
|
||||
'hausnr' => $_POST['hausnr'],
|
||||
'postleitzahl' => $_POST['postleitzahl'],
|
||||
'ort' => $_POST['ort'],
|
||||
'land' => $_POST['land'],
|
||||
'tel' => $_POST['tel'],
|
||||
'email' => $_POST['email']
|
||||
];
|
||||
$erg = $this->model->createStandort($data);
|
||||
$this->view->setVars(['standort' => $erg]);
|
||||
}
|
||||
|
||||
public function editStandortForm() {
|
||||
$id = $_GET['standortid'];
|
||||
$standort = $this->model->getStandort($id);
|
||||
$this->view->setVars(['standort' => $standort]);
|
||||
}
|
||||
|
||||
public function updateStandort() {
|
||||
$id = $_POST['standortid'];
|
||||
$data = [
|
||||
'straße' => $_POST['straße'],
|
||||
'hausnr' => $_POST['hausnr'],
|
||||
'postleitzahl' => $_POST['postleitzahl'],
|
||||
'ort' => $_POST['ort'],
|
||||
'land' => $_POST['land'],
|
||||
'tel' => $_POST['tel'],
|
||||
'email' => $_POST['email']
|
||||
];
|
||||
$erg = $this->model->updateStandort($id, $data);
|
||||
$this->view->setVars(['standort' => $erg]);
|
||||
}
|
||||
|
||||
public function deleteStandort() {
|
||||
$id = $_GET['standortid'] ?? null;
|
||||
$this->model->deleteStandort($id);
|
||||
}
|
||||
}
|
39
Controller/TicketController.php
Normal file
39
Controller/TicketController.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Controller;
|
||||
|
||||
use Blog\Model\TicketModel;
|
||||
|
||||
class TicketController {
|
||||
|
||||
private $ticketModel;
|
||||
private $view;
|
||||
|
||||
public function __construct($view) {
|
||||
$this->ticketModel = new TicketModel();
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showTickets() {
|
||||
$tickets = $this->ticketModel->getTickets();
|
||||
$this->view->setVars(['tickets' => $tickets]);
|
||||
}
|
||||
|
||||
public function buyTicket() {
|
||||
$data = [
|
||||
'userid' => $_POST['userid'],
|
||||
'eventid' => $_POST['eventid'],
|
||||
'kaufdatum' => date('Y-m-d'),
|
||||
'gültigkeitsdatum' => $_POST['gültigkeitsdatum']
|
||||
];
|
||||
$erg = $this->ticketModel->buyTicket($data);
|
||||
$this->view->setVars(['ticket' => $erg]);
|
||||
}
|
||||
|
||||
public function deleteTicket() {
|
||||
$ticketid = $_GET['ticketid'] ?? null;
|
||||
if ($ticketid) {
|
||||
$this->ticketModel->deleteTicket($ticketid);
|
||||
}
|
||||
}
|
||||
}
|
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));
|
||||
}
|
||||
}
|
90
Model/EventModel.php
Normal file
90
Model/EventModel.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class EventModel extends Database {
|
||||
|
||||
public function getEvents() {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM ausstellung ORDER BY datum_von DESC;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der Events.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function getEvent($id) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM ausstellung WHERE ausstellungid = :id;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute([":id" => $id]);
|
||||
return $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen des Events.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function updateEvent($id, $data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "UPDATE ausstellung SET standortid = :standortid, datum_von = :datum_von, datum_bis = :datum_bis, name = :name, beschreibung = :beschreibung, max_tickets = :max_tickets, preis = :preis WHERE ausstellungid = :id;";
|
||||
$params = [
|
||||
":standortid" => $data['standortid'],
|
||||
":datum_von" => $data['datum_von'],
|
||||
":datum_bis" => $data['datum_bis'],
|
||||
":name" => $data['name'],
|
||||
":beschreibung" => $data['beschreibung'],
|
||||
":max_tickets" => $data['max_tickets'],
|
||||
":preis" => $data['preis'],
|
||||
":id" => $id
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Aktualisieren des Events.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function createEvent($data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "INSERT INTO ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets, preis) VALUES (:standortid, :datum_von, :datum_bis, :name, :beschreibung, :max_tickets, :preis);";
|
||||
$params = [
|
||||
":standortid" => $data['standortid'],
|
||||
":datum_von" => $data['datum_von'],
|
||||
":datum_bis" => $data['datum_bis'],
|
||||
":name" => $data['name'],
|
||||
":beschreibung" => $data['beschreibung'],
|
||||
":max_tickets" => $data['max_tickets'],
|
||||
":preis" => $data['preis']
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Erstellen des Events.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteEvent($id) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "DELETE FROM ausstellung WHERE ausstellungid = :id;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute([":id" => $id]);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Löschen des Events.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
86
Model/GutscheinModel.php
Normal file
86
Model/GutscheinModel.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class GutscheinModel extends Database {
|
||||
|
||||
public function getGutscheine() {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM gutschein ORDER BY gültigkeit DESC;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der Gutscheine.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function getGutschein($id) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM gutschein WHERE gutscheinid = :id;";
|
||||
$params = [":id" => $id];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen des Gutscheins.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function createGutschein($data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "INSERT INTO gutschein (code, rabatt, eventid, gültigkeit) VALUES (:code, :rabatt, :eventid, :gültigkeit);";
|
||||
$params = [
|
||||
":code" => $data['code'],
|
||||
":rabatt" => $data['rabatt'],
|
||||
":eventid" => $data['eventid'],
|
||||
":gültigkeit" => $data['gültigkeit']
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Erstellen des Gutscheins.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function updateGutschein($id, $data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "UPDATE gutschein SET code = :code, rabatt = :rabatt, eventid = :eventid, gültigkeit = :gültigkeit WHERE gutscheinid = :id;";
|
||||
$params = [
|
||||
":code" => $data['code'],
|
||||
":rabatt" => $data['rabatt'],
|
||||
":eventid" => $data['eventid'],
|
||||
":gültigkeit" => $data['gültigkeit'],
|
||||
":id" => $id
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Aktualisieren des Gutscheins.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteGutschein($id) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "DELETE FROM gutschein WHERE gutscheinid = :id;";
|
||||
$params = [":id" => $id];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Löschen des Gutscheins.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
85
Model/NewsModel.php
Normal file
85
Model/NewsModel.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class NewsModel extends Database {
|
||||
|
||||
public function getNewsById($newsId) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM news WHERE newsid = :newsid;";
|
||||
$params = [":newsid" => $newsId];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der News.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function updateNews($newsId, $news) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "UPDATE news SET name = :name, beschreibung = :beschreibung, datum = :datum WHERE newsid = :newsid;";
|
||||
$params = [
|
||||
":name" => $news['titel'],
|
||||
":beschreibung" => $news['inhalt'],
|
||||
":datum" => $news['datum'],
|
||||
":newsid" => $newsId
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Aktualisieren der News.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function getNews() {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM news ORDER BY datum DESC;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der News.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function createNews($news) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "INSERT INTO news (name, beschreibung, datum) VALUES (:name, :beschreibung, :datum);";
|
||||
$params = [
|
||||
":name" => $news['titel'],
|
||||
":beschreibung" => $news['inhalt'],
|
||||
":datum" => $news['datum']
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der News.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteNews($newsId) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "DELETE FROM news WHERE newsid = :newsid;";
|
||||
$params = [":newsid" => $newsId];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Löschen der News.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
103
Model/StandortModel.php
Normal file
103
Model/StandortModel.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class StandortModel extends Database {
|
||||
|
||||
public function getStandorte() {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM Standort ORDER BY standortid ASC;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der Standorte.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function getStandort($standortid) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM Standort WHERE standortid = :standortid;";
|
||||
$params = [":standortid" => $standortid];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen des Standorts.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function createStandort($data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "INSERT INTO Standort (straße, hausnr, postleitzahl, ort, land, tel, email)
|
||||
VALUES (:straße, :hausnr, :postleitzahl, :ort, :land, :tel, :email);";
|
||||
$params = [
|
||||
":straße" => $data['straße'],
|
||||
":hausnr" => $data['hausnr'],
|
||||
":postleitzahl" => $data['postleitzahl'],
|
||||
":ort" => $data['ort'],
|
||||
":land" => $data['land'],
|
||||
":tel" => $data['tel'],
|
||||
":email" => $data['email']
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $pdo->lastInsertId();
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Anlegen des Standorts.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function updateStandort($standortid, $data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "UPDATE Standort SET
|
||||
straße = :straße,
|
||||
hausnr = :hausnr,
|
||||
postleitzahl = :postleitzahl,
|
||||
ort = :ort,
|
||||
land = :land,
|
||||
tel = :tel,
|
||||
email = :email
|
||||
WHERE standortid = :standortid;";
|
||||
$params = [
|
||||
":straße" => $data['straße'],
|
||||
":hausnr" => $data['hausnr'],
|
||||
":postleitzahl" => $data['postleitzahl'],
|
||||
":ort" => $data['ort'],
|
||||
":land" => $data['land'],
|
||||
":tel" => $data['tel'],
|
||||
":email" => $data['email'],
|
||||
":standortid" => $standortid
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->rowCount();
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Aktualisieren des Standorts.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteStandort($standortid) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "DELETE FROM Standort WHERE standortid = :standortid;";
|
||||
$params = [":standortid" => $standortid];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->rowCount();
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Löschen des Standorts.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
72
Model/TicketModel.php
Normal file
72
Model/TicketModel.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace Blog\Model;
|
||||
|
||||
use PDOException;
|
||||
|
||||
class TicketModel extends Database {
|
||||
|
||||
public function getTickets() {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT * FROM Ticket ORDER BY ticketid ASC;";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der Tickets.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function buyTicket($data) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "INSERT INTO Ticket (userid, eventid, kaufdatum, gültigkeitsdatum)
|
||||
VALUES (:userid, :eventid, :kaufdatum, :gültigkeitsdatum);";
|
||||
$params = [
|
||||
":userid" => $data['userid'],
|
||||
":eventid" => $data['eventid'],
|
||||
":kaufdatum" => $data['kaufdatum'],
|
||||
":gültigkeitsdatum" => $data['gültigkeitsdatum']
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $pdo->lastInsertId();
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Kauf des Tickets.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function hasTicket($userid, $eventid) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT COUNT(*) as count FROM Ticket WHERE userid = :userid AND eventid = :eventid;";
|
||||
$params = [
|
||||
":userid" => $userid,
|
||||
":eventid" => $eventid
|
||||
];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->fetch(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler bei der Ticketprüfung.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteTicket($ticketid) {
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "DELETE FROM Ticket WHERE ticketid = :ticketid;";
|
||||
$params = [":ticketid" => $ticketid];
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
return $sth->rowCount();
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Löschen des Tickets.", $e);
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
12
Views/Contact/showConfirmation.phtml
Normal file
12
Views/Contact/showConfirmation.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Ihre Anfrage wurde erfolgreich versendet.</p>
|
||||
<a href="?controller=Welcome&do=showWelcome">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
36
Views/Contact/showContactForm.phtml
Normal file
36
Views/Contact/showContactForm.phtml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
|
||||
|
||||
<h2>Ihre Anfrage an uns</h2>
|
||||
<form method="post">
|
||||
|
||||
<?php foreach ($labels as $index => $value) {
|
||||
echo '<label for="' . $index . '">' . $value . '</label>';
|
||||
if ($index == "content") {
|
||||
echo "<textarea id=\"$index\" name=\"$index\" >";
|
||||
if (isset($validData[$index])) { echo $validData[$index]; }
|
||||
echo "</textarea><br>";
|
||||
} else {
|
||||
echo '<input type="text" name="' . $index . '" value="' . (isset($validData[$index]) ? $validData[$index] : '') . '"><br>';
|
||||
}
|
||||
if (isset($errors[$index])) {
|
||||
echo '<label class="errorMsg">' . $errors[$index] . '</label><br>';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input type="hidden" name="controller" value="contact">
|
||||
<input type="hidden" name="do" value="validateForm">
|
||||
<input type="submit" name="submit" value="Absenden"></form>
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
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'; ?>
|
||||
|
||||
|
||||
|
12
Views/Event/createEvent.phtml
Normal file
12
Views/Event/createEvent.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Das Event "<?php echo $name?>" wurde erfolgreich erstellt!</p>
|
||||
<a href="?controller=Event&do=showEvents">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
12
Views/Event/deleteEvent.phtml
Normal file
12
Views/Event/deleteEvent.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Das Event mit der id"<?php echo $id?>" wurde erfolgreich gelöscht!</p>
|
||||
<a href="?controller=Event&do=showEvents">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
32
Views/Event/showEvents.phtml
Normal file
32
Views/Event/showEvents.phtml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php include dirname(__DIR__) . '/header.phtml'; ?>
|
||||
|
||||
<h2>Alle Ausstellungen</h2>
|
||||
|
||||
<?php if (!empty($events)): ?>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Von</th>
|
||||
<th>Bis</th>
|
||||
<th>Max. Tickets</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($events as $event): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($event['name']); ?></td>
|
||||
<td><?php echo nl2br(htmlspecialchars($event['beschreibung'])); ?></td>
|
||||
<td><?php echo date('d.m.Y', strtotime($event['datum_von'])); ?></td>
|
||||
<td><?php echo date('d.m.Y', strtotime($event['datum_bis'])); ?></td>
|
||||
<td><?php echo (int) $event['max_tickets']; ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<p>Derzeit sind keine Ausstellungen verfügbar.</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php include dirname(__DIR__) . '/footer.phtml'; ?>
|
12
Views/Event/updateEvent.phtml
Normal file
12
Views/Event/updateEvent.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Das Event mit der ID "<?php echo $ausstellungid?>" wurde erfolgreich bearbeitet!</p>
|
||||
<a href="?controller=Event&do=showEvents">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
1
Views/Gutschein/createGutschein.phtml
Normal file
1
Views/Gutschein/createGutschein.phtml
Normal file
@@ -0,0 +1 @@
|
||||
echo "create gutschein"
|
35
Views/Gutschein/showGutscheine.phtml
Normal file
35
Views/Gutschein/showGutscheine.phtml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php include dirname(__DIR__) . '/header.phtml'; ?>
|
||||
|
||||
<h2>Alle Gutscheine</h2>
|
||||
<a href="?controller=Gutschein&do=createGutscheinForm">Neuen Gutschein anlegen</a>
|
||||
<?php if (!empty($gutscheine)): ?>
|
||||
<table border="1" cellpadding="8" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Rabatt (%)</th>
|
||||
<th>Event-ID</th>
|
||||
<th>Gültig bis</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($gutscheine as $g): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($g['code']); ?></td>
|
||||
<td><?php echo (int)$g['rabatt']; ?></td>
|
||||
<td><?php echo (int)$g['eventid']; ?></td>
|
||||
<td><?php echo htmlspecialchars($g['gültigkeit']); ?></td>
|
||||
<td>
|
||||
<a href="?controller=Gutschein&action=editGutscheinForm&id=<?php echo $g['gutscheinid']; ?>">Bearbeiten</a> |
|
||||
<a href="?controller=Gutschein&action=deleteGutschein&id=<?php echo $g['gutscheinid']; ?>" onclick="return confirm('Wirklich löschen?');">Löschen</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<p>Keine Gutscheine vorhanden.</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php include dirname(__DIR__) . '/footer.phtml'; ?>
|
37
Views/Login/showLoginPage.phtml
Normal file
37
Views/Login/showLoginPage.phtml
Normal file
@@ -0,0 +1,37 @@
|
||||
<!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>
|
||||
<?php
|
||||
include dirname(__DIR__) . '/header.phtml';
|
||||
?>
|
||||
<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">Passwort vergessen?</a>
|
||||
<a class="link-konto-erstellen">Konto erstellen</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
include dirname(__DIR__) . '/footer.phtml';
|
||||
?>
|
||||
<body>
|
||||
</html>
|
||||
|
28
Views/News/showNews.phtml
Normal file
28
Views/News/showNews.phtml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php include dirname(__DIR__) . '/header.phtml'; ?>
|
||||
|
||||
<h2>Alle News</h2>
|
||||
|
||||
<?php if (!empty($news)): ?>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Datum</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($news as $item): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($item['name']); ?></td>
|
||||
<td><?php echo nl2br(htmlspecialchars($item['beschreibung'])); ?></td>
|
||||
<td><?php echo date('d.m.Y', strtotime($item['datum'])); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<p>Derzeit sind keine News verfügbar.</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php include dirname(__DIR__) . '/footer.phtml'; ?>
|
81
Views/Register/showRegisterPage.phtml
Normal file
81
Views/Register/showRegisterPage.phtml
Normal file
@@ -0,0 +1,81 @@
|
||||
<!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>
|
||||
<?php
|
||||
include dirname(__DIR__) . '/header.phtml';
|
||||
?>
|
||||
<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">Login</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
include dirname(__DIR__) . '/footer.phtml';
|
||||
?>
|
||||
<body>
|
||||
</html>
|
||||
|
36
Views/Standort/showStandorte.phtml
Normal file
36
Views/Standort/showStandorte.phtml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php include dirname(__DIR__) . '/header.phtml'; ?>
|
||||
|
||||
<h2>Unsere Standorte</h2>
|
||||
|
||||
<?php if (!empty($standorte)): ?>
|
||||
<table border="1" cellpadding="8" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Straße</th>
|
||||
<th>Hausnr.</th>
|
||||
<th>PLZ</th>
|
||||
<th>Ort</th>
|
||||
<th>Land</th>
|
||||
<th>Telefon</th>
|
||||
<th>Email</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($standorte as $standort): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($standort['straße']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['hausnr']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['postleitzahl']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['ort']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['land']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['tel']); ?></td>
|
||||
<td><?php echo htmlspecialchars($standort['email']); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<p>Keine Standorte gefunden.</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php include dirname(__DIR__) . '/footer.phtml'; ?>
|
12
Views/Ticket/buyTicket.phtml
Normal file
12
Views/Ticket/buyTicket.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Ihr Ticket für das Event "<?php echo $event['name']?>" wurde erfolgreich gekauft!</p>
|
||||
<a href="?controller=Welcome&do=showWelcome">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
21
Views/Welcome/showProjects.phtml
Normal file
21
Views/Welcome/showProjects.phtml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<article>
|
||||
<h2>Virtuelles Museum</h2>
|
||||
<span class="articleInfo">John Doe | 12.08.2018 um 10:18 Uhr</span>
|
||||
|
||||
<p>
|
||||
<img class="articleImg" src="images/museum.jpg" alt="my Oculus Rift">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio.
|
||||
</p>
|
||||
<p>
|
||||
Proin nonummy, lacus eget pulvinar lacinia, pede felis dignissim leo, vitae tristique magna lacus sit amet eros. Nullam ornare. Praesent odio ligula, dapibus sed, tincidunt eget, dictum ac, nibh. Nam quis lacus. Nunc eleifend molestie velit. Morbi lobortis quam eu velit. Donec euismod vestibulum massa. Donec non lectus. Aliquam commodo lacus sit amet nulla. Cras dignissim elit et augue. Nullam non diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In hac habitasse platea dictumst. Aenean vestibulum. Sed lobortis elit quis lectus. Nunc sed lacus at augue bibendum dapibus.
|
||||
</p>
|
||||
<p>
|
||||
Aliquam vehicula sem ut pede. Cras purus lectus, egestas eu, vehicula at, imperdiet sed, nibh. Morbi consectetuer luctus felis. Donec vitae nisi. Aliquam tincidunt feugiat elit. Duis sed elit ut turpis ullamcorper feugiat. Praesent pretium, mauris sed fermentum hendrerit, nulla lorem iaculis magna, pulvinar scelerisque urna tellus a justo. Suspendisse pulvinar massa in metus. Duis quis quam. Proin justo. Curabitur ac sapien. Nam erat.
|
||||
Praesent ut quam.
|
||||
</p>
|
||||
</article>
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
21
Views/Welcome/showTutorials.phtml
Normal file
21
Views/Welcome/showTutorials.phtml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<article>
|
||||
<h2>Implement Controller</h2>
|
||||
<span class="articleInfo">John Doe | 18.07.2018 um 18:43 Uhr</span>
|
||||
|
||||
<p>
|
||||
<img class="articleImg" src="images/controller.jpg" alt="my Oculus Rift">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Curabitur pretium tincidunt lacus. Nulla gravida orci a odio.
|
||||
</p>
|
||||
<p>
|
||||
Proin nonummy, lacus eget pulvinar lacinia, pede felis dignissim leo, vitae tristique magna lacus sit amet eros. Nullam ornare. Praesent odio ligula, dapibus sed, tincidunt eget, dictum ac, nibh. Nam quis lacus. Nunc eleifend molestie velit. Morbi lobortis quam eu velit. Donec euismod vestibulum massa. Donec non lectus. Aliquam commodo lacus sit amet nulla. Cras dignissim elit et augue. Nullam non diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In hac habitasse platea dictumst. Aenean vestibulum. Sed lobortis elit quis lectus. Nunc sed lacus at augue bibendum dapibus.
|
||||
</p>
|
||||
<p>
|
||||
Aliquam vehicula sem ut pede. Cras purus lectus, egestas eu, vehicula at, imperdiet sed, nibh. Morbi consectetuer luctus felis. Donec vitae nisi. Aliquam tincidunt feugiat elit. Duis sed elit ut turpis ullamcorper feugiat. Praesent pretium, mauris sed fermentum hendrerit, nulla lorem iaculis magna, pulvinar scelerisque urna tellus a justo. Suspendisse pulvinar massa in metus. Duis quis quam. Proin justo. Curabitur ac sapien. Nam erat.
|
||||
Praesent ut quam.
|
||||
</p>
|
||||
</article>
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
16
Views/Welcome/showWelcome.phtml
Normal file
16
Views/Welcome/showWelcome.phtml
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="HTML-5">
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
<div class="inhalt">
|
||||
<div class="container-welcome-inhalt">
|
||||
<div class="beispiel-austellung1-img"></div>
|
||||
<div class="beispiel-austellung2-img"></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
include dirname(__DIR__).'/footer.phtml';
|
||||
?>
|
||||
</html>
|
||||
|
19
Views/footer.phtml
Normal file
19
Views/footer.phtml
Normal file
@@ -0,0 +1,19 @@
|
||||
<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>
|
||||
<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>
|
21
Views/header.phtml
Normal file
21
Views/header.phtml
Normal file
@@ -0,0 +1,21 @@
|
||||
<!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>
|
||||
<div id="wrapper">
|
||||
<nav id="navigation">
|
||||
<div class="link-container">
|
||||
<div id="logo" ><a class="link-logo" href="#"></a></div>
|
||||
<a id="link-tickets" class="links" href="#">Tickets</a>
|
||||
<a id="link-infos" class="links" href="?controller=Welcome&do=showWelcome">Infos</a>
|
||||
<a id="link-profil" class="links" href="?controller=Contact&do=showContactForm">Profil</a>
|
||||
<div id="profile-picture"></div>
|
||||
</div>
|
||||
</nav>
|
||||
</body>
|
||||
</html>
|
124
bibarts.sql
Normal file
124
bibarts.sql
Normal file
@@ -0,0 +1,124 @@
|
||||
-- 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 User (
|
||||
userid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
vorname VARCHAR(50),
|
||||
nachname VARCHAR(50),
|
||||
strasse VARCHAR(100),
|
||||
hausnr VARCHAR(10),
|
||||
postleitzahl VARCHAR(10),
|
||||
ort VARCHAR(50),
|
||||
land VARCHAR(50),
|
||||
tel VARCHAR(20),
|
||||
email VARCHAR(100) UNIQUE,
|
||||
isAdmin BOOLEAN DEFAULT FALSE,
|
||||
password VARCHAR(255)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE Standort (
|
||||
standortid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
strasse VARCHAR(100),
|
||||
hausnr VARCHAR(10),
|
||||
plz VARCHAR(10),
|
||||
ort VARCHAR(50),
|
||||
land VARCHAR(50),
|
||||
tel VARCHAR(20),
|
||||
email VARCHAR(100)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE Ausstellung (
|
||||
austellungid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
standortid INT,
|
||||
datum_von DATE,
|
||||
datum_bis DATE,
|
||||
name VARCHAR(100),
|
||||
beschreibung TEXT,
|
||||
max_tickets INT,
|
||||
FOREIGN KEY (standortid) REFERENCES Standort(standortid)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE Ticket (
|
||||
ticketid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
userid INT,
|
||||
ausstellungid INT,
|
||||
kaufdatum DATE,
|
||||
gueltigkeit DATE,
|
||||
preis DECIMAL(10,2),
|
||||
FOREIGN KEY (userid) REFERENCES User(userid),
|
||||
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE Gutschein (
|
||||
gutscheinid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50) UNIQUE,
|
||||
rabatt INT CHECK (rabatt BETWEEN 0 AND 100),
|
||||
ausstellungid INT,
|
||||
gueltigkeit DATE,
|
||||
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE News (
|
||||
newsid INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100),
|
||||
beschreibung TEXT,
|
||||
datum DATE
|
||||
);
|
||||
|
||||
|
||||
|
||||
-- User-Daten
|
||||
INSERT INTO User (vorname, nachname, strasse, hausnr, postleitzahl, ort, land, tel, email, isAdmin, password)
|
||||
VALUES
|
||||
('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, 'passwort123'),
|
||||
('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, 'adminpass');
|
||||
|
||||
-- Standort-Daten
|
||||
INSERT INTO Standort (strasse, hausnr, plz, ort, land, tel, email)
|
||||
VALUES
|
||||
('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'),
|
||||
('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de');
|
||||
|
||||
-- Ausstellung-Daten
|
||||
INSERT INTO Ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets)
|
||||
VALUES
|
||||
(1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200),
|
||||
(2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150);
|
||||
|
||||
-- Gutschein-Daten (Spaltennamen korrigiert)
|
||||
INSERT INTO Gutschein (code, rabatt, ausstellungid, gueltigkeit)
|
||||
VALUES
|
||||
('SOMMER2025', 15, 1, '2025-08-31'),
|
||||
('HERBST25', 25, 2, '2025-10-15');
|
||||
|
||||
-- Ticket-Daten (Spaltennamen korrigiert)
|
||||
INSERT INTO Ticket (userid, ausstellungid, kaufdatum, gueltigkeit, preis)
|
||||
VALUES
|
||||
(1, 1, '2025-06-01', '2025-07-15', 12.50),
|
||||
(2, 2, '2025-06-05', '2025-09-15', 10.00);
|
||||
|
||||
-- News-Daten
|
||||
INSERT INTO News (name, beschreibung, datum)
|
||||
VALUES
|
||||
('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
|
||||
('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');
|
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 |
45
index.php
Normal file
45
index.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
session_start();;;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user