Add category support. Need to honoror 'click to select' though

merge-requests/1/head
Mike Koch 8 years ago
parent 427e98eb94
commit 5708c63b75

@ -49,6 +49,13 @@ hesk_isLoggedIn();
// Define required constants
define('MFH_CALENDAR', 1);
// Get categories for the dropdown
$rs = hesk_dbQuery("SELECT `id`, `name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `cat_order`");
$categories = [];
while ($row = hesk_dbFetchAssoc($rs)) {
$categories[] = $row;
}
/* Print header */
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
@ -104,6 +111,23 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label for="category" class="col-sm-3 control-label">
Category
<i class="fa fa-question-circle settingsquestionmark"
data-toggle="tooltip"
title="Category for the event"></i>
</label>
<div class="col-sm-9">
<select name="category" class="form-control">
<?php foreach ($categories as $category): ?>
<option value="<?php echo $category['id']; ?>">
<?php echo $category['name']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
</div>
<div class="row">
@ -121,7 +145,6 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
required>
<input type="text" name="start-time" class="form-control clockpicker" placeholder="Start Time" data-placement="left" data-align="top" data-autoclose="true">
<div class="help-block with-errors"></div>
<div class="checkbox">
<label>
<input type="checkbox" name="all-day"> All day
@ -218,6 +241,23 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label for="category" class="col-sm-3 control-label">
Category
<i class="fa fa-question-circle settingsquestionmark"
data-toggle="tooltip"
title="Category for the event"></i>
</label>
<div class="col-sm-9">
<select name="category" class="form-control">
<?php foreach ($categories as $category): ?>
<option value="<?php echo $category['id']; ?>">
<?php echo $category['name']; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
</div>
<div class="row">
@ -309,6 +349,10 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<strong>Location</strong>
<span></span>
</div>
<div class="popover-category">
<strong>Category</strong>
<span></span>
</div>
<div class="popover-from">
<strong>From</strong>
<span></span>

