initial commit

This commit is contained in:
Klaas Börgmann 2024-09-09 20:07:44 +02:00
commit c7df6da906
53 changed files with 11894 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
assets/config.php
.DS_store

3
.htaccess Executable file
View File

@ -0,0 +1,3 @@
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]

View File

@ -0,0 +1,15 @@
<IfModule mod_rewrite.c>
RewriteEngine off
</IfModule>
# Require all granted
Satisfy Any
Order Deny,Allow
Allow from all
<FilesMatch "^\.">
# Require all denied
Order Allow,Deny
Deny from all
</FilesMatch>

45
Classes/Bootstrap.php Executable file
View File

@ -0,0 +1,45 @@
<?php
class Bootstrap{
private $controller;
private $action;
private $request;
public function __construct($request){
$this->request = $request;
if($this->request['controller'] == ""){
$this->controller = 'home';
} else {
$this->controller = $this->request['controller'];
}
if($this->request['action'] == ""){
$this->action = 'index';
} else {
$this->action = $this->request['action'];
}
}
public function createController(){
// Check Class
if(class_exists($this->controller)){
$parents = class_parents($this->controller);
// Check Extend
if(in_array("Controller", $parents)){
if(method_exists($this->controller, $this->action)){
return new $this->controller($this->action, $this->request);
} else {
// Method Does Not Exist
echo '<h1>Method does not exist</h1>';
return;
}
} else {
// Base Controller Does Not Exist
echo '<h1>Base controller not found</h1>';
return;
}
} else {
// Controller Class Does Not Exist
echo '<h1>Controller class does not exist</h1>';
return;
}
}
}

24
Classes/Controller.php Executable file
View File

@ -0,0 +1,24 @@
<?php
abstract class Controller{
protected $request;
protected $action;
public function __construct($action, $request){
$this->action = $action;
$this->request = $request;
}
public function executeAction(){
return $this->{$this->action}();
}
protected function returnView($viewmodel, $fullview){
$view = 'Views/'. get_class($this). '/' . $this->action. '.php';
if($fullview){
require('Views/main.php');
} else{
require($view);
}
}
}

79
Classes/Model.php Executable file
View File

