From 03c47c1ab7e8ab92dfd9d36a744948e7c9e15747 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Tue, 26 Jan 2016 21:55:59 -0500 Subject: [PATCH] Show tickets with their due dates --- internal-api/dao/calendar_dao.php | 16 ++++++++++++++++ js/calendar/mods-for-hesk-calendar.js | 26 +++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/internal-api/dao/calendar_dao.php b/internal-api/dao/calendar_dao.php index 6cc25030..12f063a3 100644 --- a/internal-api/dao/calendar_dao.php +++ b/internal-api/dao/calendar_dao.php @@ -9,6 +9,7 @@ function get_events($start, $end, $hesk_settings) { $events = []; while ($row = hesk_dbFetchAssoc($rs)) { + $event['type'] = 'CALENDAR'; $event['id'] = intval($row['id']); $event['startTime'] = $row['start']; $event['endTime'] = $row['end']; @@ -21,6 +22,21 @@ function get_events($start, $end, $hesk_settings) { $events[] = $event; } + $sql = "SELECT `trackid`, `subject`, `due_date` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` + WHERE `due_date` >= FROM_UNIXTIME(" . intval($start) . " / 1000) + AND `due_date` <= FROM_UNIXTIME(" . intval($end) . " / 1000) + AND `status` IN (SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsClosed` = 0) "; + + $rs = hesk_dbQuery($sql); + while ($row = hesk_dbFetchAssoc($rs)) { + $event['type'] = 'TICKET'; + $event['trackingId'] = $row['trackid']; + $event['title'] = '[' . $row['trackid'] . '] ' . $row['subject']; + $event['startTime'] = $row['due_date']; + $event['url'] = $hesk_settings['hesk_url'] . '/' . $hesk_settings['admin_dir'] . '/admin_ticket.php?track=' . $event['trackingId']; + $events[] = $event; + } + return $events; } diff --git a/js/calendar/mods-for-hesk-calendar.js b/js/calendar/mods-for-hesk-calendar.js index 93835187..cf4b6012 100644 --- a/js/calendar/mods-for-hesk-calendar.js +++ b/js/calendar/mods-for-hesk-calendar.js @@ -21,7 +21,8 @@ $(document).ready(function() { }); callback(events); }, - error: function() { + error: function(data) { + console.error(data); $.jGrowl('An error occurred when trying to load events', { theme: 'alert-danger', closeTemplate: '' }); } }); @@ -30,7 +31,13 @@ $(document).ready(function() { displayCreateModal(date, view.name); }, eventClick: function(event) { - displayEditModal(event); + if (event.url) { + window.open(event.url, "_blank"); + return false; + } + if (event.type !== 'TICKET') { + displayEditModal(event); + } }, eventDrop: function(event, delta, revertFunc) { var start = event.start.format('YYYY-MM-DD'); @@ -224,6 +231,18 @@ function removeFromCalendar(id) { } function buildEvent(id, dbObject) { + if (dbObject.type == 'TICKET') { + return { + title: dbObject.title, + trackingId: dbObject.trackingId, + start: moment(dbObject.startTime), + url: dbObject.url, + color: 'green', + allDay: true, + type: dbObject.type + }; + } + var createTicketDate = null; if (dbObject.createTicketDate != null) { createTicketDate = moment(dbObject.createTicketDate); @@ -237,7 +256,8 @@ function buildEvent(id, dbObject) { comments: dbObject.comments, createTicketDate: createTicketDate, assignTo: dbObject.assignTo, - location: dbObject.location + location: dbObject.location, + type: dbObject.type }; }