diff --git a/Layout/default/Calendar/View.php b/Layout/default/Calendar/View.php index 01c93e03c..a52f39e77 100644 --- a/Layout/default/Calendar/View.php +++ b/Layout/default/Calendar/View.php @@ -248,22 +248,24 @@ endforeach;
-
- - - - -
+ + + + + + + + + + + + + + + + + +
layout()->set("timerecordingemployees", $timerecordingemployees); $this->layout()->set("standardCalendarColors", $standardCalendarColors); $this->layout()->set("specialCalendarColors", $specialCalendarColors); diff --git a/application/Calendar/CalendarModel.php b/application/Calendar/CalendarModel.php index e6f3bd644..48b91790c 100644 --- a/application/Calendar/CalendarModel.php +++ b/application/Calendar/CalendarModel.php @@ -155,6 +155,7 @@ class CalendarModel $visibleCalendars = $r->visibleCalendars; if ($visibleCalendars) { $where .= " AND calendar_id IN (" . implode(",", $visibleCalendars) . ")"; + $whereTimeRecording = " AND `Calendar`.`go_calendar_id` IN (" . implode(",", $visibleCalendars) . ")"; } $sql = "SELECT `cal_events`.id, uuid, calendar_id, `cal_events`.user_id, start_time, end_time, timezone, all_day_event, `cal_events`.name,`cal_calendars`.name calendar_name, description, location, repeat_end_time, reminder, ctime,cname, mtime,mname, muser_id, busy, status, resource_event_id, private, rrule, `cal_events`.background, `cal_events`.files_folder_id, read_only, category_id, exception_for_event_id, recurrence_id, is_organizer,event_type,busy,recurrence FROM cal_events INNER JOIN `cal_calendars` ON (`cal_calendars`.`id`=`cal_events`.`calendar_id`) WHERE 1=1 $where "; @@ -231,7 +232,7 @@ class CalendarModel } if ($calenderRights[$data['calendar_id']]) { $rights = $calenderRights[$data['calendar_id']]; - + $CalendarUsers[$data['calendar_id']] = $data['calendar_name']; $rows[] = array( 'id' => array('id' => $data['id']), 'cstart' => array('cstart' => $starttime), @@ -257,9 +258,59 @@ class CalendarModel 'mname' => array('mname' => $data['mname']), 'isorganizer' => array('isorganizer' => $data['is_organizer']), 'busy' => array('busy' => $data['busy']), + 'timerecording' => array('timerecording' => 0), ); } } + $db = FronkDB::singleton(); + $sql = "SELECT `Timerecording`.`id`, `Timerecording`.`start` start_time, `Timerecording`.`end` end_time,`Calendar`.`go_calendar_id` calendar_id,`TimerecordingCategory`.`name`,`TimerecordingCategory`.`id` CategoryId,`Timerecording`.`create` ctime,`Timerecording`.`edit` mtime FROM `Timerecording` +INNER JOIN `TimerecordingCategory` ON `TimerecordingCategory`.`id`=`Timerecording`.`timerecordingCategory_id` +INNER JOIN `Calendar` ON `Calendar`.`user_id`=`Timerecording`.`user_id` +WHERE `TimerecordingCategory`.`hourday`!='1' AND `TimerecordingCategory`.`hourday`!='7' AND `TimerecordingCategory`.`hourday`!='5' $whereTimeRecording"; + $res = $db->query($sql); + if ($db->num_rows($res)) { + while ($data = $db->fetch_array($res)) { + + if ($calendarColors[$data['calendar_id']]['bgcolor']) { + $bgcolor = $calendarColors[$data['calendar_id']]['bgcolor']; + $txtcolor = $calendarColors[$data['calendar_id']]['txtcolor']; + } else { + $bgcolor = $standardCalendarColors[$colorCounter]; + $txtcolor = "#000"; + $colorCounter++; + } + if ($data['CategoryId'] != 11) { + $starttime = date("Y-m-d", $data['start_time']); + $endtime = date("Y-m-d", $data['end_time']); + if ($starttime != $endtime) { + $endtime = $data['end_time'] + 86400; + $endtime = date("Y-m-d", $endtime); + } + + } else { + $starttime = date("Y-m-d H:i", $data['start_time']); + $endtime = date("Y-m-d H:i", $data['end_time']); + } + $rows[] = array( + 'id' => array('id' => "9999" . $data['id']), + 'category' => array('category' => $data['name']), + 'ccategory' => array('ccategory' => $data['name']), + 'cstart' => array('cstart' => $starttime), + 'cend' => array('cend' => $endtime), + 'calendar_id' => array('calendar_id' => $data['calendar_id']), + 'ctime' => array('ctime' => date("d.m.Y H:i", $data['ctime'])), + 'cname' => array('cname' => $CalendarUsers[$data['calendar_id']]), + 'mtime' => array('mtime' => date("d.m.Y H:i", $data['mtime'])), + 'mname' => array('mname' => $CalendarUsers[$data['calendar_id']]), + 'description' => array('description' => ""), + 'bgColor' => array('bgColor' => $bgcolor), + 'txtColor' => array('txtColor' => $txtcolor), + 'timerecording' => array('timerecording' => 1), + 'calendar_name' => array('calendar_name' => $CalendarUsers[$data['calendar_id']]), + ); + } + + } $json['success'] = true; $json['data'] = $rows; } else { diff --git a/public/css/pages/Calendar/View.css b/public/css/pages/Calendar/View.css index 4f715fb16..90c88e704 100644 --- a/public/css/pages/Calendar/View.css +++ b/public/css/pages/Calendar/View.css @@ -462,7 +462,7 @@ thead .fc-day-today .fc-scrollgrid-sync-inner .fc-col-header-cell-cushion { } .event-search-result { - box-shadow: 0px 0px 3px 3px #48ff00 !important; + box-shadow: 0px 0px 3px 3px #f2ff00 !important; } .search-div .select2 { diff --git a/public/js/pages/Calendar/View.js b/public/js/pages/Calendar/View.js index e614f7053..b910bca8e 100644 --- a/public/js/pages/Calendar/View.js +++ b/public/js/pages/Calendar/View.js @@ -101,88 +101,110 @@ document.addEventListener('DOMContentLoaded', function () { $.each(json.data, function (index, value) { - rrule = null; - duration = null; - rruleflag = false; - category = value.ccategory.ccategory; - if (value.rrule.rrule) { - rrule = value.rrule.rrule; - duration = value.duration.duration; - rruleflag = true; + if (!value.timerecording.timerecording) { + rrule = null; + duration = null; + rruleflag = false; + category = value.ccategory.ccategory; + if (value.rrule.rrule) { + rrule = value.rrule.rrule; + duration = value.duration.duration; + rruleflag = true; - } + } - if (value.calendar_id.calendar_id in calendarRights) { - if (calendarRights[value.calendar_id.calendar_id] == 'all') { - rights = true; + if (value.calendar_id.calendar_id in calendarRights) { + if (calendarRights[value.calendar_id.calendar_id] == 'all') { + rights = true; + } else { + rights = false; + } + if (value.isorganizer.isorganizer == '1' && rights) { + movable = true; + } else { + movable = false; + } + let event = { + id: value.id.id, + start: value.cstart.cstart, + end: value.cend.cend, + title: category, + description: value.description.description, + location: value.location.location, + attachment: value.attachment.attachment, + attachments: value.attachments.attachments, + calendar_id: value.calendar_id, + event_type: value.event_type.event_type, + classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], + textColor: value.txtColor.txtColor, + backgroundColor: value.bgColor.bgColor, + editable: rights, + rruleflag: rruleflag, + rrule: rrule, + duration: duration, + droppable: movable, + startEditable: movable, + durationEditable: movable, + resizableFromStart: movable, + resourceId: value.calendar_id.calendar_id, + calendar_name: value.calendar_name.calendar_name, + clickable: rights, + mtime: value.mtime.mtime, + mname: value.mname.mname, + ctime: value.ctime.ctime, + cname: value.cname.cname, + busy: value.busy.busy + }; + userevents.push(event); + if (value.rrule.rrule) { + } } else { - rights = false; - } - if (value.isorganizer.isorganizer == '1' && rights) { - movable = true; - } else { - movable = false; + otherevents.push({ + id: value.id.id, + start: value.cstart.cstart, + end: value.cend.cend, + title: category, + description: category, + color: 'red', + editable: false, + rruleflag: rruleflag, + rrule: rrule, + calendar_id: value.calendar_id, + event_type: value.event_type.event_type, + classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], + attachment: value.attachment.attachment, + attachments: value.attachments.attachments, + resourceId: value.calendar_id.calendar_id, + calendar_name: value.calendar_name.calendar_name, + clickable: rights, + mtime: value.mtime.mtime, + mname: value.mname.mname, + ctime: value.ctime.ctime, + cname: value.cname.cname, + busy: value.busy.busy + }); + } + } else { let event = { id: value.id.id, start: value.cstart.cstart, end: value.cend.cend, - title: category, + title: value.category.category, description: value.description.description, - location: value.location.location, - attachment: value.attachment.attachment, - attachments: value.attachments.attachments, calendar_id: value.calendar_id, - event_type: value.event_type.event_type, - classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], textColor: value.txtColor.txtColor, backgroundColor: value.bgColor.bgColor, - editable: rights, - rruleflag: rruleflag, - rrule: rrule, - duration: duration, - droppable: movable, - startEditable: movable, - durationEditable: movable, - resizableFromStart: movable, resourceId: value.calendar_id.calendar_id, calendar_name: value.calendar_name.calendar_name, - clickable: rights, mtime: value.mtime.mtime, mname: value.mname.mname, ctime: value.ctime.ctime, cname: value.cname.cname, - busy: value.busy.busy + editable: false, + }; userevents.push(event); - if (value.rrule.rrule) { - } - } else { - otherevents.push({ - id: value.id.id, - start: value.cstart.cstart, - end: value.cend.cend, - title: category, - description: category, - color: 'red', - editable: false, - rruleflag: rruleflag, - rrule: rrule, - calendar_id: value.calendar_id, - event_type: value.event_type.event_type, - classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], - attachment: value.attachment.attachment, - attachments: value.attachments.attachments, - resourceId: value.calendar_id.calendar_id, - calendar_name: value.calendar_name.calendar_name, - clickable: rights, - mtime: value.mtime.mtime, - mname: value.mname.mname, - ctime: value.ctime.ctime, - cname: value.cname.cname, - busy: value.busy.busy - }); - } }); @@ -205,8 +227,7 @@ document.addEventListener('DOMContentLoaded', function () { schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives', timeZone: 'UTC', locale: 'de', - - + resourceAreaWidth: '220px', themeSystem: 'bootstrap4', snapDuration: '00:15:00', selectable: true, @@ -1762,82 +1783,105 @@ Xinon GMbH`; $.each(json.data, function (index, value) { - rrule = null; - duration = null; - rruleflag = false; - category = value.ccategory.ccategory; - if (value.rrule.rrule) { - rrule = value.rrule.rrule; - duration = value.duration.duration; - rruleflag = true; + if (!value.timerecording.timerecording) { + rrule = null; + duration = null; + rruleflag = false; + category = value.ccategory.ccategory; + if (value.rrule.rrule) { + rrule = value.rrule.rrule; + duration = value.duration.duration; + rruleflag = true; - } - if (value.calendar_id.calendar_id in calendarRights) { - if (calendarRights[value.calendar_id.calendar_id] == 'all') { - rights = true; - } else { - rights = false; } - if (value.isorganizer.isorganizer == '1' && rights) { - movable = true; + if (value.calendar_id.calendar_id in calendarRights) { + if (calendarRights[value.calendar_id.calendar_id] == 'all') { + rights = true; + } else { + rights = false; + } + if (value.isorganizer.isorganizer == '1' && rights) { + movable = true; + } else { + movable = false; + } + userevents.push({ + id: value.id.id, + start: value.cstart.cstart, + end: value.cend.cend, + title: category, + description: value.description.description, + location: value.location.location, + attachment: value.attachment.attachment, + attachments: value.attachments.attachments, + calendar_id: value.calendar_id, + event_type: value.event_type.event_type, + classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], + textColor: value.txtColor.txtColor, + backgroundColor: value.bgColor.bgColor, + editable: movable, + rruleflag: rruleflag, + rrule: rrule, + duration: duration, + resourceId: value.calendar_id.calendar_id, + calendar_name: value.calendar_name.calendar_name, + clickable: rights, + mtime: value.mtime.mtime, + mname: value.mname.mname, + ctime: value.ctime.ctime, + cname: value.cname.cname, + busy: value.busy.busy + }); } else { - movable = false; + otherevents.push({ + id: value.id.id, + start: value.cstart.cstart, + end: value.cend.cend, + title: category, + description: category, + color: 'red', + editable: false, + rruleflag: rruleflag, + rrule: rrule, + duration: duration, + calendar_id: value.calendar_id, + event_type: value.event_type.event_type, + classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], + attachment: value.attachment.attachment, + attachments: value.attachments.attachments, + resourceId: value.calendar_id.calendar_id, + calendar_name: value.calendar_name.calendar_name, + clickable: false, + mtime: value.mtime.mtime, + mname: value.mname.mname, + ctime: value.ctime.ctime, + cname: value.cname.cname, + busy: value.busy.busy + }); + } - userevents.push({ + } else { + let event = { id: value.id.id, start: value.cstart.cstart, end: value.cend.cend, - title: category, + title: value.category.category, description: value.description.description, - location: value.location.location, - attachment: value.attachment.attachment, - attachments: value.attachments.attachments, calendar_id: value.calendar_id, - event_type: value.event_type.event_type, - classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], textColor: value.txtColor.txtColor, backgroundColor: value.bgColor.bgColor, - editable: movable, - rruleflag: rruleflag, - rrule: rrule, - duration: duration, resourceId: value.calendar_id.calendar_id, calendar_name: value.calendar_name.calendar_name, - clickable: rights, mtime: value.mtime.mtime, mname: value.mname.mname, ctime: value.ctime.ctime, cname: value.cname.cname, - busy: value.busy.busy - }); - } else { - otherevents.push({ - id: value.id.id, - start: value.cstart.cstart, - end: value.cend.cend, - title: category, - description: category, - color: 'red', editable: false, - rruleflag: rruleflag, - rrule: rrule, - duration: duration, - calendar_id: value.calendar_id, - event_type: value.event_type.event_type, - classNames: ['cal-class-group-' + value.calendar_id.calendar_id, 'cal-class-id-' + value.id.id], - attachment: value.attachment.attachment, - attachments: value.attachments.attachments, - resourceId: value.calendar_id.calendar_id, - calendar_name: value.calendar_name.calendar_name, - clickable: false, - mtime: value.mtime.mtime, - mname: value.mname.mname, - ctime: value.ctime.ctime, - cname: value.cname.cname, - busy: value.busy.busy - }); + }; + userevents.push(event); } + }); calendar.addEventSource(userevents); if (visibleCalendars.includes(998)) { @@ -1851,5 +1895,6 @@ Xinon GMbH`; }); } + }) ;