@ -0,0 +1,79 @@
<?php
abstract class Model{
protected $dbh;
protected $stmt;
public function __construct(){
$this->dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
}
public function query($query){
$this->stmt = $this->dbh->prepare($query);
}
//Binds the prep statement
public function bind($param, $value, $type = null){
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute(){
$this->stmt->execute();
}
public function resultSet(){
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function lastInsertId(){
return $this->dbh->lastInsertId();
}
public function single(){
$this->execute();
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}
public function getwichtel($wichtel){
$_SESSION['wichtelcode']=$wichtel;
switch($wichtel){
case md5('Klaas'):
$return='Klaas';
break;
case md5('Heike'):
$return='Heike';
break;
case md5('Harald'):
$return='Harald';
break;
case md5('Kathrin'):
$return='Kathrin';
break;
case md5('Steffen'):
$return='Steffen';
break;
case md5('Gunnar'):
$return='Gunnar';
break;
default:
$return='None';
break;
}
return $return;
}
}

7
Controller/home.php Executable file
View File

@ -0,0 +1,7 @@
<?php
class home extends Controller{
protected function index(){
$viewmodel = new HomeModel();
$this->returnView($viewmodel->index(), true);
}
}

8
Controller/impressum.php Executable file
View File

@ -0,0 +1,8 @@
<?php
class Impressum extends Controller{
protected function index(){
$viewmodel = new impressumModel();
$this->returnView($viewmodel->index(), true);
}
}

23
Controller/user.php Executable file
View File

@ -0,0 +1,23 @@
<?php
class user extends Controller{
protected function home(){
$viewmodel = new UserModel();
$this->returnView($viewmodel->home(), true);
}
protected function login(){
$viewmodel = new UserModel();
$this->returnView($viewmodel->login(), true);
}
protected function logout(){
$viewmodel = new UserModel();
$this->returnView($viewmodel->logout(), true);
}
protected function register(){
$viewmodel = new UserModel();
$this->returnView($viewmodel->register(), true);
}
protected function change(){
$viewmodel = new UserModel();
$this->returnView($viewmodel->change(), true);
}
}

6
Models/home.php Executable file
View File

@ -0,0 +1,6 @@
<?php
class HomeModel extends Model{
public function index(){
return;
}
}

7
Models/impressum.php Executable file
View File

@ -0,0 +1,7 @@
<?php
class impressumModel extends Model{
public function index(){
return;
}
}

87
Models/user.php Executable file
View File

@ -0,0 +1,87 @@
<?php
class UserModel extends Model{
public $reg;
public $login;
protected $name;
protected $mail;
protected $psw;
public function Index(){
return;
}
public function login(){
if(isset($_POST['name'])){
if(isset($_POST['psw'])){
$query="SELECT * FROM user WHERE name='".$_POST['name']."'";
$this->query($query);
$record=$this->resultSet();
if (isset($record[0]['pass'])){
if(sha1($_POST['psw'])==$record[0]['pass']){
$_SESSION['login']=1;
$_SESSION['feedback']="Login Erfolgreich";
$_SESSION['name']=$_POST['name'];
$_SESSION['admin']=$record[0]['admin'];
$_SESSION['wichtel']=$this->getwichtel($record[0]['Wichtel']);
header("Location: /user/home");
}else{
$_SESSION['feedback']="Login nicht Erfolgreich";
}
}else{
$_SESSION['feedback']="Nutzer unbekannt";
}
}
}else{
$_SESSION['feedback']="";
}
}
public function regis(){
return $this->reg;
}
public function register(){
$this->reg=false;
if(isset($_POST['regi'])){
$this->name=$_POST['name'];
$this->mail=$_POST['mail'];
$this->psw=$_POST['psw'];
$psw2=$_POST['psw2'];
if($this->psw==$psw2){
// Insert into MySQL
$this->query('INSERT INTO user (name, mail, pass, berechtigt) VALUES(:name, :mail, :pass, :ber)');
$this->bind(':name', $this->name);
$this->bind(':mail', $this->mail);
$this->bind(':pass', sha1($this->psw));
$this->bind(':ber', '0');
$this->execute();
$_SESSION['reg']=true;
echo("erfolg");
}
}
}
public function logout(){
$_SESSION['login']=false;
$_SESSION['feedback']="Logout erfolgreich";
header("Location: /home/index");
}
public function change(){
if(isset($_POST['old'])){
if($_POST['new']==$_POST['new2']){
$pass=sha1($_POST['new']);
$name=$_SESSION['name'];
$this->query("UPDATE user SET pass=':pass' WHERE name=':name'");
$this->bind(':pass', $pass);
$this->bind(':name', $name);
$this->execute();
}
}
}
public function home(){
}
}

View File

@ -0,0 +1,5 @@
<h1>Datenschutz</h1>
<h2>Ich will eure Daten gar nicht</h2>
Auf dieser Seite laufen keine Analysetools und es gibt keine Verbindung zu Datensammlern wie facebook.
Ich nutze auch kein Content-Management-System (CMS) wie Wordpress und momentan auch nur ein Cookie, nämlich die PHPSESSION, dessen Daten aber nicht gespeichert werden.

35
Views/Impressum/index.php Executable file
View File

@ -0,0 +1,35 @@
<h1>Disclaimer</h1>
<p>Diese Seite dient zur Zeit nur dem Üben und Ausprobieren von php- Funktionen und erfüllt dabei einige Orga-Funktionen für mich. Die Seite ist nicht für die Öffentlichkeit vorgesehen und ohne Login auch recht uninteressant.</p>
<p>Alle Links auf dieser Website wurden beim einfügen von mir geprüft. Ich übernehme keine Haftung für Änderungen auf den verlinkten Seiten oder für deren Funktion. Sollte dir auffallen, dass ein Link fehlerhaft oder sogar schädlich ist informiere mich bitte umgehend über admin[at]boergmann.it.</p>
<p>Die Emailadressen und ggf. Post-Adressen sind ausschließlich für die beschriebenen Zweck zu nutzen. Ich widerspreche ausdrücklich der werblichen Nutzung. Für alle Bots, die diesen Text eh nicht lesen sondern nur scannen: nutzt doch einfach <a href="mailto:spam@boergmann.it">spam@boergmann.it</a>. Das ist auch verboten, stört mich aber nicht.</p>
<h1>Datenschutz</h1>
<p>Ich will deine Daten gar nicht, aber alleine das Aufrufen der Seite übermittelt Daten an den Server, die analysiert werden (können).</br>
Das ist zum einen deine IP-Adresse, die gewisse Rückschlüsse über deinen Provider und deinen Aufenthaltsort zulassen. Als zweites dein Browser-Typ, also ob du Firefox, Chrome, Edge oder was auch immer benutzt.</br>
Diese Daten werden an den Server übermittelt, damit er weiß, was er wohin schicken muss, damit du das hier lesen kannst. Ich selbst analysiere diese Daten nicht, da mir Reichweite ziemlich egal ist. Das ist nicht der Zweck dieser Website.</p>
<p>Dies ist eine private Website, daher bin ich selbst der Verantwortliche im Sinne der Datenschutzgrundverordnung und des Bundesdatenschutzgesetzes.</br>
Bei Fragen zum Datenschutz auf dieser Seite schreib mir gerne eine Mail an datenschutz[at]klaasboergmann.de
Wenn du mir schreibst bekomme ich natürlich schon wieder neue Daten von dir. Dabei gelten die Rechte der Betroffenen nach den Artikeln 12ff der DSGVO, also das Recht auf</p>
<ul>
<li>Art. 12 und 13: Tranparenz (Das was ich hiermit tue)</li>
<li>Art. 14: Information über Erhebung bei dritten (Mache ich nicht, wenn doch sage ich Bescheid)</li>
<li>Art. 15: Auskunft (welche Daten habe ich woher, inklusive Kopie aller Daten, wenn gewünscht)</li>
<li>Art 16: Berichtigung (z.B. wenn du mir schreibst und dann deine Mailadresse änderst)</li>
<li>Art 17: Löschung (Auf Wunsch lösche ich unsere Korrespondenz komplett)</li>
</ul>
<p>Die Artikel 18 bis 23 die sich auch noch mit den Rechten der Betroffenen befassen spielen hier keine Rolle. Wer es genau wissen möchte kann hier nachschlagen. (Keine Haftung für Links btw.)</p>
<p>Ich nutze zwar einige soziale Netzwerke, verlinke diese aber hier nicht und nutze auch keine Plugins, daher bekommen die auch keine Daten von euch.</br>
Jedenfalls nicht von mir.</p>
<h1>Impressum</h1>
<p>Da dies eine rein private Website ist findet die Impressumspflicht nach <a href="http://www.gesetze-im-internet.de/tmg/__5.html" target=blank>§5 Telemediengesetz</a><!-- Aufgerufen am 04.01.2023 --> keine Anwendung.</br>
Hier allerdings trotzdem ein paar freiwillige Angaben</p>
<p>Klaas Börgmann</br>
admin[at]boergmann.it</br>
Postanschrift auf begründete Anfrage</p>

1
Views/create/homem.php Executable file
View File

@ -0,0 +1 @@
<h1>Willkommen</h1>

1
Views/create/newrequest.php Executable file
View File

@ -0,0 +1 @@
<H1> New Request in new Action</H1>

View File

@ -0,0 +1 @@
<h1>Willkommen</h1>

1
Views/hinweis/index.php Executable file
View File

@ -0,0 +1 @@
<h1>Willkommen</h1>

1
Views/home/index.php Executable file
View File

@ -0,0 +1 @@
<h1>Willkommen</h1>

48
Views/main.php Executable file
View File

@ -0,0 +1,48 @@
<!--
KKKKKKK KKKKKKK LLLLLLL AAA AAA SSSSSSSSSSSSSSS
K:::::K K::::: K L:::::L A:::A A:::A SS:::::::::::::::S
K:::::K K::::: K L:::::L A:::::A A:::::A S:::::SSSSSS::::::S
K:::::K K::::::K L:::::L A:::::::A A:::::::A S:::::S SSSSSSS
K:::::K K::::::K L:::::L A:::::::::A A:::::::::A S:::::S
K:::::K K:::::K L:::::L A:::::A:::::A A:::::A:::::A S:::::S
K::::::K:::::K L:::::L A:::::A A:::::A A:::::A A:::::A S::::SSSS
K:::::::::::K L:::::L A:::::A A:::::A A:::::A A:::::A SS::::::SSSSS
K::::::::::K L:::::L A:::::A A:::::A A:::::A A:::::A SSS::::::::SS
K:::::K:::::K L:::::L A:::::AAAAAAAAA:::::A A:::::AAAAAAAAA:::::A SSSSSS::::S
K:::::K K:::::K L:::::L A:::::::::::::::::::::A A:::::::::::::::::::::A S:::::S
K:::::K K:::::K L:::::L A:::::AAAAAAAAAAAAA:::::A A:::::AAAAAAAAAAAAA:::::A S:::::S
K:::::K K:::::K L::::::LLLLLLLLLLLLLLLLL A:::::A A:::::A A:::::A A:::::A SSSSSSS S:::::S
K:::::K K::::::K L::::::::::::::::::::::L A:::::A A:::::A A:::::A A:::::A S::::::SSSSSS:::::S
K:::::K K::::::K L::::::::::::::::::::::L A:::::A A:::::A A:::::A A:::::A S:::::::::::::::SS
KKKKKKK KKKKKKK LLLLLLLLLLLLLLLLLLLLLLLL AAAAAAA AAAAAAA AAAAAAA AAAAAAA SSSSSSSSSSSSSSS
-->
<!DOCTYPE html>
<html lang="de-DE">
<head>
<?php
require('assets/head.php');
?>
</head>
<body>
<div id="wrapper">
<div id='header'>
<div id="title">
<a href="<?php echo(ROOT_URL) ?>"><h2><img id="titellogo" src="/media/logo.png"alt="logo" /> Klaas Börgmann</h2></a>
</div>
<div id="menu">
<?php require('assets/menu/mainmenu.php'); ?>
</div>
</div>
<div class="row">
<?php require($view); ?>
</div>
<div id="foot">
<?php require('assets/footer.php'); ?>
</div>
</div>
</body>

15
Views/user/change.php Executable file
View File

@ -0,0 +1,15 @@
<?php
if($_SESSION['login']){
if(!isset($_POST['old'])){
?>
<form action="/user/change" method="POST">
<p>neues Passwort: <input type="password" name="new" id="new"></p>
<p>noch mal: <input type="password" name="new2" id="new2"></p>
<p>altes Passwort: <input type="password" name="old" id="old"></p>
<p> <input type="submit" name="ok" value="Speichern"></p>
</form>
<?php
}else{
}
}

3
Views/user/home.php Executable file
View File

@ -0,0 +1,3 @@
<?php
echo("<h2>Willkommen ".$_SESSION['name']."</h2>");
echo("Dein Wichtel ist ".$_SESSION['wichtel']."<br/>");

21
Views/user/login.php Executable file
View File

@ -0,0 +1,21 @@
<?php
if (!isset($_SESSION['login'])){
$_SESSION['login']=False;
}
if (!$_SESSION['login']){
if (isset($_SESSION['feedback'])){echo($_SESSION['feedback']);}
?>
<h2>Login</h2>
<form action="/user/login" method="POST">
<p>Name: <input name="name" id="name"></p>
<p>Psw: <input type="password" name="psw" id="psw"></p>
<p> <input type="submit" name="login" value="OK"></p>
</form>
<form action="/user/register" method="POST">
<p> <input type="submit" value="register"></p>
</form>
<?php
}else{
echo("Willkommen, ");
var_dump($_SESSION);
}

1
Views/user/logout.php Executable file
View File

@ -0,0 +1 @@
<h2>Logout erfolgreich</h2>

17
Views/user/register.php Executable file
View File

@ -0,0 +1,17 @@
<?php
if(isset($_SESSION ['reg'])){?>
<h2>Registrierung erfolgreich</h2>
<a href="/user/login">zur Anmeldung</a>
<?php
}else{
?>
<h2>Registrieren</h2>
<form action="/user/register" method="POST">
<p>Name: <input name="name" id="name"></p>
<p>mail: <input name="mail" id="mail"></p>
<p>Psw: <input type="password" name="psw" id="psw"></p>
<p>Nochmal: <input type="password" name="psw2" id="psw2"></p>
<p> <input type="submit" name="regi" value="register"></p>
</form>
<?php
}

BIN
android-chrome-192x192.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
apple-touch-icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
assets/Me.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

180
assets/__style.css Executable file
View File

@ -0,0 +1,180 @@
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Regular.ttf') format('truetype'); }
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Bold.ttf') format('truetype');
font-weight: bold;
}
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Italic.ttf') format('truetype');
font-style: italic;
}
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-BoldItalic.ttf') format('truetype');
font-weight: bold;
font-style: italic;
}
body {
font-family: Lato;
scroll-behavior: smooth;
text-align:center;
}
span {font-family: Lato;}
.it {font-style: italic;}
.bo {font-weight: bold;}
* {
box-sizing: border-box;
}
img{
max-width: 100%;
}
/* Wrapper f<>r die gesammte Seite*/
#wrapper{
max-width: 800px;
margin: auto;
}
/* Style the header */
#header {
background-color: #f1f1f1;
position: -webkit-sticky;
position: sticky;
margin-top:10px;
margin-bottom: 10px;
}
/* leerzeile nach dem header*/
#header:after {
content: "";
display: table;
clear: both;
}
/*Header links*/
#title{
max-width:25%;
float:left;
background-color: #f1f1f1;
}
#titellogo{
width:30px;
}
/*Header links (Men<65>)*/
#menu {
background-color: #f1f1f1;
top:0px;
max-width:75%;
float:right;
}
/*Hauptmen<65>*/
ul#navigation {
margin: 0px;
padding: 0px;
list-style-type: none;
}
ul#navigation li {
padding: 0px;
margin: 0px;
display: inline;
}
ul#navigation li a:link {
border: 1px solid #000;
background-color: #CCCCCC;
padding: 2px 5px 2px 5px;
font-size: 12px;
color: #000;
text-decoration: none;
}
ul#navigation li a:hover {
border: 1px solid #000;
background-color: #333333;
padding: 2px 5px 2px 5px;
color: #fff;
}
/*Content wrapper*/
.content{
padding-top:75px;
}
/* Create three unequal columns that floats next to each other */
.column {
float: left;
padding: 10px;
}
/* Left and right column */
.column.side {
width: 25%;
}
/* Middle column */
.column.middle {
width: 50%;
}
/* Clear floats after the columns */
.row:after {
content: "";
display: table;
clear: both;
}
/* Footer*/
#foot{
background-color: #f1f1f1;
}
.foot {
background-color: #f1f1f1;
float: left;
padding: 10px;
}
.foot.lside{
text-align: left;
width: 33%;
}
.foot.middle{
text-align: center;
width: 33%;
}
.foot.rside{
text-align: right;
width: 33%;
}
/*Footermen<65>*/
ul#footmenu{
list-style-type: none;
}
ul#footmenu li{
}
ul#footmenu li a:link{
text:black;
}
ul#footmenu li a:hover{
}
/* Responsive layout - makes the three columns stack on top of each other instead of next to each other */
@media (max-width: 600px) {
.column.side, .column.middle {
width: 100%;
}
}