@ -727,7 +727,8 @@ function execute260Scripts()
`all_day` ENUM('0','1') NOT NULL,
`name` VARCHAR(255) NOT NULL,
`location` VARCHAR(255),
`comments` MEDIUMTEXT) ENGINE = MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci");
`comments` MEDIUMTEXT,
`category` INT) ENGINE = MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci");
executeQuery("ALTER TABLE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` ADD COLUMN `due_date` DATETIME");
executeQuery("UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "settings` SET `Value` = '2.6.0' WHERE `Key` = 'modsForHeskVersion'");
}

@ -32,6 +32,7 @@ if ($request_method === 'GET') {
$event['end'] = hesk_POST('endTime');
$event['all_day'] = hesk_POST('allDay') === 'true';
$event['comments'] = hesk_POST('comments');
$event['category'] = hesk_POST('categoryId');
$id = create_event($event, $hesk_settings);
@ -47,6 +48,7 @@ if ($request_method === 'GET') {
$event['end'] = hesk_POST('endTime');
$event['all_day'] = hesk_POST('allDay') === 'true';
$event['comments'] = hesk_POST('comments');
$event['category'] = hesk_POST('categoryId');
update_event($event, $hesk_settings);

@ -2,7 +2,10 @@
function get_events($start, $end, $hesk_settings) {
$sql = "SELECT * FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "calendar_event` WHERE `start` >= FROM_UNIXTIME(" . intval($start)
$sql = "SELECT `events`.*, `categories`.`name` AS `category_name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "calendar_event` AS `events`
INNER JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` AS `categories`
ON `events`.`category` = `categories`.`id`
WHERE `start` >= FROM_UNIXTIME(" . intval($start)
. " / 1000) AND `end` <= FROM_UNIXTIME(" . intval($end) . " / 1000)";
$rs = hesk_dbQuery($sql);
@ -17,10 +20,15 @@ function get_events($start, $end, $hesk_settings) {
$event['title'] = $row['name'];
$event['location'] = $row['location'];
$event['comments'] = $row['comments'];
$event['categoryId'] = $row['category'];
$event['categoryName'] = $row['category_name'];
$events[] = $event;
}
$sql = "SELECT `trackid`, `subject`, `due_date` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets`
$sql = "SELECT `trackid`, `subject`, `due_date`, `category`, `categories`.`name` AS `category_name`
FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` AS `tickets`
INNER JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` AS `categories`
ON `categories`.`id` = `tickets`.`category`
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) ";
@ -32,6 +40,8 @@ function get_events($start, $end, $hesk_settings) {
$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'];
$event['categoryId'] = $row['category'];
$event['categoryName'] = $row['category_name'];
$events[] = $event;
}
@ -45,9 +55,10 @@ function create_event($event, $hesk_settings) {
$event['all_day'] = $event['all_day'] ? 1 : 0;
$sql = "INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "calendar_event` (`start`, `end`, `all_day`,
`name`, `location`, `comments`) VALUES (
`name`, `location`, `comments`, `category`) VALUES (
'" . hesk_dbEscape($event['start']) . "', '" . hesk_dbEscape($event['end']) . "', '" . hesk_dbEscape($event['all_day']) . "',
'" . hesk_dbEscape($event['title']) . "', '" . hesk_dbEscape($event['location']) . "', '" . hesk_dbEscape($event['comments']) . "')";
'" . hesk_dbEscape($event['title']) . "', '" . hesk_dbEscape($event['location']) . "', '" . hesk_dbEscape($event['comments']) . "',
" . intval($event['category']) . ")";
hesk_dbQuery($sql);
return hesk_dbInsertID();
@ -65,7 +76,7 @@ function update_event($event, $hesk_settings) {
$sql = "UPDATE `" . hesk_dbEscape($hesk_settings['db_pfix']) . "calendar_event` SET `start` = '" . hesk_dbEscape($event['start'])
. "', `end` = '" . hesk_dbEscape($event['end']) . "', `all_day` = '" . hesk_dbEscape($event['all_day']) . "', `name` = '"
. hesk_dbEscape($event['title']) . "', `location` = '" . hesk_dbEscape($event['location']) . "', `comments` = '"
. hesk_dbEscape($event['comments']) . "' WHERE `id` = " . intval($event['id']);
. hesk_dbEscape($event['comments']) . "', `category` = " . intval($event['category']) . " WHERE `id` = " . intval($event['id']);
hesk_dbQuery($sql);
}

@ -75,6 +75,7 @@ $(document).ready(function() {
endTime: end,
allDay: event.allDay,
comments: event.comments,
categoryId: event.categoryId,
action: 'update'
};
$.ajax({
@ -98,7 +99,7 @@ $(document).ready(function() {
}
var contents = $('.popover-template').html();
$contents = $(contents);
var $contents = $(contents);
var format = 'dddd, MMMM Do YYYY';
var endDate = event.end == null ? event.start : event.end;
@ -111,7 +112,8 @@ $(document).ready(function() {
$contents.find('.popover-location').hide();
}
$contents.find('.popover-location span').text(event.location).end()
$contents.find('.popover-category span').text(event.categoryName).end()
.find('.popover-location span').text(event.location).end()
.find('.popover-from span').text(event.start.format(format)).end()
.find('.popover-to span').text(endDate.format(format));
var $eventMarkup = $(this);
@ -199,6 +201,7 @@ $(document).ready(function() {
endTime: moment(end).format(dateFormat),
allDay: allDay,
comments: $('#create-form textarea[name="comments"]').val(),
categoryId: $('#create-form select[name="category"]').val(),
action: 'create',
type: 'CALENDAR'
};
@ -240,6 +243,7 @@ $(document).ready(function() {
endTime: moment(end).format(dateFormat),
allDay: allDay,
comments: $form.find('textarea[name="comments"]').val(),
categoryId: $form.find('select[name="category"]').val(),
action: 'update'
};
@ -284,7 +288,8 @@ function buildEvent(id, dbObject) {
url: dbObject.url,
color: endOfDay.isBefore() ? '#dd0000' : 'green',
allDay: true,
type: dbObject.type
type: dbObject.type,
categoryId: dbObject.categoryId
};
}
@ -296,7 +301,9 @@ function buildEvent(id, dbObject) {
end: moment(dbObject.endTime),
comments: dbObject.comments,
location: dbObject.location,
type: dbObject.type
type: dbObject.type,
categoryId: dbObject.categoryId,
categoryName: dbObject.categoryName
};
}
@ -361,5 +368,7 @@ function displayEditModal(date) {
$form.find('#create-ticket-button').prop('href', createTicketLink);
$form.find('select[name="category"] option[value="' + date.categoryId + '"]').prop('selected', true);
$('#edit-event-modal').modal('show');
}
Loading…
Cancel
Save