This commit is contained in:
S170H
2023-12-17 22:17:05 +01:00
parent 67a26f6684
commit 99d78584ec
120 changed files with 9988 additions and 5 deletions

View File

@@ -0,0 +1,31 @@
@extends("layouts.main_layout", ['title' => "E-Mensa"])
@section("header")
<link rel="stylesheet" href="/css/style.css">
@endsection
@section("nav")
<div class="grid">
<div>
<img src="/img/fh-logo.jpg" alt="FH-Logo">
</div>
<div>
<a href="#ankündigung">Ankündigung</a>
<a href="#speisen">Speisen</a>
<a href="#zahlen">Zahlen</a>
<a href="#kontakt">Kontakt</a>
<a href="#wichtig">Wichtig für uns</a>
</div>
</div>
@endsection
@section("footer")
<tr>
<td>(c) E-Mensa GmbH</td>
<td>Şafak Hazinedar & Robert Joel</td>
<td><a href="">Impressum</a></td>
</tr>
@endsection

View File

@@ -0,0 +1,6 @@
<h1>This is a blade view showing phpinfo();</h1>
<p><a href="/">go back</a>.</p>
@php
phpinfo();
@endphp

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Beispiel: Daten aus der Datenbank</title>
</head>
<body>
@if (isset($data['error']))
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> {{$data['beschreibung']}}</pre>
@else
<article>
<h1>Daten aus der Datenbank der Tabelle: Gerichte</h1>
<p>Der Controller inkludiert das benötigte Model (gerichte.php in diesem Fall)
und ruft die benötigte Funktion <code>db_gerichte_select_all()</code> zum Laden der Daten auf</p>
<ul>
@forelse($data as $a)
<li>{{$a['name']}}</li>
@empty
<li>Keine Daten vorhanden.</li>
@endforelse
</ul>
</article>
@endif
</body>
</html>

View File

@@ -0,0 +1,92 @@
@extends(".layouts.layout")
@section("content")
<div>
<h1>Demo für {{ $name }}</h1>
<p>Kurze Übersicht, wie die Arbeit mit dem Router und der Blade View-Engine funktioniert.</p>
<h2>Router</h2>
<p>Der Router nimmt den Request entgegen und zerlegt ihn in die einzelnen Teile der URI. Wichtig ist hier vor
allem der Pfad und der Querystring.</p>
<p>Wenn der Pfad in der Routenkonfiguration (<code>\$config</code> Array aus der Datei
<code>routes/web.php</code>) gefunden wird, lädt der Router die angegebene Klasse.</p>
<h3>Funktionsweise</h3>
<p>Im vorliegenden Beispiel sehen Sie diese Seite ... </p>
<ol>
<li>weil der Pfad in der Routenkonfiguration gefunden wurde</li>
<li>und dort <span class="code">'DemoController@howto'</span> hinterlegt ist</li>
<li>und im Ordner <span class="code">controllers/</span> die Datei <code class="language-php">DemoController.php</code> gefunden werden konnte
</li>
<li>und mit ihr ein Objekt des Typs <span class="code">DemoController</span> instanziiert werden konnte</li>
<li>und dieses Objekt die Funktion (Action) <span class="code">howto()</span> ausgeführt hat</li>
</ol>
<p>Sie sehen: da muss einiges stimmen und vieles davon ist Konvention.</p>
<h3>Querystrings und Pfadsegmente</h3>
<p>Die Actions in den Controller-Klassen sollen per Konvention immer ein <span class="code">RequestData</span> Objekt
entgegennehmen. Beispiel: <code class="language-php">howto(RequestData \$rd)</code></p>
<p>Dieses RequestData Objekt wird durch den Router befüllt, wenn Daten in der URL extrahiert werden konnten.</p>
<p>Daten finden sich URLs...</p>
<ul>
<li>
<p>
<strong>im Querystring</strong><br>Beispiel: rufen Sie diese mit
<code class="language-http">{{strtolower(explode('/',$_SERVER["SERVER_PROTOCOL"])[0])}}://{{$_SERVER["HTTP_HOST"]}}/demo?<strong>bgcolor=fefbd8&name=Remmy</strong></code>
auf, werden <span class="language-php">bgcolor</span> und <code class="language-php">name</code> mitsamt Werten als Query Array
<code class="language-php">$rd->query</code>) übergeben
</p>
</li>
</ul>
<p>Probieren Sie es aus ;)</p>
@if(count($rd->args))
<p><strong>Argumente dieses Aufrufs:</strong></p>
@forelse($rd->args as $a)
<div><span class="code">{{$a}}</span></div>
@empty
<p>Keine weiteren Argumente im Request</p>
@endforelse
@endif
@if(count($rd->query))
<p><strong>Daten aus der Query dieses Aufrufs:</strong></p>
<pre><code class="language-php">
@forelse($rd->query as $k => $v)
$rd->query['{{$k}}']={{$v}}
@empty
<p>Keine Querydaten</p>
@endforelse
</code></pre>
@endif
<h2>Blade</h2>
<p>Blade <a href="https://github.com/EFTEC/BladeOne#install-pick-one-of-the-next-one">muss installiert</a> sein.
Die Installation ist bereits geschehen und die Bibliothek liegt unter /vendor.
</p>
<h3>Daten übergeben und View rendern</h3>
<p>Bei der Verwendung der View-Engine gelten einige Konventionen:
Die Dateien müssen <code class="language-php">&lt;viewname&gt;.blade.php</code> heißen und im Ordner <code class="language-php">views</code> liegen.
</p>
<p>Sie können der View dann Daten mitgeben, indem Sie alle Daten in ein Array schreiben und dieses dann
übergeben.</p>
<p>Beispiel:</p>
<pre><code class="language-php">
view("viewtest",
array(
"texts"=>$textArray,
"persona"=>$persona,
"rd"=>$rd
)); // öffnet ../views/viewtest.blade.php
</code></pre>
</div>
@endsection
@section("cssextra")
<style>
body > div {background-color: {{ '#' . $bgcolor }}; }
</style>
@endsection
@section("jsextra")
<script src="/js/highlight.min.js"></script><script>hljs.highlightAll();</script>
@endsection