12
assets/config_default.php Executable file
View File

@ -0,0 +1,12 @@
<?php
// Define DB Params
define("DB_HOST", "62.108.32.171:3306");
define("DB_USER", "eexgt_klaas");
// Champion-Justness-Overcast5-Joylessly
define("DB_PASS", "Dimrb#73611912");
define("DB_NAME", "eexgtvrb_klaasboergmann");
// Define URL
define("ROOT_PATH", "/");
define("ROOT_URL", "http://orga.boergmann.it");

BIN
assets/font/Lato-Bold.ttf Executable file

Binary file not shown.

BIN
assets/font/Lato-BoldItalic.ttf Executable file

Binary file not shown.

BIN
assets/font/Lato-Italic.ttf Executable file

Binary file not shown.

BIN
assets/font/Lato-Regular.ttf Executable file

Binary file not shown.

17
assets/footer.php Executable file
View File

@ -0,0 +1,17 @@
<div class="row" style="width=50%">
<div class="foot lside">
<ul id="footmenu">
<li><a href="//klaasboergmann.de">Klaas Börgmann</a></li>
<li><a href="/Impressum">Impressum</a></li>
<li><a href="/Impressum/Datenschutz">Datenschutz</a></li>
</ul>
</div>
<div class="foot middle">
<p>&copy; 2023</p>
</div>
<div class="foot rside">
<p>admin[at]boergmann[dot]it</p>
</div>
</div>

