forked from structix/shit-show
Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
f79b2ec8a9 | |||
16a5c49e1d | |||
2d23f5da59 | |||
34d44011bd | |||
6a7e7d553f | |||
5a5a6740c6 | |||
a3a8dfcf51 | |||
33203f7f10 | |||
1343fdc19f | |||
ca777b18e8 | |||
3b61a5d7a8 | |||
7629e8bfce | |||
0ff2eeb12d | |||
ea545ed104 | |||
65b65e9a74 | |||
c5fdac0c97 | |||
435d06cca5 | |||
5408e25c90 | |||
dde03b1945 | |||
9cff1f494d | |||
68b5e5030d | |||
e881c73911 | |||
f49409398a | |||
73933d56b4 | |||
010bd74b7b |
@@ -13,3 +13,5 @@ storage/framework/testing/*
|
||||
storage/framework/views/*
|
||||
storage/logs/*
|
||||
vendor/
|
||||
|
||||
mariadb-data
|
||||
|
1
shit-show/.gitignore
vendored
1
shit-show/.gitignore
vendored
@@ -13,3 +13,4 @@ npm-debug.log
|
||||
yarn-error.log
|
||||
/.idea
|
||||
/.vscode
|
||||
mariadb-data
|
||||
|
@@ -3,12 +3,67 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\ShitUser;
|
||||
use App\Models\User;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
|
||||
class ShitController extends Controller
|
||||
{
|
||||
|
||||
public function increment() {
|
||||
|
||||
|
||||
public function dashboard() {
|
||||
|
||||
$allshits = ShitUser::where('user_id', Auth::user()->id)->orderByDesc('created_at')->take(100)->get();
|
||||
$buttonRand = collect(['Plop!', 'Pflomp!', 'Zwusch!', 'Blomp!'])->random();
|
||||
return view('dashboard')->with([
|
||||
'allshits' => $allshits,
|
||||
'buttonRand' => $buttonRand,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
public function increment(Request $request) {
|
||||
$shituser = new ShitUser();
|
||||
|
||||
$shituser->user_id = Auth::user()->id;
|
||||
$shituser->description = $request->description;
|
||||
$shituser->goldenshit = $request->goldenshit == "on";
|
||||
|
||||
// Get the latest shit event and check if it is over a time threshold
|
||||
$lastshit = ShitUser::where('user_id', $shituser->user_id)->orderByDesc('created_at')->first();
|
||||
|
||||
$timethreshold = Carbon::now()->subMinutes(10);
|
||||
if (is_null($lastshit) || $lastshit->created_at->lessThan($timethreshold)) {
|
||||
$shituser->save();
|
||||
return redirect('/ownstats');
|
||||
} else {
|
||||
return redirect('/dashboard');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function ownStats() {
|
||||
|
||||
$shits = ShitUser::where('user_id', Auth::user()->id)->get();
|
||||
$amountshits = $shits->count();
|
||||
$goldenshits = $shits->where('goldenshit', true)->count();
|
||||
|
||||
return view('ownstats')->with([
|
||||
'amountshits' => $amountshits,
|
||||
'goldenshits' => $goldenshits,
|
||||
]);
|
||||
}
|
||||
|
||||
public function highscores() {
|
||||
|
||||
$allshits = ShitUser::whereMonth('created_at', Carbon::now()->month)->groupBy('user_id')->select('user_id', DB::raw('count(*) as total'))->orderByDesc('total')->get();
|
||||
$users = User::all()->sortBy('name');
|
||||
|
||||
return view('highscores')->with([
|
||||
'allshits' => $allshits,
|
||||
'users' => $users,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -23,6 +24,8 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
if(env('APP_ENV') !== 'local') {
|
||||
URL::forceScheme('https');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -31,7 +31,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'lifetime' => env('SESSION_LIFETIME', 120),
|
||||
'lifetime' => env('SESSION_LIFETIME', 525600),
|
||||
|
||||
'expire_on_close' => false,
|
||||
|
||||
|
@@ -13,13 +13,15 @@ class ShitUser extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('shituser', function (Blueprint $table) {
|
||||
Schema::create('shit_users', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->integer('user_id')->unsigned();
|
||||
$table->unsignedBigInteger('user_id');
|
||||
$table->index('user_id');
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
|
||||
$table->string('description');
|
||||
|
||||
$table->string('description')->nullable();
|
||||
$table->boolean('goldenshit');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
|
13
shit-show/docker-compose-dev.yml
Normal file
13
shit-show/docker-compose-dev.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: '3.3'
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb
|
||||
ports:
|
||||
- 3306:3306
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: example
|
||||
MYSQL_DATABASE: laravel
|
||||
MYSQL_USER: web
|
||||
MYSQL_PASSWORD: example
|
||||
volumes:
|
||||
- ./mariadb-data:/var/lib/mysql
|
@@ -1,10 +1,44 @@
|
||||
version: '3.3'
|
||||
services:
|
||||
laravel:
|
||||
ports:
|
||||
- '8000:80'
|
||||
environment:
|
||||
- APP_ENV=local
|
||||
- DB_CONNECTION=sqlite
|
||||
- 'APP_KEY=base64:L+3avOYCfuq8nnDpHs74+5Et3sx27TssucHQIyqfpDY='
|
||||
- DB_CONNECTION=mysql
|
||||
- DB_HOST=mariadb
|
||||
- DB_PORT=3306
|
||||
- DB_DATABASE=laravel
|
||||
- DB_USERNAME=web
|
||||
- DB_PASSWORD=example
|
||||
- APP_URL=https://bibelfreaks.de
|
||||
build: .
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# https
|
||||
- "traefik.http.routers.shitshow_https.rule=Host(`bibelfreaks.de`)"
|
||||
- "traefik.http.routers.shitshow_https.entrypoints=websecure"
|
||||
- "traefik.http.routers.shitshow_https.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.shitshow_https.loadbalancer.server.port=80"
|
||||
networks:
|
||||
- traefik
|
||||
- shared-database
|
||||
|
||||
|
||||
mariadb:
|
||||
image: mariadb
|
||||
restart: always
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: example
|
||||
MYSQL_DATABASE: laravel
|
||||
MYSQL_USER: web
|
||||
MYSQL_PASSWORD: example
|
||||
volumes:
|
||||
- ./mariadb-data:/var/lib/mysql
|
||||
networks:
|
||||
- shared-database
|
||||
|
||||
networks:
|
||||
shared-database:
|
||||
traefik:
|
||||
external:
|
||||
name: traefik
|
||||
|
16867
shit-show/package-lock.json
generated
Normal file
16867
shit-show/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
188579
shit-show/public/css/app.css
vendored
Normal file
188579
shit-show/public/css/app.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 2.2 KiB |
21654
shit-show/public/js/app.js
vendored
Normal file
21654
shit-show/public/js/app.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
shit-show/public/mix-manifest.json
Normal file
4
shit-show/public/mix-manifest.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"/js/app.js": "/js/app.js",
|
||||
"/css/app.css": "/css/app.css"
|
||||
}
|
@@ -12,26 +12,32 @@
|
||||
<!-- Validation Errors -->
|
||||
<x-auth-validation-errors class="mb-4" :errors="$errors" />
|
||||
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
|
||||
<!-- Email Address -->
|
||||
<div>
|
||||
<x-label for="email" :value="__('Email')" />
|
||||
<div class="form-floating">
|
||||
<!--<x-label for="email" :value="__('Email')" />-->
|
||||
|
||||
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
|
||||
<input id="email" class="form-control" type="email" name="email" placeholder="Email" :value="old('email')" required autofocus>
|
||||
<label for="email">Email address</label>
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="mt-4">
|
||||
<x-label for="password" :value="__('Password')" />
|
||||
<div class="form-floating">
|
||||
|
||||
<x-input id="password" class="block mt-1 w-full"
|
||||
<x-input id="password" class="form-control"
|
||||
type="password"
|
||||
name="password"
|
||||
placeholder="Password"
|
||||
required autocomplete="current-password" />
|
||||
<label for="password" :value="__('Password')" />Password</label>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Remember Me -->
|
||||
<div class="block mt-4">
|
||||
<label for="remember_me" class="inline-flex items-center">
|
||||
@@ -47,10 +53,15 @@
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<x-button class="ml-3">
|
||||
<x-button class="w-100 btn btn-lg btn-primary">
|
||||
{{ __('Log in') }}
|
||||
</x-button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<main class="form-signin">
|
||||
|
||||
</x-auth-card>
|
||||
</x-guest-layout>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
||||
|
@@ -13,36 +13,35 @@
|
||||
@csrf
|
||||
|
||||
<!-- Name -->
|
||||
<div>
|
||||
<div class="form-floating">
|
||||
<x-input id="name" class="form-control" type="text" name="name" :value="old('name')" placeholder="Name" required autofocus />
|
||||
<x-label for="name" :value="__('Name')" />
|
||||
|
||||
<x-input id="name" class="block mt-1 w-full" type="text" name="name" :value="old('name')" required autofocus />
|
||||
</div>
|
||||
|
||||
<!-- Email Address -->
|
||||
<div class="mt-4">
|
||||
<div class="form-floating">
|
||||
<x-input id="email" class="form-control" type="email" name="email" :value="old('email')" placeholder="Email" required />
|
||||
<x-label for="email" :value="__('Email')" />
|
||||
|
||||
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required />
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="mt-4">
|
||||
<x-label for="password" :value="__('Password')" />
|
||||
|
||||
<x-input id="password" class="block mt-1 w-full"
|
||||
<div class="form-floating">
|
||||
<x-input id="password" class="form-control"
|
||||
type="password"
|
||||
name="password"
|
||||
placeholder="Password"
|
||||
required autocomplete="new-password" />
|
||||
<x-label for="password" :value="__('Password')" />
|
||||
</div>
|
||||
|
||||
<!-- Confirm Password -->
|
||||
<div class="mt-4">
|
||||
<x-label for="password_confirmation" :value="__('Confirm Password')" />
|
||||
|
||||
<x-input id="password_confirmation" class="block mt-1 w-full"
|
||||
<div class="form-floating">
|
||||
<x-input id="password_confirmation" class="form-control"
|
||||
type="password"
|
||||
name="password_confirmation" required />
|
||||
name="password_confirmation"
|
||||
placeholder="Confirm Password"
|
||||
required />
|
||||
<x-label for="password_confirmation" :value="__('Confirm Password')" />
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
@@ -50,7 +49,7 @@
|
||||
{{ __('Already registered?') }}
|
||||
</a>
|
||||
|
||||
<x-button class="ml-4">
|
||||
<x-button class="w-100 btn btn-lg btn-primary">
|
||||
{{ __('Register') }}
|
||||
</x-button>
|
||||
</div>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100">
|
||||
<div>
|
||||
{{ $logo }}
|
||||
{{-- $logo --}}
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rounded-lg">
|
||||
|
22
shit-show/resources/views/credits.blade.php
Normal file
22
shit-show/resources/views/credits.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<x-guest-layout>
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>-->
|
||||
|
||||
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="h-100 p-5 bg-light border rounded-3">
|
||||
<h2>Danksagung</h2>
|
||||
<p>Einen riesen Dank für Ideen und Anregungen geht an die Rüsselbande.</p>
|
||||
</div>
|
||||
<br>
|
||||
<div class="h-100 p-5 bg-light border rounded-3">
|
||||
<h2>Sourcecode:</h2>
|
||||
<p>Link zum <a href="https://git.schoffit.net/structix/shit-show">Git-Repository</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</x-guest-layout>
|
@@ -1,17 +1,52 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{ __('Dashboard') }}
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>
|
||||
</x-slot>-->
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
|
||||
<div class="p-6 bg-white border-b border-gray-200">
|
||||
You're logged in!
|
||||
</div>
|
||||
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="container-fluid py-5">
|
||||
<h1 class="display-5 fw-bold">Stuhlgang hinzufügen</h1>
|
||||
<p class="col-md-8 fs-4">Mit einem Knopfdruck wird ein weiterer Stuhlgang hinzugefügt. Sie dürfen im folgenden Textfeld gerne noch Details in schriftlicher Form beisteuern.</p>
|
||||
<form action="/increment" method="post">
|
||||
@csrf
|
||||
<div class="col-sm-6">
|
||||
<label for="description" class="form-label">Beschreibung</label>
|
||||
<input type="text" class="form-control" id="description" name="description" placeholder="Beschreibungstext hier einfügen..." value="">
|
||||
<div class="invalid-feedback">
|
||||
Ungültige Beschreibung.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="goldenshit" name="goldenshit">
|
||||
<label class="form-check-label" for="goldenshit">Mein Stuhlgang war ein goldener Schiss.</label>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-lg">{{ $buttonRand }}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Zeit</th>
|
||||
<th scope="col">Beschreibung</th>
|
||||
<th scope="col">Goldener Schiss</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($allshits as $shit)
|
||||
<tr>
|
||||
<th scope="row">{{ $shit->created_at }}</th>
|
||||
<td>{{ $shit->description }} </td>
|
||||
<td>{{ $shit->goldenshit ? "Ja" : "Nein" }} </td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</x-app-layout>
|
||||
|
22
shit-show/resources/views/faq.blade.php
Normal file
22
shit-show/resources/views/faq.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<x-guest-layout>
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>-->
|
||||
|
||||
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="h-100 p-5 bg-light border rounded-3">
|
||||
<h2>Frage: Was ist ein goldener Schiss?</h2>
|
||||
<p>Ein goldener Schiss ist auch unter Phantom-Schiss bekannt. Drei goldene Schisse hintereinander ergeben einen Platin-Schiss.</p>
|
||||
</div>
|
||||
<br>
|
||||
<div class="h-100 p-5 bg-light border rounded-3">
|
||||
<h2>Frage: Mein Schiss wird nicht gewertet, was kann ich tun?</h2>
|
||||
<p>Um Flüchtigkeitsfehler vorzubeugen, kann ein weiterer Schiss erst nach 10 Minuten eingetragen werden. Bei akutem Durchfall muss dann leider auf eine Strichliste zurück gegriffen werden.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</x-guest-layout>
|
28
shit-show/resources/views/highscores.blade.php
Normal file
28
shit-show/resources/views/highscores.blade.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<x-app-layout>
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>-->
|
||||
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Person</th>
|
||||
<th scope="col">Anzahl Stuhlgänge</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($allshits as $shit)
|
||||
<tr>
|
||||
<th scope="row">{{ $users->where('id', $shit->user_id)->first()->name }}</th>
|
||||
<td>{{ $shit->total }} </td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
</x-app-layout>
|
@@ -11,14 +11,18 @@
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
|
||||
|
||||
<!-- Styles -->
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<!--<link rel="stylesheet" href="{{ asset('css/app.css') }}">-->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
<!--<script src="{{ asset('js/app.js') }}" defer></script>-->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
||||
|
||||
|
||||
<link rel="icon" href="{{ url('favicon.ico') }}">
|
||||
</head>
|
||||
<body class="font-sans antialiased">
|
||||
<div class="min-h-screen bg-gray-100">
|
||||
@include('layouts.navigation')
|
||||
@include('layouts.navigation-app')
|
||||
|
||||
<!-- Page Heading -->
|
||||
<header class="bg-white shadow">
|
||||
@@ -32,5 +36,6 @@
|
||||
{{ $slot }}
|
||||
</main>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -11,14 +11,20 @@
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
|
||||
|
||||
<!-- Styles -->
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<!--<link rel="stylesheet" href="{{ asset('css/app.css') }}">-->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
<!--<script src="{{ asset('js/app.js') }}" defer></script>-->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
||||
|
||||
|
||||
<link rel="icon" href="{{ url('favicon.ico') }}">
|
||||
</head>
|
||||
<body>
|
||||
@include('layouts.navigation')
|
||||
<div class="font-sans text-gray-900 antialiased">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
24
shit-show/resources/views/layouts/navigation-app.blade.php
Normal file
24
shit-show/resources/views/layouts/navigation-app.blade.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<header class="p-3 bg-dark text-white">
|
||||
<div class="container">
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
|
||||
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
|
||||
<svg class="bi me-2" width="40" height="32" role="img" aria-label="Bootstrap"><use xlink:href="#bootstrap"/></svg>
|
||||
</a>
|
||||
|
||||
<ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
|
||||
<li><a href="/dashboard" class="nav-link px-2 text-white">Dashboard</a></li>
|
||||
<li><a href="/ownstats" class="nav-link px-2 text-white">Eigene Statistik</a></li>
|
||||
<li><a href="/highscores" class="nav-link px-2 text-white">Highscores</a></li>
|
||||
<li><a href="/prices" class="nav-link px-2 text-white">Preise</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="text-end">
|
||||
<form action="/logout" method="post">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-danger">Abmelden</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
@@ -1,92 +1,25 @@
|
||||
<nav x-data="{ open: false }" class="bg-white border-b border-gray-100">
|
||||
<!-- Primary Navigation Menu -->
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between h-16">
|
||||
<div class="flex">
|
||||
<!-- Logo -->
|
||||
<div class="flex-shrink-0 flex items-center">
|
||||
<a href="{{ route('dashboard') }}">
|
||||
<x-application-logo class="block h-10 w-auto fill-current text-gray-600" />
|
||||
</a>
|
||||
</div>
|
||||
<header class="p-3 bg-dark text-white">
|
||||
<div class="container">
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
|
||||
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
|
||||
<svg class="bi me-2" width="40" height="32" role="img" aria-label="Bootstrap"><use xlink:href="#bootstrap"/></svg>
|
||||
</a>
|
||||
|
||||
<!-- Navigation Links -->
|
||||
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
|
||||
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
||||
{{ __('Dashboard') }}
|
||||
</x-nav-link>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
|
||||
<li><a href="/" class="nav-link px-2 text-white">Shit-Show</a></li>
|
||||
<li><a href="/faq" class="nav-link px-2 text-white">FAQ</a></li>
|
||||
<li><a href="/credits" class="nav-link px-2 text-white">Credits</a></li>
|
||||
</ul>
|
||||
|
||||
<!-- Settings Dropdown -->
|
||||
<div class="hidden sm:flex sm:items-center sm:ml-6">
|
||||
<x-dropdown align="right" width="48">
|
||||
<x-slot name="trigger">
|
||||
<button class="flex items-center text-sm font-medium text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out">
|
||||
<div>{{ Auth::user()->name }}</div>
|
||||
|
||||
<div class="ml-1">
|
||||
<svg class="fill-current h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="content">
|
||||
<!-- Authentication -->
|
||||
<form method="POST" action="{{ route('logout') }}">
|
||||
@csrf
|
||||
|
||||
<x-dropdown-link :href="route('logout')"
|
||||
onclick="event.preventDefault();
|
||||
this.closest('form').submit();">
|
||||
{{ __('Log Out') }}
|
||||
</x-dropdown-link>
|
||||
</form>
|
||||
</x-slot>
|
||||
</x-dropdown>
|
||||
</div>
|
||||
|
||||
<!-- Hamburger -->
|
||||
<div class="-mr-2 flex items-center sm:hidden">
|
||||
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out">
|
||||
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
|
||||
<path :class="{'hidden': open, 'inline-flex': ! open }" class="inline-flex" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||
<path :class="{'hidden': ! open, 'inline-flex': open }" class="hidden" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="text-end">
|
||||
@auth
|
||||
<a href="/dashboard"><button type="button" class="btn btn-outline-light me-2">Dashboard anzeigen</button></a>
|
||||
@else
|
||||
<a href="/login"><button type="button" class="btn btn-outline-light me-2">Login</button></a>
|
||||
<a href="/register"><button type="button" class="btn btn-warning">Registrieren</button></a>
|
||||
@endauth
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Responsive Navigation Menu -->
|
||||
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
|
||||
<div class="pt-2 pb-3 space-y-1">
|
||||
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
||||
{{ __('Dashboard') }}
|
||||
</x-responsive-nav-link>
|
||||
</div>
|
||||
|
||||
<!-- Responsive Settings Options -->
|
||||
<div class="pt-4 pb-1 border-t border-gray-200">
|
||||
<div class="px-4">
|
||||
<div class="font-medium text-base text-gray-800">{{ Auth::user()->name }}</div>
|
||||
<div class="font-medium text-sm text-gray-500">{{ Auth::user()->email }}</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 space-y-1">
|
||||
<!-- Authentication -->
|
||||
<form method="POST" action="{{ route('logout') }}">
|
||||
@csrf
|
||||
|
||||
<x-responsive-nav-link :href="route('logout')"
|
||||
onclick="event.preventDefault();
|
||||
this.closest('form').submit();">
|
||||
{{ __('Log Out') }}
|
||||
</x-responsive-nav-link>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
18
shit-show/resources/views/ownstats.blade.php
Normal file
18
shit-show/resources/views/ownstats.blade.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<x-app-layout>
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>-->
|
||||
|
||||
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="container-fluid py-5">
|
||||
<h1 class="display-5 fw-bold">Ihre Stuhlgänge</h1>
|
||||
<p class="col-md-8 fs-4">Sie haben ingesamt {{ $amountshits }} Stuhlgänge erreicht, davon sind {{ $goldenshits }} goldene Stuhlgänge.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</x-app-layout>
|
17
shit-show/resources/views/prices.blade.php
Normal file
17
shit-show/resources/views/prices.blade.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<x-app-layout>
|
||||
<!--<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{-- __('Dashboard') --}}
|
||||
</h2>
|
||||
</x-slot>-->
|
||||
|
||||
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="h-100 p-5 bg-light border rounded-3">
|
||||
<h2>Preise</h2>
|
||||
<p>Hier werden jeden Monat neue Challenges veröffentlicht. Der Gewinner erhält einen Preis.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</x-app-layout>
|
@@ -1,132 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Laravel</title>
|
||||
<title>Shit-Show</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="icon" href="{{ url('favicon.ico') }}">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Nunito', sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="antialiased">
|
||||
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
|
||||
@if (Route::has('login'))
|
||||
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
|
||||
@auth
|
||||
<a href="{{ url('/dashboard') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Dashboard</a>
|
||||
@else
|
||||
<a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>
|
||||
<body>
|
||||
|
||||
@if (Route::has('register'))
|
||||
<a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
|
||||
@endif
|
||||
@endauth
|
||||
</div>
|
||||
@endif
|
||||
@include('layouts.navigation')
|
||||
|
||||
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
|
||||
<svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
|
||||
<g clip-path="url(#clip0)" fill="#EF3B2D">
|
||||
<path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2">
|
||||
<div class="p-6">
|
||||
<div class="flex items-center">
|
||||
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
|
||||
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div>
|
||||
</div>
|
||||
|
||||
<div class="ml-12">
|
||||
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
|
||||
Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
|
||||
<div class="flex items-center">
|
||||
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
|
||||
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
|
||||
</div>
|
||||
|
||||
<div class="ml-12">
|
||||
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
|
||||
Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-6 border-t border-gray-200 dark:border-gray-700">
|
||||
<div class="flex items-center">
|
||||
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
|
||||
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
|
||||
</div>
|
||||
|
||||
<div class="ml-12">
|
||||
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
|
||||
Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
|
||||
<div class="flex items-center">
|
||||
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
||||
<div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-12">
|
||||
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
|
||||
Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-4 sm:items-center sm:justify-between">
|
||||
<div class="text-center text-sm text-gray-500 sm:text-left">
|
||||
<div class="flex items-center">
|
||||
<svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
|
||||
<path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
|
||||
</svg>
|
||||
|
||||
<a href="https://laravel.bigcartel.com" class="ml-1 underline">
|
||||
Shop
|
||||
</a>
|
||||
|
||||
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
|
||||
<path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
|
||||
</svg>
|
||||
|
||||
<a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
|
||||
Sponsor
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
|
||||
Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-5 mb-4 bg-light rounded-3">
|
||||
<div class="container-fluid py-5">
|
||||
<h1 class="display-5 fw-bold">Shit-Show</h1>
|
||||
<p class="col-md-8 fs-4">Der Stuhlgang-Tracker der Ihr Leben erleichtert. Fehlt Ihnen auf den WC-Sessions auch immer der kompetitive Aspekt und Sie denken es wäre verschwendete Zeit?
|
||||
Ganz und gar nicht! Mit dieser Shit-Show können Sie mit dem Rest der Welt um die Wette scheißen!
|
||||
</p>
|
||||
<p class="col-md-8 fs-4">Jeden Monat warten neue spannende Challenges und Preise auf Sie, also worauf warten Sie noch? Registrieren und rauf auf den Pott!</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -2,6 +2,8 @@
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
use App\Http\Controllers\ShitController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Web Routes
|
||||
@@ -17,8 +19,21 @@ Route::get('/', function () {
|
||||
return view('welcome');
|
||||
});
|
||||
|
||||
Route::get('/dashboard', function () {
|
||||
return view('dashboard');
|
||||
})->middleware(['auth'])->name('dashboard');
|
||||
Route::get('/dashboard', [ShitController::class, 'dashboard'])->middleware(['auth'])->name('dashboard');
|
||||
|
||||
Route::post('/increment', [ShitController::class, 'increment'])->middleware(['auth']);
|
||||
Route::get('/ownstats', [ShitController::class, 'ownStats'])->middleware(['auth']);
|
||||
Route::get('/highscores', [ShitController::class, 'highscores'])->middleware(['auth']);
|
||||
Route::get('/prices', function () {
|
||||
return view('prices');
|
||||
})->middleware(['auth']);
|
||||
|
||||
Route::get('/faq', function () {
|
||||
return view('faq');
|
||||
});
|
||||
|
||||
Route::get('/credits', function () {
|
||||
return view('credits');
|
||||
});
|
||||
|
||||
require __DIR__.'/auth.php';
|
||||
|
Reference in New Issue
Block a user