This commit is contained in:
chrosey
2017-09-13 07:52:34 +02:00
parent a1f16c37f4
commit 2340b0226b
24621 changed files with 2912161 additions and 149 deletions
+49 -1
View File
@@ -1,5 +1,53 @@
// Site.js
$("#content").on('click-row.bs.table', function(e, row, $element) {
$(".clickable-row").on('click', function(e) {
$element = $(this);
window.location = $element.data('href');
});
$(document).ready(function(){
$('.load-async').each(function(){
$me = $(this);
$.get($me.data('href'),function(data){
$me.html(data);
});
});
});
$(".confirm-logout").click(function() {
var data = $(this).data();
$.post({
url: data.url,
headers: {
'X-CSRF-TOKEN': data.token
},
success: function(data){
window.location.href = data;
}
});
});
$('#confirmDeletionModal').on('show.bs.modal', function (event) {
event.stopPropagation();
var button = $(event.relatedTarget) // Button that triggered the modal
var data = button.data() // Extract info from data-* attributes
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var modal = $(this)
modal.find('#identifier').text(data.identifier);
modal.find('#confirmDeletionButton').data('url',data.url);
});
$("#confirmDeletionButton").click(function() {
var data = $(this).data();
$.ajax({
url: data.url,
headers: {
'X-CSRF-TOKEN': data.token
},
type: "DELETE",
success: function(data){
window.location.href = data;
}
});
});
+92
View File
@@ -0,0 +1,92 @@
@extends('layouts.app')
@section('title', 'Neuer Benutzer')
@section('content')
{!! Form::model($benutzer, ['route' => 'benutzer.store', 'class' => "container"]) !!}
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('anzeigename',
'Angezeigter Name',
['class'=> 'col-form-label'])
!!}
{!! Form::text('anzeigename',
$benutzer->anzeigename,
['class'=>"form-control",
'aria-describedby' => "anzeigenameHelp"])
!!}
<small id="anzeigenameHelp" class="form-text text-muted">Der Name, der für alle sichtbar ist.</small>
</div>
<div class="form-group col-md-6">
{!! Form::label('name',
'Username',
['class'=> 'col-form-label'])
!!}
{!! Form::text('name',
$benutzer->name,
['class'=>"form-control",
'aria-describedby' => "usernameHelp"])
!!}
<small id="usernameHelp" class="form-text text-muted">Der Name, mit dem sich der Nutzer anmeldet.</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('email',
'Email',
['class'=> 'col-form-label'])
!!}
{!! Form::email('email',
$benutzer->email,
['class'=>"form-control",
'aria-describedby' => "emailHelp"])
!!}
<small id="emailHelp" class="form-text text-muted">Emailadresse des Benutzers (für Passwortprobleme oder Benachrichtigungen).</small>
</div>
<div class="form-group col-md-6">
{!! Form::label('telefon',
'Telefon',
['class'=> 'col-form-label'])
!!}
{!! Form::text('telefon',
$benutzer->telefon,
['class'=>"form-control",
'aria-describedby' => "telefonHelp"])
!!}
<small id="telefonHelp" class="form-text text-muted">Telefonische Erreichbarkeit des Benutzers.</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('password',
'Passwort',
['class'=> 'col-form-label'])
!!}
<div class="input-group">
{!! Form::password('password',
['class'=>"form-control",
'aria-describedby' => "passwordHelp"])
!!}
<span class="input-group-btn">
<button id="rndPassword" type="button" class="btn btn-secondary">Generieren</button>
</span>
</div>
<small id="passwordHelp" class="form-text text-muted">Passwort des Benutzers (muss nach der ersten Anmeldung geändert werden).</small>
</div>
<div class="form-group col-md-6">
</div>
</div>
{!! Form::submit('Erstellen', ['class' => "btn btn-primary"]) !!}
{!! Form::close() !!}
@endsection
@section('scripts')
<script type="text/javascript">
$('#rndPassword').click(function(){
var s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+#-=!$&?";
var N = 16;
var p = Array(N).join().split(',').map(function() { return s.charAt(Math.floor(Math.random() * s.length)); }).join('');
$('#password').val(p.substring(8))[0].type = "text";
})
</script>
@endsection
+92
View File
@@ -0,0 +1,92 @@
@extends('layouts.app')
@section('title', 'Neuer Benutzer')
@section('content')
{!! Form::model($benutzer, ['route' => 'benutzer.store', 'class' => "container"]) !!}
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('anzeigename',
'Angezeigter Name',
['class'=> 'col-form-label'])
!!}
{!! Form::text('anzeigename',
$benutzer->anzeigename,
['class'=>"form-control",
'aria-describedby' => "anzeigenameHelp"])
!!}
<small id="anzeigenameHelp" class="form-text text-muted">Der Name, der für alle sichtbar ist.</small>
</div>
<div class="form-group col-md-6">
{!! Form::label('name',
'Username',
['class'=> 'col-form-label'])
!!}
{!! Form::text('name',
$benutzer->name,
['class'=>"form-control",
'aria-describedby' => "usernameHelp"])
!!}
<small id="usernameHelp" class="form-text text-muted">Der Name, mit dem sich der Nutzer anmeldet.</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('email',
'Email',
['class'=> 'col-form-label'])
!!}
{!! Form::email('email',
$benutzer->email,
['class'=>"form-control",
'aria-describedby' => "emailHelp"])
!!}
<small id="emailHelp" class="form-text text-muted">Emailadresse des Benutzers (für Passwortprobleme oder Benachrichtigungen).</small>
</div>
<div class="form-group col-md-6">
{!! Form::label('telefon',
'Telefon',
['class'=> 'col-form-label'])
!!}
{!! Form::text('telefon',
$benutzer->telefon,
['class'=>"form-control",
'aria-describedby' => "telefonHelp"])
!!}
<small id="telefonHelp" class="form-text text-muted">Telefonische Erreichbarkeit des Benutzers.</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
{!! Form::label('password',
'Passwort',
['class'=> 'col-form-label'])
!!}
<div class="input-group">
{!! Form::password('password',
['class'=>"form-control",
'aria-describedby' => "passwordHelp"])
!!}
<span class="input-group-btn">
<button id="rndPassword" type="button" class="btn btn-secondary">Generieren</button>
</span>
</div>
<small id="passwordHelp" class="form-text text-muted">Passwort des Benutzers (muss nach der ersten Anmeldung geändert werden).</small>
</div>
<div class="form-group col-md-6">
</div>
</div>
{!! Form::submit('Erstellen', ['class' => "btn btn-primary"]) !!}
{!! Form::close() !!}
@endsection
@section('scripts')
<script type="text/javascript">
$('#rndPassword').click(function(){
var s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+#-=!$&?";
var N = 16;
var p = Array(N).join().split(',').map(function() { return s.charAt(Math.floor(Math.random() * s.length)); }).join('');
$('#password').val(p.substring(8))[0].type = "text";
})
</script>
@endsection
+36
View File
@@ -0,0 +1,36 @@
@extends('layouts.app')
@section('title', 'Benutzer')
@section('content')
<a class="btn btn-link" href="{{ route('benutzer.create') }}">Benutzer hinzufügen</a>
<table class="table-hover table">
<thead>
<tr>
<th class="text-center">Name</th>
<th class="text-center">Anmeldung</th>
<th class="text-center">Arbeitszeit</th>
<th></th>
</tr>
</thead>
@foreach ($benutzer as $b)
<tr class="clickable-row" data-href="{{ route('benutzer.show', [$b]) }}">
<td >{{ $b->anzeigename }}</td>
<td>{{ $b->created_at->diffForHumans() }}</td>
<td class="text-center">
TODO
</td>
<td class="row">
<a class="btn btn-link my-0 py-0" href="{{ route('benutzer.edit', [$b]) }}">Bearbeiten</a>
<a class="btn btn-link my-0 py-0" data-toggle="modal" href="#confirmDeletionModal" data-token="{{csrf_token()}}" data-url="{{route('benutzer.destroy', $b)}}" data-identifier="{{$b->anzeigename}}">Löschen</button>
</td>
</tr>
@endforeach
</table>
@endsection
@section('modals')
@include('shared.modals.confirmDeletion', [])
@endsection
@@ -0,0 +1,8 @@
@extends('layouts.app')
@section('title', 'Profil')
@section('content')
<div class="row">
<h2 class="display-2">Dein Profil</h2>
</div>
@endsection
+30
View File
@@ -0,0 +1,30 @@
@extends('layouts.app')
@section('title', 'Benutzer')
@section('content')
<h2>{{ $anzeigename }}</h2>
<hr/>
<dl class="row">
<dt class="col-md-2">
Benutzername
</dt>
<dd class="col-md-10">
{{ $name }}
</dd>
<dt class="col-md-2">
E-Mail
</dt>
<dd class="col-md-10">
{{ $email }}
</dd>
<dt class="col-md-2">
Telefon
</dt>
<dd class="col-md-10">
{{ $telefon }}
</dd>
</dl>
<hr/>
<a class="btn btn-link" href="{{ route('veranstaltung.edit', ['id' => $id]) }}">Bearbeiten</a>
<a class="btn btn-link" href="{{ route('veranstaltung.index') }}">Zurück zur Liste</a>
@endsection
+2 -11
View File
@@ -1,17 +1,8 @@
@extends('layouts.app')
@section('title', 'Dashboard')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
You are logged in!
</div>
</div>
</div>
<h2 class="display-2">Dashboard</h2>
</div>
</div>
@endsection
+34 -14
View File
@@ -4,43 +4,63 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/css/app.css" rel="stylesheet" type="text/css">
<title>Dienstplanung - @yield('title')</title>
<script src="https://use.fontawesome.com/c7dd014e97.js"></script>
<title>@yield('title') - Gastro</title>
</head>
<body>
@section('navbar')
<nav class="navbar navbar-toggleable-sm navbar-light bg-faded">
<div class="container">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="/">Dienstplanung</a>
<a class="navbar-brand" href="{{ route('home') }}">Dienstplanung</a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<ul class="navbar-nav">
@if(Auth::check())
<li class="nav-item active">
<a class="nav-link" href="{{ route('home') }}">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('veranstaltung.index') }}">Veranstaltungen</a>
</li>
@else
<li class="nav-item active">
<a class="nav-link" href="{{ route('register') }}">Registrieren</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">Anmelden</a>
<a class="nav-link" href="{{ route('benutzer.index') }}">Benutzer</a>
</li>
@endif
</ul>
<ul class="navbar-nav ml-md-auto">
@if(Auth::check())
<li class="nav-item">
<a class="nav-link" href="{{ route('benutzer.profile') }}">Profil</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#confirmLogoutModal" data-toggle="modal">Abmelden</a>
</li>
@else
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">Registrieren</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">Anmelden</a>
</li>
@endif
</ul>
</div>
</nav>
</div>
</nav>
@show
<div class="container-fluid" id="content">
@section('modals')
@show
@include('shared.modals.confirmLogout', [])
<div class="container" id="content">
@yield('content')
</div>
@section('footer')
@show
<script type="text/javascript" src="/js/app.js"></script>
@yield('scripts')
</body>
</html>
@@ -0,0 +1,20 @@
<div class="modal fade" id="confirmDeletionModal" tabindex="-1" role="dialog" aria-labelledby="confirmLogoutLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="confirmDeletionLabel">Löschen bestätigen</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<span>Möchtest du <strong id="identifier"></strong> wirklich löschen?</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Abbrechen</button>
<button type="button" class="btn btn-danger" data-token="{{ csrf_token() }}" id="confirmDeletionButton">Löschen</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,20 @@
<div class="modal fade" id="confirmLogoutModal" tabindex="-1" role="dialog" aria-labelledby="confirmLogoutLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="confirmLogoutLabel">Ausloggen bestätigen</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<span>Möchtest du dich wirklich ausloggen?</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Abbrechen</button>
<button type="button" class="btn btn-primary confirm-logout" data-url="{{ route('logout') }}" data-token="{{ csrf_token() }}">Ausloggen</button>
</div>
</div>
</div>
</div>
@@ -36,6 +36,13 @@
<small id="hinweiseHelp" class="form-text text-muted">Hinweise zur Veranstalung</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
<label class="col-form-label" for="ort">Ort</label>
{!! Form::select('ort', App\Ort::pluck('name','id'), null,['class' => 'form-control', 'id' => 'ort', 'aria-describedby' => "ortHelp", 'placeholder' => "Wähle einen..."]) !!}
<small id="ortHelp" class="form-text text-muted">Ort der Veranstaltung</small>
</div>
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-primary">Submit</button>
</form>
@@ -35,6 +35,14 @@
<small id="hinweiseHelp" class="form-text text-muted">Hinweise zur Veranstalung</small>
</div>
</div>
<div class="row">
<div class="form-group col-md-6">
<label class="col-form-label" for="ort">Ort</label>
{!! Form::select('ort', App\Ort::pluck('name','id'), $ort_id,['class' => 'form-control', 'id' => 'ort', 'aria-describedby' => "ortHelp", 'placeholder' => "Wähle einen..."]) !!}
<small id="ortHelp" class="form-text text-muted">Ort der Veranstaltung</small>
</div>
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-primary">Submit</button>
</form>
@@ -15,7 +15,7 @@
</tr>
</thead>
@foreach ($veranstaltungen as $v)
<tr class="clickable-link" data-href="{{ route('veranstaltung.show', [$v]) }}">
<tr class="clickable-row" data-href="{{ route('veranstaltung.show', [$v]) }}">
<td>{{ $v->name }}</td>
<td>{{ $v->beginn->format('d.m.Y') }}</td>
<td>{{ $v->beginn->format('H:i') }}</td>
@@ -18,6 +18,12 @@
{{ (new Carbon\Carbon($beginn))->format("H:i") }} -
{{ $ende ? (new Carbon\Carbon($ende))->format("H:i") : "Open End" }}
</dd>
<dt class="col-md-2">
Veranstaltungsort
</dt>
<dd class="col-md-10">
{{ App\Ort::find($ort_id)->name }}
</dd>
<dt class="col-md-2">
Gäste
</dt>