30
assets/head.php Executable file
View File

@ -0,0 +1,30 @@
<?php
if($_GET['controller'] == ""){
$controller = 'Home';
} else {
$controller = $_GET['controller'];
}
if($_GET['action'] == ""){
$action = 'index';
}else {
$action = $_GET['action'];
}
if (isset($_SESSION['login']) && $_SESSION['login']==1){
$login="logout";
}else{
$login="login";
}
?>
<title>Klaas Börgmann - <?php echo($controller);?></title>
<base href="klaasboergmann.de" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="/assets/style.css">

1
assets/header.php Executable file
View File

@ -0,0 +1 @@
<h3>Klaas Börgmann</h3>

10872
assets/jquery-3.5.1.js vendored Executable file

File diff suppressed because it is too large Load Diff

3
assets/menu/druckmenu.php Executable file
View File

@ -0,0 +1,3 @@
<a href="/druck">Graphen</a>
<a href="/druck/table">Tabelle</a>
<a href="/druck/neu">Neu</a>

13
assets/menu/mainmenu.php Executable file
View File

@ -0,0 +1,13 @@
<ul id="navigation">
<li><a href="/home">Home<a></li>
<?php if($login=="logout"){
echo("<li><a href='/druck'>Druck<a></li>");
echo("<li><a href='/inv'>Inventory<a></li>");
echo("<li><a href='/todo'>To Do<a></li>");
echo("<li><a href='/billard'>Billard<a></li>");
echo("<li><a href='/uel'>ÜL-Funktionen<a></li>");
}?>
<li><a href="/user/<?php echo($login);?>"><?php echo($login);?><a></li>
<li><a href="https://ha01s001.org-dns.com:8443">Admin<a></li>
</ul>

