v1.5.21 - Added edit feature to multiple events

Updated events
Fixed (maybe) htaccess
This commit is contained in:
Anders 2021-05-06 15:25:36 +02:00
parent b6105d0e0b
commit e7184cd820
8 changed files with 228 additions and 77 deletions

View File

@ -193,8 +193,6 @@ class EventController extends Controller
$news->resource_id = $event->resource_id;
$news->content = "<p>" . $this->closetags(substr($event->description, 0, 300));
NewsController::storeAndGet($news);
}

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\MultipleEvents;
use App\MultipleEventsParent;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Barryvdh\DomPDF\Facade as PDF;
@ -59,6 +60,7 @@ class MultipleEventsController extends Controller
public function store(Request $request)
{
$requestBody = $request->validate([
"week" => "required",
"name" => "array",
"description" => "array",
"accountable" => "array",
@ -93,14 +95,13 @@ class MultipleEventsController extends Controller
$multiEvents = MultipleEventsParent::query()->get();
if($request->newsoption == true){
$news = new News();
$news->name = "Nye ugentlig aktivitets";
$news->name = "Ny ugentlig aktivitet";
$news->subname = $request->week;
$news->arrangement_id = $multipleParent->id;
$news->type_id = '5';
$news->content = "Den ugentlige aktivitets plan er landet";
$news->content = "Den ugentlige aktivitets plan for uge ".$request->week." er her!";
$news->resource_id = $request->resource_id;
NewsController::storeAndGet($news);
}
return redirect()->route('events.index', ['multiEvents' => $multiEvents]);
@ -127,7 +128,8 @@ class MultipleEventsController extends Controller
public function edit($id)
{
$multiEvents = MultipleEvents::where('multiple_events_parent_id', '=', $id)->get();
return Response::detect("multiple-events.edit", ["multiEvents" => $multiEvents, "parentEvent" => $id]);
$parentEvent = MultipleEventsParent::find($id);
return Response::detect("multiple-events.edit", ["multiEvents" => $multiEvents, "parentEvent" => $parentEvent]);
}
/**
@ -139,7 +141,54 @@ class MultipleEventsController extends Controller
*/
public function update(Request $request, $id)
{
dd($request);
$requestBody = $request->validate([
"week" => "required",
"name" => "array",
"description" => "array",
"accountable" => "array",
"date" => "array",
]);
$parentEvent = MultipleEventsParent::find($id);
if($request->file("resource")) {
$parentEvent->update(["week" => $request->week, "resource_id" => ResourceController::store($request)->id]) ;
} else
$parentEvent->update(["week" => $request->week]);
//dd($requestBody);
foreach ($requestBody["name"] as $key => $singleEvent) {
if ($key == "new") {
//dd(count($s));
for ($i = 0; $i < count($singleEvent); $i++) {
$multi_event = new MultipleEvents();
$multi_event->name = $requestBody["name"]["new"][$i];
$multi_event->description = $requestBody["description"]["new"][$i];
$multi_event->accountable = $requestBody["accountable"]["new"][$i];
$multi_event->date = $requestBody["date"]["new"][$i];
$multi_event->multiple_events_parent_id = $id;
$multi_event->save();
}
} else {
$event = MultipleEvents::find($key);
$event->update(["name" => $requestBody["name"][$key][0], "description" => $requestBody["description"][$key][0], "accountable" => $requestBody["accountable"][$key][0], "date" => date("Y-m-d H:i:s", strtotime($requestBody["date"][$key][0]))]);
}
}
if($request->newsoption == true){
$news = new News();
$news->name = "Opdateret ugentlig aktivitet";
$news->subname = $request->week;
$news->arrangement_id = $parentEvent->id;
$news->type_id = '5';
$news->content = "Den ugentlige aktivitets plan for uge ".$request->week." er opdateret!";
$news->resource_id = $request->resource_id;
NewsController::storeAndGet($news);
}
$events = Event::query()->orderBY('date' , 'asc')->get();
return Response::detect("events.index", [ "events" => $events]);
}
@ -162,21 +211,30 @@ class MultipleEventsController extends Controller
*/
public function destroy(Request $request, $id)
{
if ($request->signup != null) { // If input signup is not empty, which has been set when you look at the individuel signup, then delete the user who have signed up for the event
if ($request->signup != null) { // If input signup is not empty, which has been set when you look at the individuel signup, then delete the user who have signed up for the specific week event
$UserEvent = UserEvent::find($id);
$UserEvent->delete();
return 1;
} else { // Else if you are deleting an event. Then delete all the sign ups AND the event
$userEvents = UserEvent::where('multiple_event_id', "=", $id)->get();
} elseif ($request->onlyMultiEvent != null) { // Delete a single event from multiple events, and all its signups
$userEvents = UserEvent::where('multiple_event_id', '=', $id)->get();
$multiEvent = MultipleEvents::find($id);
foreach ($userEvents as $ue) {
$ue->delete();
}
$multiEvent->delete();
return 1;
} else { // Delete all multiple events and signups, from the parent/weekly event
$multiparent = MultipleEventsParent::find($id);
$multievent = MultipleEvents::where('multiple_events_parent_id', '=', $id)->get();
foreach ($userEvents as $userEvent) {
$userEvent->delete();
}
foreach ($multievent as $me) {
foreach (UserEvent::where('multiple_event_id', '=', $me->id)->get() as $ue) {
$ue->delete();
}
$me->delete();
}
$news = News::query()->join('news_types', 'news_types.id', '=', 'news.type_id')->where("type", "=", "MultipleEvent")->where("arrangement_id", "=", $id);

View File

@ -7,6 +7,6 @@ use Illuminate\Database\Eloquent\Model;
class MultipleEvents extends Model
{
protected $fillable = [
'date', 'event_name', 'accountable', 'week', 'description', 'multiple_events_parent_id'
'date', 'name', 'accountable', 'description', 'multiple_events_parent_id'
];
}

View File

@ -20,7 +20,7 @@
RewriteRule ^ index.php [L]
#Rewrite everything to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST} [L,R=301]
#RewriteEngine On
#RewriteCond %{HTTPS} !=on
#RewriteRule ^(.*)$ https://%{HTTP_HOST} [L,R=301]
</IfModule>

View File

@ -37,7 +37,7 @@
<div id="editor">{!! $event->description !!}</div>
<textarea name="description" class="d-none" id="hiddenArea"></textarea>
<label for="date">Aktivitet Dato:</label>
<input value="{{$event->date}}" type="datetime-local" name="date" id="date" required>
<input value="{{ strftime("%Y-%m-%dT%H:%M:%S", strtotime($event->date)) }}" type="datetime-local" name="date" id="date" required>
<label id="fileuploadee"for="fileuploade">Baggrundsbillede (Forbliv tom hvis billede ikke skal ændres):</label>
<input id="fileuploade" type="file" name="resource" accept="image/*" value="{{$event->resource_id}}">
<label class="toggle">
@ -139,5 +139,12 @@
}
});
})
$(document).ready(function (){
$("#add2").click(function(){
$( ".asd" ).append( "<tr><td><input type='text' name='name[]'></td><td><input type='text' name='description[]'></td><td><input type='text' name='accountable[]'></td><td><input type='datetime-local' name='date[]'><td/></tr>" );
console.log("1");
});
});
</script>
@endsection

View File

@ -46,7 +46,6 @@
</thead>
<tbody>
@foreach($events as $event)
@if (date('Y-m-d H:i', strtotime('-1 day')) < date('Y-m-d H:i', strtotime($event->date)))
<tr id="row_{{ $event->id }}">
<td>{{ $event->name }}</td>
<td>{{ $event->accountable }}</td>
@ -63,7 +62,6 @@
</td>
@endif
</tr>
@endif
@endforeach
</tbody>
</table>

View File

@ -37,22 +37,23 @@
<form method="post" action="{{ route("multiple-events.store") }}" enctype="multipart/form-data">
<!--datetime-local-->
@csrf
<input type="text" name="week" placeholder="Uge" maxlength="2">
<input type="number" name="week" placeholder="Uge" maxlength="2" max="53" required>
<label id="fileuploadee"for="fileuploade">Baggrundsbillede til nyheden (Valgfri)</label>
<input id="fileuploade" type="file" name="resource" accept="image/*">
<table class="asd">
<table id="table">
<tr>
<th>Aktivitets navn</th>
<th>Aktivitets beskrivelse</th>
<th>Tovholder</th>
<th>Tidsrum (Start)</th>
<th><button type="button" class="btn btn-inline btn-sde-blue" id="add2">Tilføj Række</button></th>
</tr>
<tr>
<td><input type="text" name="name[]" maxlength="255"></td>
<td><input type="text" name="description[]"></td>
<td><input type="text" name="accountable[]" maxlength="255"></td>
<td><input type="datetime-local" name="date[]"></td>
<td><button type="button" class="btn btn-inline btn-sde-blue" id="add2">Tilføj en kolonne</button></td>
<td><button type="button" onclick="removeRow(this)" class="btn btn-inline btn-sde-blue">Fjern Række</button></td>
</tr>
</table>
@ -127,16 +128,34 @@
});
})
$(document).ready(function (){
$("#add2").click(function(){
$( ".asd" ).append( "<tr><td><input type='text' name='name[]'></td><td><input type='text' name='description[]'></td><td><input type='text' name='accountable[]'></td><td><input type='datetime-local' name='date[]'><td/></tr>" );
$( "#table" ).append( "<tr>" +
"<td><input type='text' name='name[]'></td>" +
"<td><input type='text' name='description[]'></td>" +
"<td><input type='text' name='accountable[]'></td>" +
"<td><input type='datetime-local' name='date[]'></td>" +
"<td><button type='button' onclick='removeRow(this)' class='btn btn-inline btn-sde-blue'>Fjern Række</button></td>" +
"</tr>" );
console.log("1");
});
});
function removeRow(el) {
Swal.fire({
title: 'Er du sikker?',
text: "Dette kan ikke blive ændret tilbage!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Fjern Række',
cancelButtonText: 'Annuller'
}).then((result) => {
if (result.isConfirmed) {
$(el).parent().parent().remove();
}
})
}
</script>
@endsection