View File

@@ -0,0 +1,24 @@
<h1>RequestData</h1>
@if(count($rd->getData()))
<p>combined request data</p>
<pre>
{{print_r($rd->getData(),1)}}
</pre>
@else
<p>this request contained zero parameters</p>
@endif
@if(count($rd->getGetData()))
<p><code>GET</code> request data</p>
<pre>
{{print_r($rd->getGetData(),1)}}
</pre>
@endif
@if(count($rd->getPostData()))
<p><code>POST</code> request data</p>
<pre>
{{print_r($rd->getPostData(),1)}}
</pre>
@endif

View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>7a</title>
</head>
<body>
Der Wert von name lautet: {{$request}}
</body>
</html>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Beispiel: Daten aus der Datenbank</title>
<style>
h1 {
font-weight: 300;
}
</style>
</head>
<body>
@if (isset($data['error']))
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> {{$data['beschreibung']}}</pre>
@else
<?php
$zweites = false; ?>
<article>
<h1>Daten aus der Datenbank der Tabelle: Kategorien</h1>
<ul>
@forelse($data as $a)
@if($zweites) <h1><li>{{$a['name']}}</li></h1> <?php $zweites = false; ?>
@else
<li>{{$a['name']}}</li> <?php $zweites = true; ?>
@endif
@empty
<li>Keine Daten vorhanden.</li>
@endforelse
</ul>
</article>
@endif
</body>
</html>

View File

@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Beispiel: Daten aus der Datenbank</title>
</head>
<body>
@if (isset($data['error']))
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> {{$data['beschreibung']}}</pre>
@else
<article>
<h1>Daten aus der Datenbank der Tabelle: Kategorien</h1>
<ul>
@forelse($data as $a)
@if(!empty($a['name']))
<li>{{$a['name']}}</li>
@endif
@empty
<li>Es sind keine Gerichte vorhanden</li>
@endforelse
</ul>
</article>
@endif
</body>
</html>

View File

@@ -0,0 +1,13 @@
@extends(".layouts.m4_7d_layout",['title' => "Page 1"])
@section("header")
@endsection
@section("body")
<p>Page 1</p>
@endsection
@section("footer")
<p>Footer of Page 1</p>
@endsection

View File

@@ -0,0 +1,13 @@
@extends(".layouts.m4_7d_layout",['title' => "Page 2"])
@section("header")
@endsection
@section("body")
<p>Page 2</p>
@endsection
@section("footer")
<p>Footer of Page 2</p>
@endsection

View File

@@ -0,0 +1,34 @@
@extends("layouts.layout")
@section("content")
<header class="mt-5">
<h1>Hauptseite E-Mensa</h1>
<img src="/img/test.jpg"
alt="Testbild von https://cdn.pixabay.com/photo/2014/06/03/19/38/road-sign-361513_960_720.jpg">
</header>
<nav class="mt-5">
<strong>Navigation</strong>
<ul>
<li><a href="/demo">Demo</a></li>
<li><a href="/dbconnect">Datenbank: Gerichte</a></li>
</ul>
<ul>
<li><a href="/debug"><code class="language-php">phpinfo();</code></a></li>
</ul>
</nav>
<footer>
&copy; Team-Name DBWT
</footer>
@endsection
@section("cssextra")
<style>
body > div {
background-color: {{$rd->query['bgcolor'] ?? 'ffffff'}}
}
</style>
@endsection
@section("jsextra")
<script src="/js/highlight.min.js"></script><script>hljs.highlightAll();</script>
@endsection

View File