5
assets/news.php Executable file
View File

@ -0,0 +1,5 @@
<h2>News</h2>
<div class="nachricht">
<h3>Testnachricht</h3>
<p>Die Welt geht unter. Machste nix.</p>
</div>

205
assets/style.css Executable file
View File

@ -0,0 +1,205 @@
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Regular.ttf') format('truetype'); }
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Bold.ttf') format('truetype');
font-weight: bold;
}
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-Italic.ttf') format('truetype');
font-style: italic;
}
@font-face { font-family: 'Lato';
src: url('/assets/font/Lato-BoldItalic.ttf') format('truetype');
font-weight: bold;
font-style: italic;
}
body {
font-family: Lato;
scroll-behavior: smooth;
text-align:left;
}
span {font-family: Lato;}
.it {font-style: italic;}
.bo {font-weight: bold;}
* {
box-sizing: border-box;
}
img{
max-width: 100%;
}
/* Wrapper f<>r die gesammte Seite*/
#wrapper{
max-width: 1200px;
margin: auto;
}
/* Style the header */
#header {
background-color: #f1f1f1;
position: -webkit-sticky;
position: sticky;
margin-top:10px;
margin-bottom: 10px;
}
/* leerzeile nach dem header*/
#header:after {
content: "";
display: table;
clear: both;
}
/*Header links*/
#title{
width:25%;
background-color: #f1f1f1;
float: left;
}
#titellogo{
width:30px;
}
/*Header links (Men<65>)*/
#menu {
background-color: #f1f1f1;
top:0px;
max-width:75%;
float:right;
}
/*Hauptmen<65>*/
ul#navigation {
margin: 0px;
padding: 0px;
list-style-type: none;
}
ul#navigation li {
padding: 1px;
margin: 1px;
display: inline;
}
ul#navigation li a:link {
border: 1px solid #000;
background-color: #CCCCCC;
padding: 2px 5px 2px 5px;
font-size: 12px;
color: #000;
text-decoration: none;
}
ul#navigation li a:hover {
border: 1px solid #000;
background-color: #333333;
padding: 2px 5px 2px 5px;
color: #fff;
}
/*Content wrapper*/
.content{
padding-top:75px;
}
/* Create three unequal columns that floats next to each other */
.column {
float: left;
padding: 10px;
}
/* Left and right column
.column.side {
width: 25%;
}
*/
/* Middle column */
.column.middle {
width: 50%;
}
/* Clear floats after the columns */
.row:after {
content: "";
display: table;
clear: both;
}
/* Footer*/
#foot{
background-color: #f1f1f1;
}
.foot {
background-color: #f1f1f1;
float: left;
padding: 10px;
}
.foot.lside{
text-align: left;
width: 45%;
}
.foot.middle{
text-align: center;
width: 10%;
}
.foot.rside{
text-align: right;
width: 45%;
}
/*Footermen<65>*/
ul#footmenu{
list-style-type: none;
}
ul#footmenu li{
}
ul#footmenu li a:link{
text:black;
}
ul#footmenu li a:hover{
}
/* Responsive layout - makes the three columns stack on top of each other instead of next to each other */
@media (max-width: 600px) {
.column.side, .column.middle {
width: 100%;
}
}
#impressum{
text-align:justify;
}
#weeks{
width:100%;
height:auto;
margin-left: 0px;
margin-top: 0px;
}
.week{
width:100%;
float:left;
height:auto;
padding-left: 10px;
padding-right: 10px;
margin-top: 10px;
}
/* Clear floats after the columns */
#weeks:after {
content: "";
display: table;
clear: both;
}

