Add category support. Need to honoror 'click to select' though
This commit is contained in:
parent
427e98eb94
commit
5708c63b75
@ -49,6 +49,13 @@ hesk_isLoggedIn();
|
|||||||
// Define required constants
|
// Define required constants
|
||||||
define('MFH_CALENDAR', 1);
|
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 */
|
/* Print header */
|
||||||
require_once(HESK_PATH . 'inc/headerAdmin.inc.php');
|
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 class="help-block with-errors"></div>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -121,7 +145,6 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
|||||||
required>
|
required>
|
||||||
<input type="text" name="start-time" class="form-control clockpicker" placeholder="Start Time" data-placement="left" data-align="top" data-autoclose="true">
|
<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="help-block with-errors"></div>
|
||||||
|
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="all-day"> All day
|
<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 class="help-block with-errors"></div>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -309,6 +349,10 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
|
|||||||
<strong>Location</strong>
|
<strong>Location</strong>
|
||||||
<span></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="popover-category">
|
||||||
|
<strong>Category</strong>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
<div class="popover-from">
|
<div class="popover-from">
|
||||||
<strong>From</strong>
|
<strong>From</strong>
|
||||||
<span></span>
|
<span></span>
|
||||||
|
@ -727,7 +727,8 @@ function execute260Scripts()
|
|||||||
`all_day` ENUM('0','1') NOT NULL,
|
`all_day` ENUM('0','1') NOT NULL,
|
||||||
`name` VARCHAR(255) NOT NULL,
|
`name` VARCHAR(255) NOT NULL,
|
||||||
`location` VARCHAR(255),
|
`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("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'");
|
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['end'] = hesk_POST('endTime');
|
||||||
$event['all_day'] = hesk_POST('allDay') === 'true';
|
$event['all_day'] = hesk_POST('allDay') === 'true';
|
||||||
$event['comments'] = hesk_POST('comments');
|
$event['comments'] = hesk_POST('comments');
|
||||||
|
$event['category'] = hesk_POST('categoryId');
|
||||||
|
|
||||||
$id = create_event($event, $hesk_settings);
|
$id = create_event($event, $hesk_settings);
|
||||||
|
|
||||||
@ -47,6 +48,7 @@ if ($request_method === 'GET') {
|
|||||||
$event['end'] = hesk_POST('endTime');
|
$event['end'] = hesk_POST('endTime');
|
||||||
$event['all_day'] = hesk_POST('allDay') === 'true';
|
$event['all_day'] = hesk_POST('allDay') === 'true';
|
||||||
$event['comments'] = hesk_POST('comments');
|
$event['comments'] = hesk_POST('comments');
|
||||||
|
$event['category'] = hesk_POST('categoryId');
|
||||||
|
|
||||||
update_event($event, $hesk_settings);
|
update_event($event, $hesk_settings);
|
||||||
|
|
||||||
|
@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
function get_events($start, $end, $hesk_settings) {
|
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)";
|
. " / 1000) AND `end` <= FROM_UNIXTIME(" . intval($end) . " / 1000)";
|
||||||
|
|
||||||
$rs = hesk_dbQuery($sql);
|
$rs = hesk_dbQuery($sql);
|
||||||
@ -17,10 +20,15 @@ function get_events($start, $end, $hesk_settings) {
|
|||||||
$event['title'] = $row['name'];
|
$event['title'] = $row['name'];
|
||||||
$event['location'] = $row['location'];
|
$event['location'] = $row['location'];
|
||||||
$event['comments'] = $row['comments'];
|
$event['comments'] = $row['comments'];
|
||||||
|
$event['categoryId'] = $row['category'];
|
||||||
|
$event['categoryName'] = $row['category_name'];
|
||||||
$events[] = $event;
|
$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)
|
WHERE `due_date` >= FROM_UNIXTIME(" . intval($start) . " / 1000)
|
||||||
AND `due_date` <= FROM_UNIXTIME(" . intval($end) . " / 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) ";
|
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['title'] = '[' . $row['trackid'] . '] ' . $row['subject'];
|
||||||
$event['startTime'] = $row['due_date'];
|
$event['startTime'] = $row['due_date'];
|
||||||
$event['url'] = $hesk_settings['hesk_url'] . '/' . $hesk_settings['admin_dir'] . '/admin_ticket.php?track=' . $event['trackingId'];
|
$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;
|
$events[] = $event;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,9 +55,10 @@ function create_event($event, $hesk_settings) {
|
|||||||
$event['all_day'] = $event['all_day'] ? 1 : 0;
|
$event['all_day'] = $event['all_day'] ? 1 : 0;
|
||||||
|
|
||||||
$sql = "INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "calendar_event` (`start`, `end`, `all_day`,
|
$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['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);
|
hesk_dbQuery($sql);
|
||||||
return hesk_dbInsertID();
|
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'])
|
$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` = '"
|
. "', `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['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);
|
hesk_dbQuery($sql);
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ $(document).ready(function() {
|
|||||||
endTime: end,
|
endTime: end,
|
||||||
allDay: event.allDay,
|
allDay: event.allDay,
|
||||||
comments: event.comments,
|
comments: event.comments,
|
||||||
|
categoryId: event.categoryId,
|
||||||
action: 'update'
|
action: 'update'
|
||||||
};
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@ -98,7 +99,7 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var contents = $('.popover-template').html();
|
var contents = $('.popover-template').html();
|
||||||
$contents = $(contents);
|
var $contents = $(contents);
|
||||||
|
|
||||||
var format = 'dddd, MMMM Do YYYY';
|
var format = 'dddd, MMMM Do YYYY';
|
||||||
var endDate = event.end == null ? event.start : event.end;
|
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').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-from span').text(event.start.format(format)).end()
|
||||||
.find('.popover-to span').text(endDate.format(format));
|
.find('.popover-to span').text(endDate.format(format));
|
||||||
var $eventMarkup = $(this);
|
var $eventMarkup = $(this);
|
||||||
@ -199,6 +201,7 @@ $(document).ready(function() {
|
|||||||
endTime: moment(end).format(dateFormat),
|
endTime: moment(end).format(dateFormat),
|
||||||
allDay: allDay,
|
allDay: allDay,
|
||||||
comments: $('#create-form textarea[name="comments"]').val(),
|
comments: $('#create-form textarea[name="comments"]').val(),
|
||||||
|
categoryId: $('#create-form select[name="category"]').val(),
|
||||||
action: 'create',
|
action: 'create',
|
||||||
type: 'CALENDAR'
|
type: 'CALENDAR'
|
||||||
};
|
};
|
||||||
@ -240,6 +243,7 @@ $(document).ready(function() {
|
|||||||
endTime: moment(end).format(dateFormat),
|
endTime: moment(end).format(dateFormat),
|
||||||
allDay: allDay,
|
allDay: allDay,
|
||||||
comments: $form.find('textarea[name="comments"]').val(),
|
comments: $form.find('textarea[name="comments"]').val(),
|
||||||
|
categoryId: $form.find('select[name="category"]').val(),
|
||||||
action: 'update'
|
action: 'update'
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -284,7 +288,8 @@ function buildEvent(id, dbObject) {
|
|||||||
url: dbObject.url,
|
url: dbObject.url,
|
||||||
color: endOfDay.isBefore() ? '#dd0000' : 'green',
|
color: endOfDay.isBefore() ? '#dd0000' : 'green',
|
||||||
allDay: true,
|
allDay: true,
|
||||||
type: dbObject.type
|
type: dbObject.type,
|
||||||
|
categoryId: dbObject.categoryId
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +301,9 @@ function buildEvent(id, dbObject) {
|
|||||||
end: moment(dbObject.endTime),
|
end: moment(dbObject.endTime),
|
||||||
comments: dbObject.comments,
|
comments: dbObject.comments,
|
||||||
location: dbObject.location,
|
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('#create-ticket-button').prop('href', createTicketLink);
|
||||||
|
|
||||||
|
$form.find('select[name="category"] option[value="' + date.categoryId + '"]').prop('selected', true);
|
||||||
|
|
||||||
$('#edit-event-modal').modal('show');
|
$('#edit-event-modal').modal('show');
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user