@@ -0,0 +1,23 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title>E-Mensa Routing Script</title>
<meta name="description" content="unused">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/default.min.css">
@yield("cssextra")
<meta name="theme-color" content="#dadada">
<!-- good developers check the markup ;) -->
</head>
<body>
<div class="container">
<div class="row">
@yield("content")
</div>
</div>
@yield("jsextra")
</body>
</html>

View File

@@ -0,0 +1,21 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title>{{ $title }}</title>
@yield("header")
<!-- good developers check the markup ;) -->
</head>
<body>
@yield("body")
<footer>
<table class="fusszeile">
@yield("footer")
</table>
</footer>
</body>
</html>

View File

@@ -0,0 +1,30 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title>{{ $title }}</title>
@yield("header")
<!-- good developers check the markup ;) -->
</head>
<body>
@yield("nav")
<hr>
<div class="grid">
<div></div>
<div>
@yield("text")
@yield("gerichte")
</div>
<div></div>
</div>
<footer>
<table class="fusszeile">
@yield("footer")
</table>
</footer>
</body>
</html>

View File

@@ -0,0 +1,11 @@
@extends("m5_a1.layout_anmeldung")
@section("main")
@if(!isset($_SESSION['name']))
<meta http-equiv="refresh" content="0;url=/werbeseite" />
@endif
@endsection

View File

@@ -0,0 +1,23 @@
@extends("m5_a1.layout_anmeldung")
@section("main")
<form action="/anmeldung_verifizieren" method="post">
<label for="email">E-Mail</label>
<input id="email" name="email" type="email" placeholder="email" required maxlength="100">
<label for="passwort">Passwort</label>
<input id="passwort" name="passwort" type="password" placeholder="passwort" required maxlength="200">
<button type="submit" >Anmelden</button>
</form>
@if(!isset($anmeldung)) Bitte anmelden!
@elseif ($anmeldung == 1)
{{ session_start() }}
Anmeldung erlaubt!
@else Anmeldung nicht erlaubt!
@endif
@endsection

View File

@@ -0,0 +1,50 @@
@extends("m5_a1.layout_anmeldung")
@section("main")
@if($anmeldung == 1)
<meta http-equiv="refresh" content="/main"/>
<form id="form_ok" action="/main"></form>
<script type="text/javascript">
function formAutoSubmit() {
var frm = document.getElementById("form_ok");
frm.submit();
}
window.onload = formAutoSubmit;
</script>
@else
<form method="post" id="auto_form" action="/anmeldung_nichtkorrekt">
<input type="hidden" name="email" value={{ $email}}>
<input type="hidden" name="passwort" value={{$passwort}}>
<input type="hidden" name="anmeldung" value={{$anmeldung }}>
</form>
<script type="text/javascript">
function formAutoSubmit() {
var frm = document.getElementById("auto_form");
frm.submit();
}
window.onload = formAutoSubmit;
</script>
@endif
<img src="https://upload.wikimedia.org/wikipedia/commons/b/b1/Loading_icon.gif?20151024034921" alt="loading">
<br>
Bitte warten!
@endsection

View File

@@ -0,0 +1,21 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title>Layout-m5-a1</title>
</head>
<body>
<header class="header_7d">
@yield("header")
</header>
<main class="main">
@yield("main")
</main>
<footer class="footer">
@yield("footer")
</footer>
</body>
</html>

View File

@@ -0,0 +1,61 @@
@extends("layouts.main_layout", ['title' => "E-Mensa"])
@section("header")
<link rel="stylesheet" href="/css/style.css">
@endsection
@section("nav")
<div class="grid">
<div>
<img src="/img/fh-logo.jpg" alt="FH-Logo">
</div>
<div>
<a href="#ankündigung">Ankündigung</a>
<a href="#speisen">Speisen</a>
<a href="#zahlen">Zahlen</a>
<a href="#kontakt">Kontakt</a>
<a href="#wichtig">Wichtig für uns</a>
</div>
</div>
@endsection
@section("text")
<img src="/img/mensa21.jpg" alt="Essen">
<h1 id="ankündigung">Bald gibt es auch Essen online ;)</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<h1 id="speisen">Köstlichkeiten die Sie erwarten</h1>
@endsection
@section("gerichte")
@if (isset($data['error']))
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> {{$data['beschreibung']}}</pre>
@else
<?php
echo $data["gericht"];
echo $data["allergene"];
?>
@endif
@endsection
@section("footer")
<tr>
<td>(c) E-Mensa GmbH</td>
<td>Şafak Hazinedar & Robert Joel</td>
<td><a href="">Impressum</a></td>
</tr>
@endsection

View File

@@ -0,0 +1,7 @@
@extends("layouts.layout")
@section("content")
<h1>Nicht implementiert</h1>
<p>Sie haben eine <abbr title="Pfad: {{$url}}">Action</abbr> aufgerufen, die zu dieser <abbr title="views/notimplemented.blade.php">View</abbr> führt.</p>
<p>Vervollständigen Sie die Action, sodass die Aufgabe erfüllt wird.</p>
@endsection