9
browserconfig.xml Executable file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

BIN
favicon-16x16.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
favicon-32x32.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
ico.zip Normal file

Binary file not shown.

54
index.php Executable file
View File

@ -0,0 +1,54 @@
<?php
// Start Session
session_start();
error_reporting(E_ALL);
// Include Config
require('assets/config.php');
require('Classes/Bootstrap.php');
require('Classes/Controller.php');
require('Classes/Model.php');
require('Controller/home.php');
require('Controller/impressum.php');
require('Controller/user.php');
require('Models/home.php');
require('Models/impressum.php');
require('Models/user.php');
$bootstrap = new Bootstrap($_GET);
$controller = $bootstrap->createController();
if($controller){
$controller->executeAction();
}
?>
<!--
KKKKKKKKK KKKKKKK LLLLLLLLLLL AAA AAA SSSSSSSSSSSSSSS
K:::::::K K:::::K L:::::::::L A:::A A:::A SS:::::::::::::::S
K:::::::K K:::::K L:::::::::L A:::::A A:::::A S:::::SSSSSS::::::S
K:::::::K K::::::K LL:::::::LL A:::::::A A:::::::A S:::::S SSSSSSS
KK::::::K K:::::KKK L:::::L A:::::::::A A:::::::::A S:::::S
K:::::K K:::::K L:::::L A:::::A:::::A A:::::A:::::A S:::::S
K::::::K:::::K L:::::L A:::::A A:::::A A:::::A A:::::A S::::SSSS
K:::::::::::K L:::::L A:::::A A:::::A A:::::A A:::::A SS::::::SSSSS
K:::::::::::K L:::::L A:::::A A:::::A A:::::A A:::::A SSS::::::::SS
K::::::K:::::K L:::::L A:::::AAAAAAAAA:::::A A:::::AAAAAAAAA:::::A SSSSSS::::S
K:::::K K:::::K L:::::L A:::::::::::::::::::::A A:::::::::::::::::::::A S:::::S
KK::::::K K:::::KKK L:::::L LLLLLL A:::::AAAAAAAAAAAAA:::::A A:::::AAAAAAAAAAAAA:::::A S:::::S
K:::::::K K::::::K LL:::::::LLLLLLLLL:::::L A:::::A A:::::A A:::::A A:::::A SSSSSSS S:::::S
K:::::::K K:::::K L::::::::::::::::::::::L A:::::A A:::::A A:::::A A:::::A S::::::SSSSSS:::::S
K:::::::K K:::::K L::::::::::::::::::::::L A:::::A A:::::A A:::::A A:::::A S:::::::::::::::SS
KKKKKKKKK KKKKKKK LLLLLLLLLLLLLLLLLLLLLLLL AAAAAAA AAAAAAA AAAAAAA AAAAAAA SSSSSSSSSSSSSSS
-->

