From 3151ece7dfac0f4dd6193bb83f3a8fee6a634579 Mon Sep 17 00:00:00 2001
From: Mike Koch
Date: Sat, 27 Sep 2014 22:14:49 -0400
Subject: [PATCH] #39 making more progress on parent/child relationships
Still need to update childs when merging/deleting tickets, and need to add the ability to assign its parent, and to delete a parent/child relationship
---
admin/admin_ticket.php | 53 +++++++++++++++++++++++++++++++++++++++++
js/nuMods-javascript.js | 10 ++++++++
language/en/text.php | 5 ++++
3 files changed, 68 insertions(+)
diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php
index c84443f4..5a4eee24 100644
--- a/admin/admin_ticket.php
+++ b/admin/admin_ticket.php
@@ -309,6 +309,42 @@ if ( ($can_reply || $can_edit) && isset($_POST['h']) && isset($_POST['m']) && is
hesk_process_messages($hesklang['twu'],'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999),'SUCCESS');
}
+/* Add child action */
+if (($can_reply || $can_edit) && isset($_POST['childTrackingId'])) {
+ //-- Make sure this isn't the same ticket or one of its merged tickets.
+ $mergedTickets = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `trackid` =
+ \''.hesk_dbEscape($trackingID).'\' AND `merged` LIKE \'#'.hesk_dbEscape($_POST['childTrackingId']).'\'');
+ if ($_POST['childTrackingId'] == $trackingID || $mergedTickets->num_rows > 0) {
+ hesk_process_messages($hesklang['child_is_itself'], 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999));
+ }
+
+ //-- Does the child exist?
+ $existRs = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `trackid` = \''.hesk_dbEscape($_POST['childTrackingId']).'\'');
+ if ($existRs->num_rows == 0) {
+ //-- Maybe it was merged?
+ $existRs = hesk_dbQuery('SELECT `trackid` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `merged` LIKE \'#'.hesk_dbEscape($_POST['childTrackingId']).'#\'');
+ if ($existRs->num_rows > 0) {
+ //-- Yes, it was merged. Set the child to the "new" ticket; not the merged one.
+ $exist = $existRs->fetch_assoc();
+ $_POST['childTrackingId'] = $exist['trackid'];
+ } else {
+ hesk_process_messages(sprintf($hesklang['child_does_not_exist'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999));
+ }
+ }
+
+ //-- Check if the ticket is already a child.
+ $childRs = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `parent` = '.$ticket['id'].' AND `trackid` = \''.$_POST['childTrackingId'].'\'');
+ if ($childRs->num_rows > 0) {
+ hesk_process_messages(sprintf($hesklang['is_child_already'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999), 'NOTICE');
+ }
+
+ hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` SET `parent` = '.$ticket['id'].' WHERE `trackid` = \''.$_POST['childTrackingId'].'\'');
+ hesk_process_messages(sprintf($hesklang['child_added'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999), 'SUCCESS');
+}
+
+/* Delete child action */
+//TODO Populate this
+
/* Delete attachment action */
if (isset($_GET['delatt']) && hesk_token_check())
{
@@ -528,6 +564,23 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
echo $hesklang['none'];
}
?>
+
+ '.$hesklang['add_child'].''; ?>
+
+
diff --git a/js/nuMods-javascript.js b/js/nuMods-javascript.js
index 71d1bb31..2ac14462 100644
--- a/js/nuMods-javascript.js
+++ b/js/nuMods-javascript.js
@@ -40,4 +40,14 @@ function toggleFilterCheckboxes(show) {
}
}
+function toggleChildrenForm(show) {
+ if (show) {
+ $('#childrenForm').show();
+ $('#addChildText').hide();
+ } else {
+ $('#childrenForm').hide();
+ $('#addChildText').show();
+ }
+}
+
jQuery(document).ready(loadJquery);
diff --git a/language/en/text.php b/language/en/text.php
index e659d01b..ff2bd438 100644
--- a/language/en/text.php
+++ b/language/en/text.php
@@ -62,6 +62,11 @@ $hesklang['email_banned'] = 'The email address you have entered has been banned
$hesklang['none'] = 'None';
$hesklang['parent'] = 'Parent';
$hesklang['children'] = 'Children';
+$hesklang['add_child'] = 'Add Child';
+$hesklang['child_added'] = 'Successfully added %s as a child to this ticket.'; //%s: the child tracking ID
+$hesklang['is_child_already'] = '%s is already a child of this ticket.'; //%s: the child tracking ID
+$hesklang['child_does_not_exist'] = '%s is not a valid Tracking ID!'; //%s: the child tracking ID
+$hesklang['child_is_itself'] = 'You cannot set a ticket as a child of itself.';
// ADDED OR MODIFIED IN NuMods 1.3.1
$hesklang['autorefresh'] = 'Autorefresh:';