diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php new file mode 100644 index 0000000..39d74f7 --- /dev/null +++ b/app/Http/Controllers/EventController.php @@ -0,0 +1,79 @@ +input('name'); + $shortname = $request->input('shortname'); + $from_date_internal = $request->input('from_date_internal'); + $to_date_internal = $request->input('to_date_internal'); + $from_date_visible = $request->input('from_date_visible'); + $to_date_visible = $request->input('to_date_visible'); + $active = $request->input('active'); + + try { + + $event = new ChaosEvents(); + $event->name = $name; + $event->shortname = $shortname; + $event->from_date_internal = $from_date_internal; + $event->to_date_internal = $to_date_internal; + $event->from_date_visible = $from_date_visible; + $event->to_date_visible = $to_date_visible; + $event->active = $active; + + $event->save(); + return ['messageStatus' => 'success', 'errorMessage' => '']; + } catch (\Illuminate\Database\QueryException $e) { + return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.EventController.error_occurred", ["error" => $e->getMessage()])]; + } + } + abort(404); + } + + public function deleteEvent(Request $request) { + if(Auth::check()){ + try { + $event = ChaosEvents::find($request->input('id')); + if ($event) { + $event->delete(); + return ['messageStatus' => 'success', 'errorMessage' => '']; + } else { + return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.EventController.error_occurred", ["error" => "Event not found"])]; + } + } catch (\Illuminate\Database\QueryException $e) { + return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.EventController.error_occurred", ["error" => $e->getMessage()])]; + } + } + abort(404); + } + + public function setActivity(Request $request) { + if(Auth::check()) { + try { + $event = ChaosEvents::find($request->input('id')); + if ($event) { + $event->active = $request->input('active'); + $event->save(); + return ['messageStatus' => 'success', 'errorMessage' => '']; + } else { + return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.EventController.error_occurred", ["error" => "Event not found"])]; + } + } catch (\Illuminate\Database\QueryException $e) { + return ['messageStatus' => 'failure', 'errorMessage' => __("controller_messages.EventController.error_occurred", ["error" => $e->getMessage()])]; + } + } + abort(404); + } +} diff --git a/app/Http/Controllers/WebsiteController.php b/app/Http/Controllers/WebsiteController.php index 12064a3..42e0024 100644 --- a/app/Http/Controllers/WebsiteController.php +++ b/app/Http/Controllers/WebsiteController.php @@ -82,4 +82,13 @@ class WebsiteController extends Controller abort(404); } + public function editEvents(){ + if(Auth::check()){ + return response() + ->view('events.edit', ['events' => EventController::eventsPaginated()]) + ->header('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); + } + abort(404); + } + } diff --git a/lang/de/app.php b/lang/de/app.php index 46d5858..ee28d5c 100644 --- a/lang/de/app.php +++ b/lang/de/app.php @@ -23,6 +23,7 @@ return [ 'editTicker' => 'Ticker bearbeiten', 'editNews' => 'Neuigkeiten bearbeiten', 'editApplications' => 'Anträge bearbeiten', + 'events' => 'C3Gov-Termine', 'logout' => 'Abmelden' ], 'index' => [ @@ -165,4 +166,19 @@ return [ 'delete_success' => 'Löschen erfolgreich!', 'insert_success' => 'Einfügen erfolgreich!', ], + 'events' => [ + 'description' => 'Hier können Sie Termine hinzufügen oder löschen.', + 'add' => 'Termin hinzufügen', + 'delete' => 'Löschen', + 'active' => 'Aktiv', + 'name' => 'Name', + 'list' => 'Termine', + 'setActivity' => 'Aktiv-Status ändern', + 'shortname' => 'Namenscode', + 'from_date_internal' => 'Fristanfang', + 'to_date_internal' => 'Fristende', + 'from_date_visible' => 'Terminstart', + 'to_date_visible' => 'Terminende', + + ] ]; diff --git a/public/js/events/events.js b/public/js/events/events.js new file mode 100644 index 0000000..2ebea55 --- /dev/null +++ b/public/js/events/events.js @@ -0,0 +1,87 @@ +function addEvent(){ + let data = {}; + data.name = $("#name").val(); + data.shortname = $("#shortname").val(); + data.from_date_internal = $("#from_date_internal").val(); + data.to_date_internal = $("#to_date_internal").val(); + data.from_date_visible = $("#from_date_visible").val(); + data.to_date_visible = $("#to_date_visible").val(); + data.active = $("#active").is(":checked") ? "1" : "0"; + + if(window.confirm(i18n.blog.confirm_save)) { + $.ajax({ + type: 'POST', + url: '/intern/events/hinzufuegen', + data: data, + dataType: 'json', + success: function (r) { + if (r.messageStatus === "success") { + $('#name').val(""); + $('#shortname').val(""); + $('#from_date_internal').val(""); + $('#to_date_internal').val(""); + $('#from_date_visible').val(""); + $('#to_date_visible').val(""); + $('#active').prop('checked', false); + location.reload(); + } else { + alert(r.errorMessage); + } + }, + error: function (r, a, e) { + alert(i18n.common.error_occurred + e); + } + }); + } +} + +function setActivity(id) { + let data = {}; + data.id = id; + data.active = $("#active_" + id).is(":checked") ? "1" : "0"; + + if(window.confirm(i18n.blog.confirm_save)) { + $.ajax({ + type: 'PATCH', + url: '/intern/events/setActivity', + data: data, + dataType: 'json', + success: function (r) { + if (r.messageStatus === "success") { + location.reload(); + } else { + alert(r.errorMessage); + } + }, + error: function (r, a, e) { + alert(i18n.common.error_occurred + e); + } + }); + } +} + +function deleteEvent(id) { + let data = {}; + data.id = id; + + if(window.confirm(i18n.blog.confirm_delete)) { + $.ajax({ + type: 'DELETE', + url: '/intern/events/loeschen', + data: data, + dataType: 'json', + success: function (r) { + if (r.messageStatus === "success") { + $('#delete_' + id).closest('#eingabemaske_' + id).fadeOut(300, function () { + $(this).remove(); + }); + } else { + alert(r.errorMessage); + } + }, + error: function (r, a, e) { + alert(i18n.common.error_occurred + e); + } + }); + } +} diff --git a/resources/views/events/edit.blade.php b/resources/views/events/edit.blade.php new file mode 100644 index 0000000..af6f5a8 --- /dev/null +++ b/resources/views/events/edit.blade.php @@ -0,0 +1,97 @@ +@extends('layout.app') +@section('scripts') + + +@endsection +@section('content') +
{{ __('app.events.description') }}
+ +| {{ __('app.events.name') }}: | ++ |
| {{ __('app.events.shortname') }}: | ++ |
| {{ __('app.events.from_date_internal') }}: | ++ |
| {{ __('app.events.to_date_internal') }}: | ++ |
| {{ __('app.events.from_date_visible') }}: | ++ |
| {{ __('app.events.to_date_visible') }}: | ++ |
| {{ __('app.events.active') }}: | ++ |
| {{ __('app.events.name') }}: | +{{ $event->name }} | +
| {{ __('app.events.shortname') }}: | +{{ $event->shortname }} | +
| {{ __('app.events.from_date_internal') }}: | +{{ $event->from_date_internal->format('Y-m-d') }} | +
| {{ __('app.events.to_date_internal') }}: | +{{ $event->to_date_internal->format('Y-m-d') }} | +
| {{ __('app.events.from_date_visible') }}: | +{{ $event->from_date_visible->format('Y-m-d') }} | +
| {{ __('app.events.to_date_visible') }}: | +{{ $event->to_date_visible->format('Y-m-d') }} | +
| {{ __('app.events.active') }}: | +active) checked @endif> | +