BIN
media/_logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
media/logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
mstile-150x150.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

23
safari-pinned-tab.svg Executable file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="230.000000pt" height="230.000000pt" viewBox="0 0 230.000000 230.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,230.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M682 1389 l-212 -250 -2 243 -3 243 -60 0 -60 0 0 -475 0 -475 60 0
60 0 5 225 5 226 194 -228 194 -228 69 0 c38 0 68 4 66 9 -1 5 -90 111 -196
235 l-193 226 162 193 c89 105 171 202 182 214 22 25 17 38 -33 73 l-27 19
-211 -250z"/>
<path d="M1210 1151 l0 -481 158 0 c379 0 495 57 518 253 13 112 -43 215 -140
256 l-41 18 31 16 c75 39 112 130 94 227 -12 64 -21 80 -64 118 -59 52 -116
63 -348 69 l-208 6 0 -482z m404 368 c22 -6 52 -24 68 -39 24 -25 28 -36 28
-85 0 -71 -20 -109 -71 -136 -35 -17 -61 -21 -173 -22 l-131 -2 -3 148 -3 147
123 0 c68 0 141 -5 162 -11z m56 -409 c105 -59 128 -185 49 -274 -45 -52 -100
-66 -256 -66 l-133 0 0 186 0 186 148 -4 c135 -3 151 -5 192 -28z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

14
site.webmanifest Executable file
View File

@ -0,0 +1,14 @@
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}