v1.5.17 - Added multiple events to event index

This commit is contained in:
Anders 2021-04-27 15:15:23 +02:00
parent e1d6bd95f5
commit 7e5c1f8dbe
7 changed files with 160 additions and 36 deletions

3
skolehjem/.htaccess Normal file
View File

@ -0,0 +1,3 @@
RewriteEngine On
RewriteRule ^/((?!\.well-known)(/.*)?)$ [L]
RewriteRule ^(.*)$ public/$1 [L]

View File

@ -289,11 +289,11 @@ class EventController extends Controller
} }
public function previewPages(Request $request){ public function previewPages(Request $request){
if(!Resource::find($request->preview)){ //if(!Resource::find($request->preview)){
$event = Event::find($request->preview); // $event = Event::find($request->preview);
}else{ //}else{
$event = Event::where('events.id', '=', $request->preview)->join('resources', 'resources.id', '=', 'events.resource_id')->first(); $event = Event::where('events.id', '=', $request->preview)->leftJoin('resources', 'resources.id', '=', 'events.resource_id')->first();
} //}
$convertToJsonArray = json_encode($event); $convertToJsonArray = json_encode($event);
return $convertToJsonArray; return $convertToJsonArray;
} }

View File

@ -33,8 +33,7 @@ class MultipleEventsController extends Controller
*/ */
public function index() public function index()
{ {
$multiEvents = MultipleEventsParent::query()->orderBY('id' , 'desc')->get(); //
return Response::detect("multiple-events.index", [ "multiEvents" => $multiEvents]);
} }
/** /**
@ -65,7 +64,6 @@ class MultipleEventsController extends Controller
"name.*" => "max:255", "name.*" => "max:255",
"description.*" => "max:255", "description.*" => "max:255",
"accountable.*" => "max:255", "accountable.*" => "max:255",
"date.*" => "max:255"
]); ]);
$multipleParent = new MultipleEventsParent(); $multipleParent = new MultipleEventsParent();
@ -86,7 +84,7 @@ class MultipleEventsController extends Controller
$multi_event->description = $requestBody['description'][$i]; $multi_event->description = $requestBody['description'][$i];
$multi_event->accountable = $requestBody['accountable'][$i]; $multi_event->accountable = $requestBody['accountable'][$i];
$multi_event->name = $requestBody['name'][$i]; $multi_event->name = $requestBody['name'][$i];
$multi_event->event_end = "2021-27-04 16:00:00"; $multi_event->event_end = "2021-04-04 16:00:00";
$multi_event->multiple_events_parent_id = $multipleParent->id; $multi_event->multiple_events_parent_id = $multipleParent->id;
$multi_event->save(); $multi_event->save();
} }
@ -107,7 +105,7 @@ class MultipleEventsController extends Controller
} }
return redirect()->route('multiple-events.index', ['multiEvents' => $multiEvents]); return redirect()->route('events.index');
} }

View File

@ -17,6 +17,10 @@
.letterSpaceTable{ .letterSpaceTable{
letter-spacing: 1.2px; letter-spacing: 1.2px;
} }
#table_id2_wrapper {
margin-top: 3rem;
}
</style> </style>
<div class="row align-items-center"> <div class="row align-items-center">
@ -64,6 +68,36 @@
</tbody> </tbody>
</table> </table>
<table class="tbl mt-2 letterSpaceTable fixOverflow" id="table_id2">
<thead>
<th>Uge</th>
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/preview.svg') }}" alt="preview"></th>
@if(auth()->user()->can('event.edit'))
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/pencil.svg') }}" alt="Update"></th>
@endif
@if(auth()->user()->can('event.delete'))
<th class="w-1em"><img class="w-100" src="{{ asset('/images/icons/trashcan.svg') }}" alt="Delete"></th>
@endif
</thead>
<tbody>
@foreach(\App\MultipleEventsParent::query()->orderBY('id' , 'desc')->get() as $event)
<tr id="row2_{{ $event->id }}">
<td>{{ $event->week}}</td>
<td><a id="preview" onclick="modalMultiEventContent({{$event->id}})" style="cursor: pointer"><img class="w-100" src="{{ asset('/images/icons/preview-dark.svg') }}" alt="preview"></a></td>
@if(auth()->user()->can('event.edit'))
<td><a href="#"><img class="w-100" src="{{ asset('/images/icons/pencil-dark.svg') }}" alt="Update"></a></td>
@endif
@if(auth()->user()->can('event.delete'))
<td>
@csrf
<a class="w-100 nostyle" onclick="delete_multievent({{ $event->id }})"><img class="w-100 cursor-pointer" src="{{ asset('/images/icons/trashcan-dark.svg') }}" alt="Delete"></a>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
<div id="eventModal" class="modal zindex-100"> <div id="eventModal" class="modal zindex-100">
<div id="modal-content" class="modal-content text-black d-block w-50"> <div id="modal-content" class="modal-content text-black d-block w-50">
<span class="close" onclick="closeModal()">&times;</span> <span class="close" onclick="closeModal()">&times;</span>
@ -80,10 +114,23 @@
</center> </center>
</div> </div>
</div> </div>
<div id="eventMultiModal" class="modal zindex-100">
<div id="modal-content" class="modal-content text-black d-block w-50">
<span class="close" onclick="closeModal()">&times;</span>
<center>
<h1 id="week"></h1>
<hr>
<img id="eventmultiimg">
<p id="events"></p>
</center>
</div>
</div>
@endsection @endsection
@section('scripts') @section('scripts')
<script> <script>
var modalEvent = document.getElementById("eventModal"); var modalEvent = document.getElementById("eventModal");
var modalMultiEvent = document.getElementById("eventMultiModal");
function modalEventContent(id) { function modalEventContent(id) {
$.ajax({ $.ajax({
@ -91,13 +138,15 @@
url: '{{route('events.preview')}}', url: '{{route('events.preview')}}',
data: {'preview':id}, data: {'preview':id},
success:function (data) { success:function (data) {
modalNews.style.display = "flex"; modalEvent.style.display = "flex";
var l = JSON.parse(data); var l = JSON.parse(data);
$("#name").html(l.name); $("#name").html(l.name);
$("#date").html(l.date); $("#date").html(l.date);
$("#accountable").html(l.accountable); $("#accountable").html(l.accountable);
$("#description").html(l.description); $("#description").html(l.description);
console.log(l);
if (l.filename) if (l.filename)
$("#eventimg").attr('src', l.filename); $("#eventimg").attr('src', l.filename);
}, },
@ -107,25 +156,62 @@
}); });
} }
function modalMultiEventContent(id) {
$.ajax({
type: 'get',
url: '{{route('multiple-events.preview')}}',
data: {'preview':id},
dataType: 'JSON',
success:function (data) {
modalMultiEvent.style.display = "flex";
$("#week").html('Uge: '+data[0].week);
if (data[0].resource_id != null)
$("#eventmultiimg").attr('src', data[0].filename);
for (var i = 0; i < data[1].length; i++) {
$("#events").append("<div class='container text-center'><div class='row justify-content-center'><div class='col'><h1 class='mb-0'>"+data[1][i].name+"</h1>" +
"<h3 class='mt-0 mb-0'>"+data[1][i].date+" - "+data[1][i].event_end+"</h3>" +
"<h3 class='mt-0'>Tovholder: "+data[1][i].accountable+"</h3>" +
"<h3 class='mb-0'>Beskrivelse:</h3>" +
"<p class='mt-0'>"+data[1][i].description+"</p>" +
"</div>" +
"</div>" +
"</div><hr>");
}
},
error:function (data) {
console.log(data);
}
});
}
function closeModal() { function closeModal() {
modalEvent.style.display = "none"; modalEvent.style.display = "none";
modalMultiEvent.style.display = "none";
$("#name").html(''); $("#name").html('');
$("#date").html(''); $("#date").html('');
$("#accountable").html(''); $("#accountable").html('');
$("#description").html(''); $("#description").html('');
$("#eventimg").attr('src', ''); $("#eventimg").attr('src', '');
$("#eventmultiimg").attr('src', '');
$("#week").html('');
$("#events").html('');
} }
window.onmousedown = function(event) { window.onmousedown = function(event) {
if (event.target == modalEvent) { if (event.target == modalEvent || event.target == modalMultiEvent) {
modalEvent.style.display = "none"; modalEvent.style.display = "none";
modalMultiEvent.style.display = "none";
$("#name").html(''); $("#name").html('');
$("#date").html(''); $("#date").html('');
$("#accountable").html(''); $("#accountable").html('');
$("#description").html(''); $("#description").html('');
$("#eventimg").attr('src', ''); $("#eventimg").attr('src', '');
$("#eventmultiimg").attr('src', '');
$("#week").html('');
$("#events").html('');
} }
} }
</script> </script>
@ -136,6 +222,12 @@
{ orderable: false, targets: [-1, -2, -3, -4] } { orderable: false, targets: [-1, -2, -3, -4] }
] ]
}); });
$('#table_id2').DataTable({
columnDefs: [
{ orderable: false, targets: [-1, -2, -3, -4] }
]
});
}); });
function delete_event(id) { function delete_event(id) {
@ -172,5 +264,40 @@
} }
}) })
} }
function delete_multievent(id) {
var token = $("input[name='_token']").val();
Swal.fire({
title: 'Er du sikker?',
text: "Dette kan ikke blive ændret tilbage!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Slet Ugentlig Aktivitet',
cancelButtonText: 'Annuller'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "POST",
url: "multiple-events/"+id,
data:{'_token':token, _method: 'DELETE'},
success: function () {
$('#table_id2').DataTable().row($('#row2_'+id)[0]).remove().draw();
Swal.fire(
'Den ugentlige aktivitet er slettet!',
'',
'success'
)
},
error:function (data) {
console.log(data);
}
});
}
})
}
</script> </script>
@endsection @endsection

View File

@ -53,28 +53,28 @@
<td><input type="text" name="name[]" max="255" value="{{ old("name.0") }}"></td> <td><input type="text" name="name[]" max="255" value="{{ old("name.0") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.0") }}"></td> <td><input type="text" name="description[]" max="255" value="{{ old("description.0") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.0") }}"></td> <td><input type="text" name="accountable[]" value="{{ old("accountable.0") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.0") }}"></td> <td><input type="datetime-local" name="date[]" value="{{ old("date.0") }}"></td>
</tr> </tr>
<tr> <tr>
<td>Tirsdag</td> <td>Tirsdag</td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.1") }}"></td> <td><input type="text" name="name[]" max="255" value="{{ old("name.1") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.1") }}"></td> <td><input type="text" name="description[]" max="255" value="{{ old("description.1") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.1") }}"></td> <td><input type="text" name="accountable[]" value="{{ old("accountable.1") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.1") }}"></td> <td><input type="datetime-local" name="date[]" value="{{ old("date.1") }}"></td>
</tr> </tr>
<tr> <tr>
<td>Onsdag</td> <td>Onsdag</td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.2") }}"></td> <td><input type="text" name="name[]" max="255" value="{{ old("name.2") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.2") }}"></td> <td><input type="text" name="description[]" max="255" value="{{ old("description.2") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.2") }}"></td> <td><input type="text" name="accountable[]" value="{{ old("accountable.2") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.2") }}"></td> <td><input type="datetime-local" name="date[]" value="{{ old("date.2") }}"></td>
</tr> </tr>
<tr> <tr>
<td>Torsdag</td> <td>Torsdag</td>
<td><input type="text" name="name[]" max="255" value="{{ old("name.3") }}"></td> <td><input type="text" name="name[]" max="255" value="{{ old("name.3") }}"></td>
<td><input type="text" name="description[]" max="255" value="{{ old("description.3") }}"></td> <td><input type="text" name="description[]" max="255" value="{{ old("description.3") }}"></td>
<td><input type="text" name="accountable[]" value="{{ old("accountable.3") }}"></td> <td><input type="text" name="accountable[]" value="{{ old("accountable.3") }}"></td>
<td><input type="text" name="date[]" value="{{ old("date.3") }}"></td> <td><input type="datetime-local" name="date[]" value="{{ old("date.3") }}"></td>
</tr> </tr>
</table> </table>

View File

@ -24,7 +24,6 @@
</thead> </thead>
<tbody> <tbody>
@foreach($multiEvents as $event) @foreach($multiEvents as $event)
<tr id="row_{{ $event->id }}"> <tr id="row_{{ $event->id }}">
<td>{{ $event->week}}</td> <td>{{ $event->week}}</td>
<td><a id="preview" onclick="modalEventContent({{$event->id}})" style="cursor: pointer"><img class="w-100" src="{{ asset('/images/icons/preview-dark.svg') }}" alt="preview"></a></td> <td><a id="preview" onclick="modalEventContent({{$event->id}})" style="cursor: pointer"><img class="w-100" src="{{ asset('/images/icons/preview-dark.svg') }}" alt="preview"></a></td>
@ -48,10 +47,8 @@
<center> <center>
<h1 id="week"></h1> <h1 id="week"></h1>
<hr> <hr>
<strong><label>Aktiviteter</label></strong>
<hr>
<img id="eventimg"> <img id="eventimg">
<p id="description"></p> <p id="events"></p>
</center> </center>
</div> </div>
</div> </div>
@ -68,17 +65,20 @@
dataType: 'JSON', dataType: 'JSON',
success:function (data) { success:function (data) {
modalEvent.style.display = "flex"; modalEvent.style.display = "flex";
$("#week").html(data[0].week); $("#week").html('Uge: '+data[0].week);
if (data[0].resource_id != null) if (data[0].resource_id != null)
$("#eventimg").attr('src', data[0].filename); $("#eventimg").attr('src', data[0].filename);
/*var l = JSON.parse(data);
$("#name").html(l.name);
$("#date").html(l.date);
$("#accountable").html(l.accountable);
$("#description").html(l.description);
if (l.filename) for (var i = 0; i < data[1].length; i++) {
$("#eventimg").attr('src', l.filename);*/ $("#events").append("<div class='container text-center'><div class='row justify-content-center'><div class='col'><h1 class='mb-0'>"+data[1][i].name+"</h1>" +
"<h3 class='mt-0 mb-0'>"+data[1][i].date+" - "+data[1][i].event_end+"</h3>" +
"<h3 class='mt-0'>Tovholder: "+data[1][i].accountable+"</h3>" +
"<h3 class='mb-0'>Beskrivelse:</h3>" +
"<p class='mt-0'>"+data[1][i].description+"</p>" +
"</div>" +
"</div>" +
"</div><hr>");
}
}, },
error:function (data) { error:function (data) {
console.log(data); console.log(data);
@ -89,22 +89,18 @@
function closeModal() { function closeModal() {
modalEvent.style.display = "none"; modalEvent.style.display = "none";
$("#name").html(''); $("#week").html('');
$("#date").html('');
$("#accountable").html('');
$("#description").html('');
$("#eventimg").attr('src', ''); $("#eventimg").attr('src', '');
$("#events").html('');
} }
window.onmousedown = function(event) { window.onmousedown = function(event) {
if (event.target == modalEvent) { if (event.target == modalEvent) {
modalEvent.style.display = "none"; modalEvent.style.display = "none";
$("#name").html(''); $("#week").html('');
$("#date").html('');
$("#accountable").html('');
$("#description").html('');
$("#eventimg").attr('src', ''); $("#eventimg").attr('src', '');
$("#events").html('');
} }
} }