View File

@ -30,6 +30,9 @@
padding: 8px;
}
.pointer {
cursor: pointer;
}
</style>
<link href="{{ asset("/css/quill/quill.snow.css") }}" rel="stylesheet">
@ -37,22 +40,24 @@
<form method="post" action="{{ route("multiple-events.update", $parentEvent) }}" enctype="multipart/form-data">
@csrf
@method("PUT")
<input type="text" name="week" placeholder="Uge">
<label id="fileuploadee"for="fileuploade">Baggrundsbillede til nyheden (Valgfri)</label>
<input id="fileuploade" type="file" name="resource" accept="image/*">
<table>
<input type="number" name="week" placeholder="Uge" max="53" maxlength="2" value="{{$parentEvent->week}}" required>
<label id="fileuploadee"for="fileuploade">Baggrundsbillede til nyheden (Forbliv tom hvis billede ikke skal ændres):</label>
<input id="fileuploade" type="file" name="resource" accept="image/*" value="{{$parentEvent->resource_id}}">
<table id="table">
<tr>
<th>Aktivitets navn</th>
<th>Aktivitets beskrivelse</th>
<th>Tovholder</th>
<th>Tidsrum (Start)</th>
<th><button type="button" class="btn btn-inline btn-sde-blue" id="add2">Tilføj Række</button></th>
</tr>
@foreach($multiEvents as $multiEvent)
<tr>
<td><input type="text" name="name[][]" max="255" value="{{ $multiEvent->name }}"></td>
<td><input type="text" name="description[][]" max="255" value="{{ $multiEvent->description }}"></td>
<td><input type="text" name="accountable[][]" value="{{ $multiEvent->accountable }}"></td>
<td><input type="datetime-local" name="date[][]" value="{{ $multiEvent->date }}"></td>
<tr id="{{ $multiEvent->id }}">
<td><input type="text" name="name[{{ $multiEvent->id }}][]" maxlength="255" value="{{ $multiEvent->name }}"></td>
<td><input type="text" name="description[{{ $multiEvent->id }}][]" value="{{ $multiEvent->description }}"></td>
<td><input type="text" name="accountable[{{ $multiEvent->id }}][]" maxlength="255" value="{{ $multiEvent->accountable }}"></td>
<td><input type="datetime-local" name="date[{{ $multiEvent->id }}][]" value="{{ strftime("%Y-%m-%dT%H:%M:%S", strtotime($multiEvent->date)) }}"></td>
<td><button type="button" onclick="removeRow(this)" class="btn btn-inline btn-sde-blue">Fjern Række</button></td>
</tr>
@endforeach
</table>
@ -64,7 +69,7 @@
</span>
</label>
<input id="disable" type="submit" class="btn btn-dark text-white" value="Opret">
<input id="disable" type="submit" class="btn btn-dark text-white" value="Rediger">
</form>
@endsection
@section("scripts")
@ -127,5 +132,71 @@
}
});
})
$(document).ready(function (){
$("#add2").click(function(){
$( "#table" ).append( "<tr>" +
"<td><input type='text' name='name[new][]'></td>" +
"<td><input type='text' name='description[new][]'></td>" +
"<td><input type='text' name='accountable[new][]'></td>" +
"<td><input type='datetime-local' name='date[new][]'></td>" +
"<td><button type='button' onclick='removeRow(this)' class='btn btn-inline btn-sde-blue'>Fjern Række</button></td>" +
"</tr>" );
});
});
function removeRow(el) {
var token = $("input[name='_token']").val();
if ($(el).parent().parent().attr("id") == null) {
Swal.fire({
title: 'Er du sikker?',
text: "Dette kan ikke blive ændret tilbage!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Fjern Række',
cancelButtonText: 'Annuller'
}).then((result) => {
if (result.isConfirmed) {
$(el).parent().parent().remove();
}
})
} else {
Swal.fire({
title: 'Er du sikker?',
text: "Dette kan ikke blive ændret tilbage!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Fjern række & aktivitet',
cancelButtonText: 'Annuller'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "POST",
url: "/multiple-events/"+$(el).parent().parent().attr("id"),
data:{'_token':token, _method: 'DELETE', 'onlyMultiEvent': true},
success: function () {
$(el).parent().parent().remove();
Swal.fire(
'Aktiviteten og rækken er fjernet!',
'',
'success'
)
},
error:function (data) {
console.log(data);
}
});
}
})
}
}
</script>
@endsection