v1.5.21 - Added edit feature to multiple events
Updated events Fixed (maybe) htaccess
This commit is contained in:
parent
b6105d0e0b
commit
e7184cd820
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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'
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -46,24 +46,22 @@
|
|||
</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>
|
||||
<td>{{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime($event->date))->format('d/m/Y \k\l\. H:i') }}</td>
|
||||
<td><a href="{{ route("events.signups", [ "event" => $event ]) }}"><img class="w-100" src="{{ asset('/images/icons/eye-dark.svg') }}" alt="Show"></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>
|
||||
@if(auth()->user()->can('event.edit'))
|
||||
<td><a href="{{ route("events.edit", [ "event" => $event ]) }}"><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_event({{ $event->id }})"><img class="w-100 cursor-pointer" src="{{ asset('/images/icons/trashcan-dark.svg') }}" alt="Delete"></a>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endif
|
||||
<tr id="row_{{ $event->id }}">
|
||||
<td>{{ $event->name }}</td>
|
||||
<td>{{ $event->accountable }}</td>
|
||||
<td>{{ \Illuminate\Support\Facades\Date::createFromTimeStamp(strtotime($event->date))->format('d/m/Y \k\l\. H:i') }}</td>
|
||||
<td><a href="{{ route("events.signups", [ "event" => $event ]) }}"><img class="w-100" src="{{ asset('/images/icons/eye-dark.svg') }}" alt="Show"></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>
|
||||
@if(auth()->user()->can('event.edit'))
|
||||
<td><a href="{{ route("events.edit", [ "event" => $event ]) }}"><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_event({{ $event->id }})"><img class="w-100 cursor-pointer" src="{{ asset('/images/icons/trashcan-dark.svg') }}" alt="Delete"></a>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
@ -102,41 +103,59 @@
|
|||
});
|
||||
});
|
||||
|
||||
$('#name').on('keyup', function () {
|
||||
$value = $(this).val();
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: '{{route('events.nameCheck')}}',
|
||||
data: {'nameCheck':$value},
|
||||
success:function (data) {
|
||||
if(data){
|
||||
$("#error").show(100);
|
||||
$("#error").css('color', 'red');
|
||||
$("#disable").prop('disabled', true);
|
||||
$('#disable').css('cursor','not-allowed');
|
||||
}else{
|
||||
$("#error").hide();
|
||||
$("#disable").prop('disabled', false);
|
||||
$('#disable').css('cursor','pointer');
|
||||
}
|
||||
|
||||
},
|
||||
error:function (data) {
|
||||
console.log(data);
|
||||
$('#name').on('keyup', function () {
|
||||
$value = $(this).val();
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: '{{route('events.nameCheck')}}',
|
||||
data: {'nameCheck':$value},
|
||||
success:function (data) {
|
||||
if(data){
|
||||
$("#error").show(100);
|
||||
$("#error").css('color', 'red');
|
||||
$("#disable").prop('disabled', true);
|
||||
$('#disable').css('cursor','not-allowed');
|
||||
}else{
|
||||
$("#error").hide();
|
||||
$("#disable").prop('disabled', false);
|
||||
$('#disable').css('cursor','pointer');
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
|
||||
},
|
||||
error:function (data) {
|
||||
console.log(data);
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue