diff --git a/Layout/default/Calendar/View.php b/Layout/default/Calendar/View.php index 99c5474a9..cb5139b06 100644 --- a/Layout/default/Calendar/View.php +++ b/Layout/default/Calendar/View.php @@ -565,7 +565,7 @@ endforeach;
+
+ + + + + + + \ No newline at end of file diff --git a/application/Calendar/CalendarController.php b/application/Calendar/CalendarController.php index 0111085a8..1e605fee2 100644 --- a/application/Calendar/CalendarController.php +++ b/application/Calendar/CalendarController.php @@ -326,11 +326,13 @@ class CalendarController extends mfBaseController protected function indexAction() { - $this->layout()->setTemplate("Calendar/Index"); $calendars = CalendarModel::getAll(); + $calendarTemplateEventTypes = CalendarTemplateModel::$calendarTemplateEventTypes; + $this->layout()->set("calendarTemplateEventTypes", $calendarTemplateEventTypes); + $calendartemplates = CalendarTemplateModel::getAll(); + $this->layout()->set("calendartemplates", $calendartemplates); $this->layout()->set("calendars", $calendars); - } protected function addAction() diff --git a/application/CalendarTemplate/CalendarTemplate.php b/application/CalendarTemplate/CalendarTemplate.php new file mode 100644 index 000000000..87fcc74ed --- /dev/null +++ b/application/CalendarTemplate/CalendarTemplate.php @@ -0,0 +1,59 @@ +$name == null) { + + if (!$this->id) { + return null; + } + + if ($name == "creator") { + $this->creator = mfValuecache::singleton()->get("Worker-id-" . $this->create_by); + if ($this->creator === null) { + $this->creator = new User($this->create_by); + if ($this->creator->id) { + mfValuecache::singleton()->set("Worker-id-" . $this->create_by, $this->creator); + } + } + return $this->creator; + } + + if ($name == "editor") { + $this->editor = mfValuecache::singleton()->get("Worker-id-" . $this->edit_by); + if ($this->editor === null) { + $this->editor = new User($this->edit_by); + if ($this->editor->id) { + mfValuecache::singleton()->set("Worker-id-" . $this->edit_by, $this->editor); + } + } + return $this->editor; + } + + $classname = ucfirst($name); + $idfield = $name . "_id"; + $this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-" . $this->$idfield); + if (!$this->$name) { + $this->$name = new $classname($this->$idfield); + } + + if ($this->$name->id) { + mfValuecache::singleton()->set("mfObjectmodel-$name-" . $this->$name->id, $this->$name); + return $this->$name; + } else { + return null; + } + + } + + return $this->$name; +} + +} \ No newline at end of file diff --git a/application/CalendarTemplate/CalendarTemplateController.php b/application/CalendarTemplate/CalendarTemplateController.php new file mode 100644 index 000000000..c74ac2e9d --- /dev/null +++ b/application/CalendarTemplate/CalendarTemplateController.php @@ -0,0 +1,150 @@ +needlogin = true; + $me = new User(); + $me->loadMe(); + $this->me = $me; + $this->layout()->set("me", $me); + + if (!$me->is(["Admin"])) { + $this->redirect("Dashboard"); + } + } + protected function apiAction() + { + $r = $this->request; + $do=$r->do; + switch ($do) { + case "getPreview": + $event_type = $r->event_type; + $calendartemplates = CalendarTemplateModel::search(array("event_type"=>$event_type)); + $result['status'] = "success"; + $result['data'] = $calendartemplates; + break; + default: + $result['status'] = "error"; + $result['message'] = "Aktion nicht gefunden"; + break; + } + echo json_encode($result); + die(); + } + + protected function indexAction() + { + $this->layout()->setTemplate("CalendarTemplate/Index"); + $calendartemplates = CalendarTemplateModel::getAll(); + $calendarTemplateEventTypes=CalendarTemplateModel::$calendarTemplateEventTypes; + $this->layout()->set("calendarTemplateEventTypes", $calendarTemplateEventTypes); + $this->layout()->set("calendartemplates", $calendartemplates); + } + protected function addAction() + { + $this->layout()->setTemplate("CalendarTemplate/Form"); + } + + protected function editAction() + { + $id = $this->request->id; + + if (!is_numeric($id) || !$id) { + $this->layout()->setFlash("Vorlage nicht gefunden", "error"); + $this->redirect("CalendarTemplate"); + } + + $calendartemplates = new CalendarTemplate($id); + if ($calendartemplates->id != $id) { + $this->layout()->setFlash("Vorlage nicht gefunden", "error"); + $this->redirect("CalendarTemplate"); + } + $calendarTemplateEventTypes=CalendarTemplateModel::$calendarTemplateEventTypes; + $this->layout()->set("calendarTemplateEventTypes", $calendarTemplateEventTypes); + $this->layout()->set("calendartemplates", $calendartemplates); + return $this->addAction(); + } + + protected function saveAction() + { + $r = $this->request; + $id = $r->id; + //var_dump($r->get());exit; + if (is_numeric($id) && $id > 0) { + $mode = "edit"; + $calendartemplates = new CalendarTemplate($id); + if (!$calendartemplates->id) { + $this->layout()->setFlash("Vorlagen nicht gefunden", "error"); + $this->redirect("Calendar"); + } + } else { + $mode = "add"; + } + + $data = []; + $data['event_type'] = trim($r->event_type); + $data['name'] = trim($r->name); + $data['is_reminder'] = trim($r->is_reminder); + $data['text'] = trim($r->text); + + + if (!$data['event_type']) { + $data['event_type']=NULL; + } + if (!$data['name']) { + $data['name']=NULL; + } + if (!$data['is_reminder']) { + $data['is_reminder']=0; + } + if (!$data['text']) { + $data['text']=NULL; + } + + +// var_dump($_FILES); +// var_dump($upload); +// exit; + + + if ($mode == "edit") { + $calendartemplates->update($data); + + } else { + $calendartemplates = CalendarTemplateModel::create($data); + } +// var_dump($filestore); +// exit; + $id = $calendartemplates->save(); + + if (!$id) { + $this->layout()->setFlash("Vorlage konnte nicht angelegt werden", "error"); + $this->redirect("CalendarTemplate"); + } + + if ($mode == "edit") { + $this->layout()->setFlash("Vorlage erfolgreich geändert", "success"); + } else if ($mode = "add") { + $this->layout()->setFlash("Vorlage erfolgreich angelegt", "success"); + } + $this->redirect("Calendar"); + } + + + protected function deleteAction() + { + $id = $this->request->id; + $calendartemplates = new CalendarTemplate($id); + if (!$calendartemplates->id || $calendartemplates->id != $id) { + $this->layout()->setFlash("Vorlage nicht gefunden.", "error"); + $this->redirect("CalendarTemplate"); + } + + $calendartemplates->delete(); + $this->redirect("Calendar"); + } + +} diff --git a/application/CalendarTemplate/CalendarTemplateModel.php b/application/CalendarTemplate/CalendarTemplateModel.php new file mode 100644 index 000000000..6f65f34e0 --- /dev/null +++ b/application/CalendarTemplate/CalendarTemplateModel.php @@ -0,0 +1,134 @@ +"Termin", + "2"=>"IBN", + "3"=>"IBN E-Stmk", + "4"=>"IBN Snopp", + "5"=>"Störungen" + ); + public static function find($data) + { + + } + + public static function create(array $data) + { + $model = new CalendarTemplate(); + + foreach ($data as $field => $value) { + if (property_exists(get_called_class(), $field)) { + if (substr($field, 0, 5) == "vlan_" && !$value) { + $model->$field = null; + continue; + } + $model->$field = $value; + } + } + + $me = mfValuecache::singleton()->get("me"); + if (!$me) { + $me = new User(); + $me->loadMe(); + mfValuecache::singleton()->set("me", $me); + } + + if ($model->create_by === null) { + $model->create_by = $me->id; + } + if ($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getOne($id) + { + if (!is_numeric($id) || !$id) { + throw new Exception("Invalid number", 400); + } + $item = []; + $db = FronkDB::singleton(); + + $res = $db->select("CalendarTemplate", "*", "id=$id LIMIT 1"); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new CalendarTemplate($data); + } + return $item; + } + + public static function getAll() + { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("CalendarTemplate", "*", "1=1"); + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new CalendarTemplate($data); + } + } + return $items; + + } + + public static function getFirst() + { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("CalendarTemplate", "*", "$where "); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new CalendarTemplate($data); + if ($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) + { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("CalendarTemplate", "*", "$where"); + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new CalendarTemplate($data); + } + } + return $items; + } + + private static function getSqlFilter($filter) + { + $where = "1=1 "; + + //var_dump($filter);exit; + if (array_key_exists("event_type", $filter)) { + $event_type = $filter['event_type']; + if (is_numeric($event_type)) { + $where .= " AND event_type=$event_type"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} diff --git a/db/migrations/20250114175252_calendar_template.php b/db/migrations/20250114175252_calendar_template.php new file mode 100644 index 000000000..f2ef82b33 --- /dev/null +++ b/db/migrations/20250114175252_calendar_template.php @@ -0,0 +1,37 @@ +getEnvironment() == "thetool") { + $table = $this->table("CalendarTemplate", ["signed" => true]); + + $table->addColumn("event_type", "integer", ["null" => false, "default" => "0"]); + $table->addColumn("name", "text", ["null" => false]); + $table->addColumn("is_reminder", "integer", ["null" => false, "default" => "0"]); + $table->addColumn("text", "text", ["null" => true]); + $table->addColumn("create_by", "integer", ["null" => false]); + $table->addColumn("edit_by", "integer", ["null" => false]); + $table->addColumn("create", "integer", ["null" => false]); + $table->addColumn("edit", "integer", ["null" => false]); + $table->save(); + } + + if ($this->getEnvironment() == "addressdb") { + + } + } + + public function down(): void + { + if ($this->getEnvironment() == "thetool") { + $this->table("CalendarTemplate")->drop()->save(); + } + if ($this->getEnvironment() == "addressdb") { + } + } +} +?> \ No newline at end of file diff --git a/public/js/pages/Calendar/View.js b/public/js/pages/Calendar/View.js index d9ccafb29..8f9464f57 100644 --- a/public/js/pages/Calendar/View.js +++ b/public/js/pages/Calendar/View.js @@ -2,6 +2,7 @@ var hidesearch = [2, 3, 4, 8]; var columnfilter = [7]; var columnoptions = ''; + const fileTypeClasses = { 'image/png': 'fa-file-png', 'image/jpeg': 'fa-file-jpg', @@ -28,8 +29,8 @@ const fileTypeClasses = { // Weitere Typen und Klassen hinzufügen... }; -var calendar; -var calendarEl = document.getElementById('calendar'); +let calendar; +let calendarEl = document.getElementById('calendar'); calendarRights = JSON.parse(calendarRights); function formatFileSize(bytes) { @@ -76,16 +77,16 @@ document.addEventListener('DOMContentLoaded', function () { }, 'json').done(function (json) { if (json.success == true) { - var userevents = []; - var otherevents = []; - var resources = []; - var category = ""; - var rights = false; - var movable = false; - var resourceCounter = 0; - var rrule = null; - var duration = null; - var rruleflag = false; + let userevents = []; + let otherevents = []; + let resources = []; + let category = ""; + let rights = false; + let movable = false; + let resourceCounter = 0; + let rrule = null; + let duration = null; + let rruleflag = false; let allDAy; let cursorclass = ""; $.each($('.calendar-check'), function (index, value) { @@ -445,21 +446,20 @@ document.addEventListener('DOMContentLoaded', function () { minute: '2-digit', second: '2-digit', }); - var typeText; + let typeText; if (obj.customer_info_type == 1) { typeText = 'E-Mail'; } else if (obj.customer_info_type == 2) { typeText = 'SMS'; } - var title = `
Letzte gesendete Info (` + typeText + `):
+ let title = `
Letzte gesendete Info (` + typeText + `):
` + obj.customer_info_text.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1
$2') + `
gesendet an: ` + obj.customer_info_type_text + `
gesendet von: ` + obj.sendby + `
gesendet am: ` + germanDateTime + `
`; - console.log(title); - var tooltip = new Tooltip($('.customer-info-point'), { + let tooltip = new Tooltip($('.customer-info-point'), { title: title, placement: 'right', trigger: 'hover', @@ -505,7 +505,7 @@ document.addEventListener('DOMContentLoaded', function () { let attendees = JSON.parse(data.data.attendees.attendees); $.each(attendees, function (index, value) { if (!Number.isInteger(value)) { - var valueExists = $("#calendar-attendees option").filter(function () { + let valueExists = $("#calendar-attendees option").filter(function () { return $(this).val() === value; }).length > 0; if (!valueExists) { @@ -599,10 +599,10 @@ document.addEventListener('DOMContentLoaded', function () { } }, eventDidMount: function (info) { - var eventstart = new Date(info.event.startStr); - var eventend = new Date(info.event.endStr); + let eventstart = new Date(info.event.startStr); + let eventend = new Date(info.event.endStr); - var title; + let title; if (!info.event.allDay) { eventstart = String(eventstart.getUTCHours()).padStart(2, '0') + ':' + String(eventstart.getUTCMinutes()).padStart(2, '0'); eventend = String(eventend.getUTCHours()).padStart(2, '0') + ':' + String(eventend.getUTCMinutes()).padStart(2, '0'); @@ -628,7 +628,7 @@ document.addEventListener('DOMContentLoaded', function () { const obj = JSON.parse(info.event.extendedProps['attachments']); let docs = ""; $.each(obj, function (index, value) { - var filename; + let filename; if (fileTypeClasses[value.contentType]) { filename = fileTypeClasses[value.contentType]; } else { @@ -666,7 +666,7 @@ document.addEventListener('DOMContentLoaded', function () { } - var tooltip = new Tooltip(info.el, { + let tooltip = new Tooltip(info.el, { title: title, placement: 'right', delay: {hide: 50}, @@ -675,25 +675,25 @@ document.addEventListener('DOMContentLoaded', function () { html: true, }); - var tooltips = info.event.extendedProps['tooltips'] || []; + let tooltips = info.event.extendedProps['tooltips'] || []; tooltips.push(tooltip); info.event.setExtendedProp('tooltips', tooltips); }, eventWillUnmount: function (info) { - for (var tooltip of info.event.extendedProps['tooltips']) { + for (let tooltip of info.event.extendedProps['tooltips']) { tooltip.dispose(); } }, eventResize: function (info) { - var start = info.event.start.getTime(); + let start = info.event.start.getTime(); const offsetstart = getOffset(start); start = (start / 1000 + offsetstart) * 1000; - var end = info.event.end.getTime(); + let end = info.event.end.getTime(); const offsetend = getOffset(end); end = (end / 1000 + offsetend) * 1000; - var id = info.event.id; + let id = info.event.id; $.post(requestUpdateUrl, { start: start, end: end, @@ -701,14 +701,14 @@ document.addEventListener('DOMContentLoaded', function () { }, function (data) { }).done(function (data) { - var tooltip = new Tooltip(info.el, { + let tooltip = new Tooltip(info.el, { title: info.event.extendedProps.description, placement: 'right', trigger: 'hover', container: 'body' }); - var tooltips = info.event.extendedProps['tooltips'] || []; + let tooltips = info.event.extendedProps['tooltips'] || []; tooltips.push(tooltip); info.event.setExtendedProp('tooltips', tooltips); }); @@ -716,13 +716,13 @@ document.addEventListener('DOMContentLoaded', function () { }, eventDrop: function (info) { // sleep(2000).then(() => { - var start = info.event.start.getTime(); + let start = info.event.start.getTime(); const offsetstart = getOffset(start); start = (start / 1000 + offsetstart) * 1000; - var end = info.event.end.getTime(); + let end = info.event.end.getTime(); const offsetend = getOffset(end); end = (end / 1000 + offsetend) * 1000; - var id = info.event.id; + let id = info.event.id; $.post(requestUpdateUrl, { start: start, end: end, @@ -797,7 +797,7 @@ document.addEventListener('DOMContentLoaded', function () { if (typeof (EventSource) !== 'undefined') { console.info('Starting connection...'); - var source = new EventSourcePolyfill(requestUpdateEventsUrl, { + let source = new EventSourcePolyfill(requestUpdateEventsUrl, { // Specifying custom request headers headers: { 'X-API-KEY': 'wcdqEHXcXl5f1sZTEHKPTutqpFBbRf55' @@ -809,7 +809,7 @@ if (typeof (EventSource) !== 'undefined') { }, false); let jsondata; source.addEventListener('error', function (e) { - var txt; + let txt; switch (Event.target.readyState) { // if reconnecting case EventSource.CONNECTING: @@ -839,12 +839,12 @@ if (typeof (EventSource) !== 'undefined') { if (!visibleCalendars.includes(event.calendar_id)) { return; } - var cevent = calendar.getEventById(event.cal_events_id); - var rights = false; - var movable = false; - var rrule = null; - var duration = null; - var rruleflag = false; + let cevent = calendar.getEventById(event.cal_events_id); + let rights = false; + let movable = false; + let rrule = null; + let duration = null; + let rruleflag = false; let cursorclass = ''; if (event.rrule) { rrule = event.rrule; @@ -937,7 +937,7 @@ if (typeof (EventSource) !== 'undefined') { } else if (event.change_type == '1' || !cevent) { if (event.calendar_id == event.calendar_id) { - var info = calendar.addEvent({ + let info = calendar.addEvent({ id: event.cal_events_id, title: event.name, start: event.start_time, @@ -964,7 +964,7 @@ if (typeof (EventSource) !== 'undefined') { }); } else { - var info = calendar.addEvent({ + let info = calendar.addEvent({ id: event.cal_events_id, title: event.name, start: event.start_time, @@ -992,7 +992,7 @@ if (typeof (EventSource) !== 'undefined') { } calendar.render(); } else if (event.change_type == '3') { - var cevent = calendar.getEventById(event.cal_events_id); + let cevent = calendar.getEventById(event.cal_events_id); cevent.remove(); } @@ -1010,6 +1010,24 @@ $(document).ready(function () { calendar.render(); }); + $(document).on('show.bs.dropdown', '.dropdown', function () { + let previewMenue=''; + $.getJSON(requestgetpreviewtUrl, { + event_type: $('#type').val() + }, function (data) { + + }).done(function (data) { + ; + + let counter =1; + $.each(data.data, function(index, item) { + previewMenue += '
  • ' + item.data.name + '
  • '; + counter++; + }); + $('.dropdown-menu').html(previewMenue); + }); + }); + $('body').on('click', '.fa-window-restore', function () { $('.card').removeClass('card-fullscreen'); $('#card-size').removeClass('fa-window-restore').addClass('fa-window-maximize'); @@ -1084,7 +1102,7 @@ $(document).ready(function () { }); $('body').on('click', '#add-event', function () { - var valid = true; + let valid = true; $('#EventModal .is-require').each(function (index, value) { if ($(this).val() == "") { @@ -1098,35 +1116,35 @@ $(document).ready(function () { if (!valid) { return; } - var attachments = []; + let attachments = []; $('.doc-main-div').each(function (index, value) { if ($(this).data('docid')) { attachments.push($(this).data('docid')); } }); - var start = $('#start-date').val() + ' ' + $('#start-time').val(); - var end = $('#end-date').val() + ' ' + $('#end-time').val(); - var title = $('#name').val(); - var location = $('#location').val(); - var description = $('#description').val(); - var newkey = $('#attachments').data('newkey'); - var allday = 0; - var reminder = $('#reminder').val(); - var type = $('#type').val(); - var busy = $('#busy').val(); - var customer; - var customer_info_check = 0; - var customer_info_text; - var customer_info_type; - var customer_info_type_text; - var customer_info_reminder_check = 0; - var private = $('.privacy-click'); - var privateflag = 0; + let start = $('#start-date').val() + ' ' + $('#start-time').val(); + let end = $('#end-date').val() + ' ' + $('#end-time').val(); + let title = $('#name').val(); + let location = $('#location').val(); + let description = $('#description').val(); + let newkey = $('#attachments').data('newkey'); + let allday = 0; + let reminder = $('#reminder').val(); + let type = $('#type').val(); + let busy = $('#busy').val(); + let customer; + let customer_info_check = 0; + let customer_info_text; + let customer_info_type; + let customer_info_type_text; + let customer_info_reminder_check = 0; + let private = $('.privacy-click'); + let privateflag = 0; if (private.hasClass('fa-lock')) { privateflag = 1; } - var users = []; + let users = []; if ($('#allday').is(':checked')) { allday = 1; @@ -1178,7 +1196,7 @@ $(document).ready(function () { $('body').on('click', '#update-event', function () { - var valid = true; + let valid = true; $('#EventModal .is-require').each(function (index, value) { if ($(this).val() == "") { @@ -1192,35 +1210,35 @@ $(document).ready(function () { if (!valid) { return; } - var attachments = []; + let attachments = []; $('.doc-main-div').each(function (index, value) { if ($(this).data('docid')) { attachments.push($(this).data('docid')); } }); - var start = $('#start-date').val() + ' ' + $('#start-time').val(); - var end = $('#end-date').val() + ' ' + $('#end-time').val(); - var title = $('#name').val(); - var location = $('#location').val(); - var description = $('#description').val(); - var newkey = $('#attachments').data('newkey'); - var allday = 0; - var reminder = $('#reminder').val(); - var type = $('#type').val(); - var busy = $('#busy').val(); - var customer; - var customer_info_check = 0; - var customer_info_text; - var customer_info_type; - var customer_info_type_text; - var customer_info_reminder_check = 0; - var private = $('.privacy-click'); - var privateflag = 0; + let start = $('#start-date').val() + ' ' + $('#start-time').val(); + let end = $('#end-date').val() + ' ' + $('#end-time').val(); + let title = $('#name').val(); + let location = $('#location').val(); + let description = $('#description').val(); + let newkey = $('#attachments').data('newkey'); + let allday = 0; + let reminder = $('#reminder').val(); + let type = $('#type').val(); + let busy = $('#busy').val(); + let customer; + let customer_info_check = 0; + let customer_info_text; + let customer_info_type; + let customer_info_type_text; + let customer_info_reminder_check = 0; + let private = $('.privacy-click'); + let privateflag = 0; if (private.hasClass('fa-lock')) { privateflag = 1; } - var users = []; + let users = []; if ($('#allday').is(':checked')) { allday = 1; @@ -1240,7 +1258,7 @@ $(document).ready(function () { } - var id = $(this).data('id'); + let id = $(this).data('id'); $('#calendar-users > option:selected').each(function () { users.push($(this).val()); @@ -1305,8 +1323,8 @@ $(document).ready(function () { $('body').on('click', '#delete-event', function () { - var id = $(this).data('id'); - var users = []; + let id = $(this).data('id'); + let users = []; $('#calendar-users > option:selected').each(function () { users.push($(this).val()); }); @@ -1343,10 +1361,10 @@ $(document).ready(function () { }); $('body').on('change', '.color-input,.color-text-input', function (event, init = 0) { - var bgcolors = []; - var txtcolors = []; - var calendar_id = []; - var thisis = $(this); + let bgcolors = []; + let txtcolors = []; + let calendar_id = []; + let thisis = $(this); $.each($('.color-input'), function (index, value) { if ($(this).data('calendar_id')) { bgcolors.push($(this).closest('div').find('.color-input').val()); @@ -1358,7 +1376,7 @@ $(document).ready(function () { }); - var id = $('#calendar-id').data('id'); + let id = $('#calendar-id').data('id'); let groups = getGroups(); $.post(requestUpdateColorUrl, { id: id, @@ -1381,11 +1399,11 @@ $(document).ready(function () { } else { refreshCalendarEvents() } - var resources = calendar.getResources(); + let resources = calendar.getResources(); $.each(resources, function (index, value) { value.remove(); }); - var resourceCounter = 0; + let resourceCounter = 0; $.each($('.calendar-check'), function (index, value) { if ($(this).prop('checked')) { rights = true; @@ -1405,8 +1423,8 @@ $(document).ready(function () { ; function uploadajax(ttl, cl) { - var fileList = $('#files-input').prop("files"); - var form_data = ""; + let fileList = $('#files-input').prop("files"); + let form_data = ""; form_data = new FormData(); form_data.append("upload_file", fileList[cl]); @@ -1414,7 +1432,7 @@ $(document).ready(function () { form_data.append("newkey", $('#attachments').data('newkey')); - var request = $.ajax({ + let request = $.ajax({ url: requestEventAttachmentUploadUrl, cache: false, contentType: false, @@ -1423,10 +1441,10 @@ $(document).ready(function () { data: form_data, type: 'POST', xhr: function () { - var xhr = $.ajaxSettings.xhr(); + let xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function (event) { - var percent = 0; + let percent = 0; if (event.lengthComputable) { percent = Math.ceil(event.loaded / event.total * 100); } @@ -1453,10 +1471,10 @@ $(document).ready(function () { $('body').on('change', '#files-input', function () { - var fileList = $('#files-input').prop("files"); + let fileList = $('#files-input').prop("files"); $('#uploadsts').html(''); - var i; + let i; for (i = 0; i < fileList.length; i++) { let newkey = $('#attachments').data('newkey'); const filetype = fileList[i].type; @@ -1521,6 +1539,7 @@ $(document).ready(function () { } }); + $('body').on('change', '#jumpevent', function () { $('.event-search-result').removeClass('event-search-result'); if ($(this).val() == "" || $(this).val() == null) { @@ -1552,7 +1571,7 @@ $(document).ready(function () { return { q: params.term, // Der Suchbegriff term: params.term, // Der Suchbegriff - calendars: visibleCalendars, // Die dynamische Variable, die du hinzufügen möchtest + calendars: visibleCalendars, // Die dynamische letiable, die du hinzufügen möchtest cal_id: $('#calendar-id').data('calendarid') }; }, @@ -1582,22 +1601,15 @@ $(document).ready(function () { } else { daytimetext = "nachmittags"; } - let textTemplate; - if ($(this).data('id') == 1) { - textTemplate = `Sehr geehrter Kunde, -Ihr Technikertermin findet am ` + formattedDate + ` ` + daytimetext + ` statt. -Mit Freundlichen Grüßen -Xinon GMbH`; - } else if ($(this).data('id') == 2) { - textTemplate = `Sehr geehrter Kunde, -wir möchten Sie daran erinnern, dass Ihr Technikertermin am ` + formattedDate + ` ` + daytimetext + ` stattfindet. -Mit Freundlichen Grüßen -Xinon GMbH`; - } else if ($(this).data('id') == 3) { - textTemplate = formattedDate + ` zwischen ` + starttime + ` und ` + endtime; - } + let text = $(this).data('text'); + text = text.replace(/\[&&vmnm&&\]/g, daytimetext); + text = text.replace(/\[&&date&&\]/g, formattedDate); + text = text.replace(/\[&&start&&\]/g, starttime); + text = text.replace(/\[&&end&&\]/g, endtime); - $('#customer-info-text').val(textTemplate); + + + $('#customer-info-text').val(text); }); @@ -1657,7 +1669,7 @@ Xinon GMbH`; let groupname = $.trim($(this).text()); $(this).html(''); - var strLength = $(this).find('.cal-group-name-input').val().length * 2; + let strLength = $(this).find('.cal-group-name-input').val().length * 2; $(this).find('.cal-group-name-input')[0].setSelectionRange(strLength, strLength); @@ -1676,11 +1688,11 @@ Xinon GMbH`; $(this).closest('.calendar-side-borders-sub').find('.form-check-input').prop('checked', false); refreshCalendarEvents() } - var resources = calendar.getResources(); + let resources = calendar.getResources(); $.each(resources, function (index, value) { value.remove(); }); - var resourceCounter = 0; + let resourceCounter = 0; $.each($('.calendar-check'), function (index, value) { if ($(this).prop('checked')) { rights = true; @@ -1814,6 +1826,7 @@ Xinon GMbH`; return groupsJson; } + function checkGroupCheckboxes() { $('.group-checkbox').each(function (index, value) { let checked = 0; @@ -1907,16 +1920,16 @@ Xinon GMbH`; }, 'json').done(function (json) { if (json.success == true) { - var userevents = []; - var otherevents = []; - var resources = []; - var category = ""; - var rights = false; - var movable = false; - var resourceCounter = 0; - var rrule = null; - var duration = null; - var rruleflag = false; + let userevents = []; + let otherevents = []; + let resources = []; + let category = ""; + let rights = false; + let movable = false; + let resourceCounter = 0; + let rrule = null; + let duration = null; + let rruleflag = false; let allDAy = false; let cursorclass = ""; $.each($('.calendar-check'), function (index, value) {